这个作业属于哪个课程 | 计科三班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 回顾数据类型和表达式,初步了解文件 |
学号 | 20209035 |
一、本周作业
1.1 题目:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。
1.1.1代码截图
1.1.2 解题思路
通过输入一个数,使用一个while循环,将输入的数进行除10取余得到有多少个1,再再每取一次余后将取余的数除以10得到新数,直到无法除跳出,通过if语句来制作一个计数器,得到一共多少个一。
1.1.3 测试数据
输入 | 输出 |
---|---|
99 | 36 |
999 | |
65874 | 36778 |
测试所用时间截图 | |
1.1.3 改进 | |
改进思路 |
相同的数据明显改进后所用时间变短,通过减少了变量所要开辟空间的时间,因此使用一个自定义函数来减少其运行时的时间
1.2 将上题中多组测试数据写入文件,并给出测试程序以检测你的代码有没有问题,贴出你的代码、运行结果和文件内容。
1.3 用自己的语言回答两个问题,并给出所查阅资料的引用
1.3.1 什么是文件缓冲系统?工作原理如何?
文件缓冲系统:
通过用缓冲区就可以一次读入一批数据,或输出一批数据,即不是执行一次输入或输出函数就实际访问磁盘一次,而是若干次读写函数语句对应一次实际的磁盘访问。
工作原理:
系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。从磁盘向内存读入数据时,则一次从磁盘文件将一些数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送给接收变量;
向磁盘文件输出数据时,先将数据送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。用缓冲区可以一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样
做的目的是减少对磁盘的实际读写次数,因为每一次读写都要移动磁头并寻找磁道扇区,花费一定的时间。缓冲区的大小由各个具体的C 版本确定,一般为512 字节。
通过查阅C语言程序与设计和C Primer Plus所得
1.3.2 什么是文本文件和二进制文件?
文本文件:
文本文件是指完全由可见字符组成的文件。所谓可见字符z是指ASCII码为32到126的字符、回车符(ASCII码13)、换行符(ASCII码10)、制表符(ASCII码9)、以及所有汉字字符(当然也包括其他字
符集如韩文、日文、阿拉伯文等等)。如果是Unicode文本,则还包括ASCII码0。
二进制文件:
二进制文件则有多种定义方式,广义的二进制文件是指电脑中的所有文件(包括文本文件),因为电脑中的所有文件其实都是以二进制方式存储的,也就是说每个字符(包括可见字符、控制字符)最终都
是以0和1的形式存储在硬盘等介质中的
通过查阅C语言程序与设计和C Primer Plus所得
1.4 请给出本周学习总结
1.4.1 学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 24h | 120 | 初步了解使用文件 | 在应用文件时使用到的指针算法 |
1.4.2 累积代码行和博客字数 | ||||
1.4.3 学习内容总结和感悟
本周学习了初步使用文件,同时复习了一下上个学期所学的内容,发现自己放假在家花的时间还是不够,需要在学习新知识的同时去巩固之前所学的知识。这个学期C语言的课也有所减少,需要自己平时自己花更多的时间。