C语言II博客作业01

C语言II博客作业01
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-3/ |
| ---- | ---- | ---- |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-3/homework/11768 |
| 这个作业的目标 | 回顾之前学习的知识,学习十二章文件的使用 |
| 学号 | 20209004 |

二.本周作业
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.贴出代码图片,写出解题思路,列出测试数据
代码:
解题思路:先给N进行赋值,利用for循环语句对i进行从1到N的加法,将每次i的数值赋值给x,利用while语句对x进行判断再进行循环,每次对x进行取余,若结果是1则count加1,完成这一步骤之后对x除以10,再进行取余。

测试数据: N count
12 5
99 20
98765 49657
2.给出不同测试数据的运算时间,如果你的运算时间不变,说明你的测试数据不够大
3.思考针对足够大的数据,如何减少运算时间,并给出在原有算法基础上的改进算法和改进思路。
改进:
思路:调用fact函数,在主函数中对N进行赋值,然后使count等于调用函数输出的值,最后输出结果,在调用函数中利用for语句进行循环再利用while语句判断有多少个一,利用x进行累加,最后将x的值返回给count

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

2.3 用自己的语言回答两个问题,并给出所查阅资料的引用
1.什么是文件缓冲系统?工作原理如何?
文件缓冲系统:由于系统对磁盘文件数据的存取速度与内存数据存取访问的速度不同,而且文件数据量较大,数据从磁盘读到内存或从内存写到磁盘文件不可能瞬间完成,所以为了提高数据存取访问的效率,C程序对文件的处理采用缓冲文件系统的方式进行,这种方式要求程序与文件之间有一个内存缓冲区,程序与文件的数据交换通过该缓冲区来进行。 (《C语言程序设计》p300)
工作原理:在进行文件操作时,系统自动为每一个文件分配一块文件内存缓冲区,C程序对文件的所有操作就通过对文件缓冲区的操作来完成。 (《C语言程序设计》p300)
2.什么是文本文件和二进制文件?
文本文件:文本文件是数据储存的一种编码形式,文本文件是以字符ASCII码值进行存储与编码的文件,其文件内容就是字符。 (《C语言程序设计》p300)
二进制文件:二进制文件也是数据存储的一种编码形式,是存储二进制数据的文件。 (《C语言程序设计》p300)

2.4 请给出本周学习总结
1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周/3.1~3.8 六小时 216行 回顾上学期学习的内容,十二章有关文件的知识 对文件一点都不了解,不会从给定的文件中读取数据并进行数据处理
2 累积代码行和博客字数
3 学习内容总结和感悟
总结:学习了调用文件函数,时间函数
感悟:1.这个学期的学习内容难度加大了许多,上课的内容有些有点听不懂了,上课需要认真听
 2.这门课程需要多加练习,不能说学会了就不加以练习,寒假由于没练习,好多知识点全忘了
 3.存在问题一定要及时解决
posted @ 2021-03-07 17:07  我必不可能秃头  阅读(43)  评论(0编辑  收藏  举报