这个作业属于哪个课程 | 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、对不熟的要多加思考多加练习。