# 2024-2025-1 20241310 《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241310 《计算机基础与程序设计》第十四周学习总结

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第一周作业
这个作业的目标 自学教材《C语言程序设计》第13-14章并完成云班课测试
作业正文 ... 本博客链接

教材学习内容总结

C语言相关知识点总结

一、二进制文件和文本文件

  1. 定义与区别
    • 二进制文件
      • 以二进制形式存储数据,数据在内存中的存储形式原样输出到磁盘。例如,整数10在内存中以二进制表示(假设为32位系统下的00000000000000000000000000001010),直接存储到二进制文件中。适用于存储非字符为主的数据,如图片、音频、视频等。如果用记事本打开,通常会显示乱码。
      • 优点是存取速度快、占用空间小,可随机存取数据。
    • 文本文件
      • 以字符码(字符的二进制码)的形式存储,每个字符对应一个字节,用于存放对应的ASCII码。例如,数字10在文本文件中会以字符10的ASCII码形式存储(0011000100110000)。可使用Windows自带的记事本、写字板等编辑查看,内容是可阅读的。
      • 便于对字符进行逐个处理,也便于输出字符,但一般占存储空间较多,而且在存储数值型数据时要花费转换时间(如将数值转换为ASCII码存储,读取时再转换回数值)。

二、文件的打开和关闭

  1. 文件打开函数 - fopen
    • 函数原型:FILE *fopen(const char *fname, const char *mode);
    • 参数
      • fname:要打开的文件的名称,可以是绝对路径(从盘符开始的文件路径)或相对路径(从当前工作目录开始的文件路径)。
      • mode:文件的打开模式,决定了对文件的操作方式。
        • 对于文本文件:
          • "r":以只读模式打开文本文件,要求文件必须存在。
          • "w":以只写模式打开文本文件,若文件存在则清空内容,若不存在则创建。
          • "a":以追加模式打开文本文件,若文件不存在则创建,写入数据时追加到文件末尾。
          • "r +":以读写模式打开文本文件,文件必须存在。
          • "w +":以读写模式打开文本文件,若文件存在则清空内容。
          • "a +":以读写模式打开文本文件,写入数据时追加到文件末尾。
        • 对于二进制文件:在上述模式字符串后加"b",如"rb""wb""ab"等。
    • 返回值
      • 成功时返回一个指向FILE结构体变量的指针(这个结构体变量包含文件的名称、大小、属性、缓冲区等相关信息);失败时返回空指针。
  2. 文件关闭函数 - fclose
    • 函数原型:int fclose(FILE *stream);
    • 作用:关闭打开的文件流,断开指针与文件之间的联系,禁止再对该文件进行操作。
    • 返回值:成功返回0,失败返回EOF-1)。

三、按字符读写文件

  1. 字符读取函数 - fgetc
    • 函数原型:int fgetc(FILE *fp);
    • 功能:从fp所指向的文件中读取一个字符。
    • 返回值:返回文件fp所指向的文件中的字符值(EOF为文件尾标志,其真值为-1)。调用该函数时,文件使用方式必须是以读或读写方式打开的。
  2. 字符写入函数 - fputc
    • 函数原型:int fputc(int ch, FILE *fp);
    • 功能:将字符ch的值输出到fp所指向的文件中去。
    • 返回值:成功时返回写入的字符,失败时返回EOF

四、按格式读写文件

  1. 格式化读取函数 - fscanf
    • 函数原型:int fscanf(FILE *fp, const char *format,...);
    • 功能:从fp所指向的文件中按照指定的格式读取数据。与scanf功能相似,但操作对象是磁盘文件而不是键盘。
  2. 格式化写入函数 - fprintf
    • 函数原型:int fprintf(FILE *fp, const char *format,...);
    • 功能:按照指定的格式将数据写入fp所指向的文件中。与printf功能相似,但操作对象是磁盘文件而不是显示器。

五、按数据块读写文件

  1. 数据块读取函数 - fread
    • 函数原型:size_t fread(void *ptr, size_t size, size_t count, FILE *fp);
    • 功能:从fp所指向的文件中读取count个数据块,每个数据块大小为size字节,将读取的数据存储到ptr所指向的内存区域。size_t是在stddef.h头文件中使用typedef定义的数据类型,表示无符号整数,常用来表示数量。
    • 返回值:实际读取的数据块个数。
  2. 数据块写入函数 - fwrite
    • 函数原型:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *fp);
    • 功能:将ptr所指向的内存区域中的count个数据块,每个数据块大小为size字节,写入到fp所指向的文件中。
    • 返回值:实际写入的数据块个数。

六、文件的随机读写

  1. 文件定位函数 - fseek
    • 函数原型:int fseek(FILE *fp, long offset, int whence);
    • 功能:改变文件位置指针的位置。
    • 参数
      • fp:文件指针。
      • offset:偏移量,以字节为单位,表示相对于whence的偏移量。
      • whence:起始位置,可以是SEEK_SET(文件开头,偏移量为0)、SEEK_CUR(当前位置)、SEEK_END(文件末尾)。
    • 返回值:成功时返回0,失败时返回非零值。
  2. 获取文件指针当前位置函数 - ftell
    • 函数原型:long ftell(FILE *fp);
    • 功能:返回文件位置指针的当前值。
  3. 文件指针重定位到开头函数 - rewind
    • 函数原型:void rewind(FILE *fp);
    • 功能:使文件位置指针重新置于文件开头。

七、标准输入、输出重定向

  1. 标准输入重定向
    • 在命令行中,可以使用<符号将标准输入重定向到一个文件。例如,myprogram < input.txt,这样myprogram程序原本从键盘读取输入的部分将改为从input.txt文件读取。
  2. 标准输出重定向
    • 使用>符号可以将标准输出重定向到一个文件。例如,myprogram > output.txtmyprogram程序原本输出到屏幕的内容将被写入到output.txt文件中。如果使用>>,则是追加模式,不会覆盖原文件内容。

八、动画的基本原理

  1. 视觉暂留现象
    • 人眼在观察物体时,当物体消失后,视网膜上的影像不会立即消失,而是会保留一段时间(大约0.1 - 0.4秒)。动画利用这一现象,通过快速连续播放一系列略有不同的图像(帧),给人眼造成画面连续运动的错觉。
  2. 帧的概念
    • 动画由一系列的帧组成,每一帧都是一个静止的图像。通过在一定时间间隔内切换这些帧,就可以产生动画效果。例如,常见的视频帧率有24帧/秒、30帧/秒等,表示每秒播放的帧数。
  3. 关键帧与中间帧
    • 关键帧:是动画中具有关键意义的帧,包含了角色或物体的重要状态(如起始状态、结束状态、关键动作等)。动画师通常先绘制关键帧。
    • 中间帧:在关键帧之间补充的帧,用于使动画过渡更加自然流畅。通过插值等算法计算出中间帧的内容。

九、迷宫游戏

  1. 游戏场景构建
    • 迷宫布局:可以使用二维数组来表示迷宫的布局,数组中的元素表示不同的区域,如墙壁、通道、起点、终点等。例如,用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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2024-12-26 21:05  诺奇布卡  阅读(22)  评论(0)    收藏  举报