2024-2025-1 20241310 《计算机基础与程序设计》第十四周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第一周作业 |
这个作业的目标 | 自学教材《C语言程序设计》第13-14章并完成云班课测试 |
作业正文 | ... 本博客链接 |
教材学习内容总结
C语言相关知识点总结
一、二进制文件和文本文件
- 定义与区别
- 二进制文件
- 以二进制形式存储数据,数据在内存中的存储形式原样输出到磁盘。例如,整数
10
在内存中以二进制表示(假设为32位系统下的00000000000000000000000000001010
),直接存储到二进制文件中。适用于存储非字符为主的数据,如图片、音频、视频等。如果用记事本打开,通常会显示乱码。 - 优点是存取速度快、占用空间小,可随机存取数据。
- 以二进制形式存储数据,数据在内存中的存储形式原样输出到磁盘。例如,整数
- 文本文件
- 以字符码(字符的二进制码)的形式存储,每个字符对应一个字节,用于存放对应的ASCII码。例如,数字
10
在文本文件中会以字符1
和0
的ASCII码形式存储(00110001
和00110000
)。可使用Windows自带的记事本、写字板等编辑查看,内容是可阅读的。 - 便于对字符进行逐个处理,也便于输出字符,但一般占存储空间较多,而且在存储数值型数据时要花费转换时间(如将数值转换为ASCII码存储,读取时再转换回数值)。
- 以字符码(字符的二进制码)的形式存储,每个字符对应一个字节,用于存放对应的ASCII码。例如,数字
- 二进制文件
二、文件的打开和关闭
- 文件打开函数 - fopen
- 函数原型:
FILE *fopen(const char *fname, const char *mode);
- 参数
fname
:要打开的文件的名称,可以是绝对路径(从盘符开始的文件路径)或相对路径(从当前工作目录开始的文件路径)。mode
:文件的打开模式,决定了对文件的操作方式。- 对于文本文件:
"r"
:以只读模式打开文本文件,要求文件必须存在。"w"
:以只写模式打开文本文件,若文件存在则清空内容,若不存在则创建。"a"
:以追加模式打开文本文件,若文件不存在则创建,写入数据时追加到文件末尾。"r +"
:以读写模式打开文本文件,文件必须存在。"w +"
:以读写模式打开文本文件,若文件存在则清空内容。"a +"
:以读写模式打开文本文件,写入数据时追加到文件末尾。
- 对于二进制文件:在上述模式字符串后加
"b"
,如"rb"
、"wb"
、"ab"
等。
- 对于文本文件:
- 返回值
- 成功时返回一个指向
FILE
结构体变量的指针(这个结构体变量包含文件的名称、大小、属性、缓冲区等相关信息);失败时返回空指针。
- 成功时返回一个指向
- 函数原型:
- 文件关闭函数 - fclose
- 函数原型:
int fclose(FILE *stream);
- 作用:关闭打开的文件流,断开指针与文件之间的联系,禁止再对该文件进行操作。
- 返回值:成功返回0,失败返回
EOF
(-1
)。
- 函数原型:
三、按字符读写文件
- 字符读取函数 - fgetc
- 函数原型:
int fgetc(FILE *fp);
- 功能:从
fp
所指向的文件中读取一个字符。 - 返回值:返回文件
fp
所指向的文件中的字符值(EOF
为文件尾标志,其真值为-1
)。调用该函数时,文件使用方式必须是以读或读写方式打开的。
- 函数原型:
- 字符写入函数 - fputc
- 函数原型:
int fputc(int ch, FILE *fp);
- 功能:将字符
ch
的值输出到fp
所指向的文件中去。 - 返回值:成功时返回写入的字符,失败时返回
EOF
。
- 函数原型:
四、按格式读写文件
- 格式化读取函数 - fscanf
- 函数原型:
int fscanf(FILE *fp, const char *format,...);
- 功能:从
fp
所指向的文件中按照指定的格式读取数据。与scanf
功能相似,但操作对象是磁盘文件而不是键盘。
- 函数原型:
- 格式化写入函数 - fprintf
- 函数原型:
int fprintf(FILE *fp, const char *format,...);
- 功能:按照指定的格式将数据写入
fp
所指向的文件中。与printf
功能相似,但操作对象是磁盘文件而不是显示器。
- 函数原型:
五、按数据块读写文件
- 数据块读取函数 - fread
- 函数原型:
size_t fread(void *ptr, size_t size, size_t count, FILE *fp);
- 功能:从
fp
所指向的文件中读取count
个数据块,每个数据块大小为size
字节,将读取的数据存储到ptr
所指向的内存区域。size_t
是在stddef.h
头文件中使用typedef
定义的数据类型,表示无符号整数,常用来表示数量。 - 返回值:实际读取的数据块个数。
- 函数原型:
- 数据块写入函数 - fwrite
- 函数原型:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *fp);
- 功能:将
ptr
所指向的内存区域中的count
个数据块,每个数据块大小为size
字节,写入到fp
所指向的文件中。 - 返回值:实际写入的数据块个数。
- 函数原型:
六、文件的随机读写
- 文件定位函数 - fseek
- 函数原型:
int fseek(FILE *fp, long offset, int whence);
- 功能:改变文件位置指针的位置。
- 参数
fp
:文件指针。offset
:偏移量,以字节为单位,表示相对于whence
的偏移量。whence
:起始位置,可以是SEEK_SET
(文件开头,偏移量为0)、SEEK_CUR
(当前位置)、SEEK_END
(文件末尾)。
- 返回值:成功时返回0,失败时返回非零值。
- 函数原型:
- 获取文件指针当前位置函数 - ftell
- 函数原型:
long ftell(FILE *fp);
- 功能:返回文件位置指针的当前值。
- 函数原型:
- 文件指针重定位到开头函数 - rewind
- 函数原型:
void rewind(FILE *fp);
- 功能:使文件位置指针重新置于文件开头。
- 函数原型:
七、标准输入、输出重定向
- 标准输入重定向
- 在命令行中,可以使用
<
符号将标准输入重定向到一个文件。例如,myprogram < input.txt
,这样myprogram
程序原本从键盘读取输入的部分将改为从input.txt
文件读取。
- 在命令行中,可以使用
- 标准输出重定向
- 使用
>
符号可以将标准输出重定向到一个文件。例如,myprogram > output.txt
,myprogram
程序原本输出到屏幕的内容将被写入到output.txt
文件中。如果使用>>
,则是追加模式,不会覆盖原文件内容。
- 使用
八、动画的基本原理
- 视觉暂留现象
- 人眼在观察物体时,当物体消失后,视网膜上的影像不会立即消失,而是会保留一段时间(大约0.1 - 0.4秒)。动画利用这一现象,通过快速连续播放一系列略有不同的图像(帧),给人眼造成画面连续运动的错觉。
- 帧的概念
- 动画由一系列的帧组成,每一帧都是一个静止的图像。通过在一定时间间隔内切换这些帧,就可以产生动画效果。例如,常见的视频帧率有24帧/秒、30帧/秒等,表示每秒播放的帧数。
- 关键帧与中间帧
- 关键帧:是动画中具有关键意义的帧,包含了角色或物体的重要状态(如起始状态、结束状态、关键动作等)。动画师通常先绘制关键帧。
- 中间帧:在关键帧之间补充的帧,用于使动画过渡更加自然流畅。通过插值等算法计算出中间帧的内容。
九、迷宫游戏
- 游戏场景构建
- 迷宫布局:可以使用二维数组来表示迷宫的布局,数组中的元素表示不同的区域,如墙壁、通道、起点、终点等。例如,用
0
表示通道,1
表示墙壁
- 迷宫布局:可以使用二维数组来表示迷宫的布局,数组中的元素表示不同的区域,如墙壁、通道、起点、终点等。例如,用
基于AI的学习
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 2/2 | 4/4 | |
第二周 | 200/200 | 1/3 | 12/12 | |
第三周 | 200/1000 | 1/4 | 10/10 | |
第四周 | 400/400 | 1/5 | 12/12 | |
第五周 | 200/1300 | 1/6 | 10/10 | |
第六周 | 600/1000 | 1/7 | 10/10 | |
第七周 | 400/500 | 1/8 | 9/9 | |
第八周 | 600/600 | 1/9 | 10/10 | |
第九周 | 800/800 | 1/10 | 12/12 | |
第十周 | 800/800 | 1/11 | 10/10 | |
第十一周 | 800/800 | 1/12 | 10/10 | |
第十二周 | 800/800 | 1/13 | 10/10 | |
第十三周 | 800/800 | 1/14 | 10/10 | |
第十四周 | 1000/1000 | 1/15 | 10/10 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
- 《计算机科学概论(第七版)》
- ...