C语言II博客作业01

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11756
这个作业的目标 回顾上学期所学知识,数据类型和表达式;学习章节文件,学会写测试程序
学号 20209217

一、本周教学内容&目标

第6章 回顾数据类型和表达式,第12章 文件

二、本周作业(总分:50分)

2.1 题目:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。

例如:
N=2,写下1,2。这样只出现了1个”1”。
N=12,我们会写下1,2,3,4,5,6,7,8,9,10,11,12。这样,1的个数是5。

问题是:

1.写出一个函数f(N),返回1到N之间出现的”1“的个数,比如f(12)=5;

①代码图片如下

②解题思路:

输入一个符合题意的正整数N,然后从1到N的所有整数用函数F(N)依次计算出现”1”的个数,其中求每一个整数中出现”1”的个数则通过c=k%10,r=k/10来计算count的值,即”1”出现的个 
数,count的初始值为0,若c=1,则count加1,直到整数N计算完,最终count的值即为从1到N的所有整数出现的所有”1”的个数。

③测试数据

N result(出现“1”的个数) 运行时间
12 5 0.730000s
754 256 0.931000s
4235 2354 1.334000s
898665 549637 1.634000s
56575744 49990755 3.254000s





④改进算法和改进思路:减少循环运算次数,找能直接将1~N所有整数出现“1”的个数算出来的函数。

2.满足条件”f(N)=N“的最大的N是多少?

答:最大的N是1。因为当N=1时,F(1)=1;当N=2时,F(2)=1,此时的N已经大于F(N),所以只有N=1时,F(N)=N,所以满足条件”f(N)=N“的最大的N是1。

 要求:
 1.贴出代码图片,写出解题思路,列出测试数据(5分)
 2.给出不同测试数据的运算时间,如果你的运算时间不变,说明你的测试数据不够大(5分)
 3.思考针对足够大的数据,如何减少运算时间,并给出在原有算法基础上的改进算法和改进思路。(10分)

2.2 将上题中多组测试数据写入文件,并给出测试程序以检测你的代码有没有问题,贴出你的代码、运行结果和文件内容。(5分)

①代码

②运行结果

③文件内容

2.3 用自己的语言回答两个问题,并给出所查阅资料的引用(10分)

1.什么是文件缓冲系统?工作原理如何?

答:①缓冲文件系统,又称为标准文件系统(标准I / O),是高级文件系统,进行文件操作时,系统会自动为正在使用的文件分配一块文件内存缓存区。缓冲文件系统能使C语言对文件的处理提高数据存取访问的效率。②工作原理:文件缓冲系统的工作原理包括三个部分,C程序、磁盘、内存缓冲区。程序借助缓冲区操作磁盘文件的数据,磁盘与内存缓冲区由操作系统自动完成交互,程序通过跟内存缓冲区打交道处理数据。

2.什么是文本文件和二进制文件?

答:在C语言中,按数据存储的编码形式,数据文件可分为文本文件和二进制文件两种。文本文件是以字符ASCII码值进行存储与编码的文件,其文件的内容就是字符。二进制文件是存储二进制数据的文件。根据数据存储的形式,文件的数据流又分为字符流和二进制流前者称为文本文件(或字符文件),后者成为二进制文件。C语言源程序是文本文件,C程序的目标文件和可执行文件是二进制文件。

2.4 请给出本周学习总结(15分)

2.4.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 3天 112 编写测试程序,检测代码是否正确,计算运行时间 怎么使非常大的测试数据运算速度加快

2.4.2 累积代码行和博客字数(5分)

2.4.3 学习内容总结和感悟(5分)

学习内容总结

学习感悟

1、通过老师的讲解以及本次作业的完成,我对所学的知识有了更深的了解,在完成本次作业的过程中,学会了如何计算运行时间,如何将文件放到程序中,使之打开并测试;
2、此次学习的内容还不是太熟悉,完成的速度比以前慢了一点;
3、对不熟的要多加思考多加练习。

原文地址:https://www.cnblogs.com/zhge/p/14487075.html