C语言II博客作业01
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757 |
| 这个作业的目标 | 回顾数据类型和表达式 |
| 学号 | 20208993 |
| 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; | |
| 2.满足条件”f(N)=N“的最大的N是多少? | |
| 1.贴出代码图片,写出解题思路,列出测试数据(5分) | |
![]() |
|
![]() |
|
| 解题思路:利用循环从1到N一个个的提取出来判断和统计1的个数,利用头文件time.h中的clock库函数记录程序开始 | |
| 时间和结束时间,将两时间相减得到程序运行用时。 | |
| 2.给出不同测试数据的运算时间,如果你的运算时间不变,说明你的测试数据不够大(5分) | |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
| 3.思考针对足够大的数据,如何减少运算时间,并给出在原有算法基础上的改进算法和改进思路。 | |
| 要减少运行时间就得从循环结构入手,减少循环次数自然而然就减少了运行的时间。通过设置条件跳过其中不必要的循环, | |
| 如果十位不是1个位是1则加8可减少循环次数,减少运行时间。 | |
| 改进算法如图所示: | |
![]() |
|
| 改进前测试数据: | |
![]() |
|
![]() |
|
| 改进后测试数据: | |
![]() |
|
![]() |
|
| 2.2 将上题中多组测试数据写入文件,并给出测试程序以检测你的代码有没有问题,贴出你的代码、运行结果和文件内容。(5分) | |
![]() |
|
![]() |
|
![]() |
2.3 用自己的语言回答两个问题,并给出所查阅资料的引用(10分)
1.什么是文件缓冲系统?工作原理如何?
文件缓冲系统协助内存与磁盘交换数据,提高内存与磁盘交换数据的速度。
工作原理:因为磁盘文件数据的存取速度与内存数据存取访问速度不同,所以在文件操作时,系统自动为每一个文件分配一块文件缓冲区,内存与磁盘交换数据时,
先将数据放置在缓冲区,当缓冲区数据达到一定大小时再将数据移除,再接受新的数据。

2.什么是文本文件和二进制文件?
文本文件:以字符ASCII码值进行储存与编码的文件。文件内容为字符,若将数据放入文本文件中,数据将以其对应的ASCII码值存储在文件中。
二进制文件:储存二进制数据的文件。储存在里面的数据只有计算机才能识别。

2.4 本周学习总结(15分)
1 学习进度条(5)

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

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

感悟:1.觉得假期有点玩得太过了,代码写起吃力。
2.之前学的知识远远不够,得用课外时间多学点课外知识。
3.这个学期得更加努力了。

















浙公网安备 33010602011771号