粥报
C语言学习周报
一、 本周学习内容总结
- 数组(Array):理解了数组是一排连续的“储物柜”,掌握了数组的定义(int scores[5];)、初始化、以及下标从 0 开始的规则。成功突破了“数组越界”陷阱(即 i <= 5 会导致访问 scores[5] 引发错误)。
- 字符与 ASCII 码的进阶运算:掌握了 getchar() 和 putchar() 的使用。不仅会做大小写转换(+32 / -32),还学会了利用取模运算 % 实现字母的循环移位(如输入 Z 输出 A)。
- 文件读写(File I/O):掌握了 fopen、fgetc、fputc、fclose 四大函数。理解了 r(只读)、w(写入)、a(追加)等模式的区别,并成功写出了凯撒密码的加密与解密程序。
- 数学函数库(Math.h):熟悉了 sqrt(开平方)、pow(次方)、sin、log 等数学函数,能独立完成复杂数学公式的 C 语言翻译。
- 初步接触 Python:开启了 Python 基础课的学习,理解了 Python 与 C 语言在变量定义、输入输出、格式化字符串(f-string)上的语法差异。
二、 本周实战项目(新增)
· 凯撒密码加密/解密器:结合文件读写和 ASCII 运算,实现了一个可以对文本文件进行简单加密和解密的程序(核心逻辑:c = c + n 加密,c = c - n 解密,利用 %26 解决越界)。
· 数组综合应用:实现了“输入5个整数,计算总和、平均值、最大值”的程序,熟练掌握了数组的遍历和条件判断。
· 复杂数学公式计算器:将带根号、三角函数的复杂公式成功翻译成 C 语言代码。
· (原有的平均值、变量交换、猜数字游戏等保留)
三、 错题与易错点总结(复盘升级)
(原有错误复盘保留,以下是最近遇到的新坑)
- 数组越界陷阱:定义 int scores[5] 后,遍历时错写成 i <= 5,导致程序越界访问并产生未知错误。修正为 i < 5。
- 打擂台找最大值的逻辑漏洞:求最大值时,最初把初始化 max = scores[0] 写在了循环内部,导致每次循环 max 都被重置;同时,if 语句后面漏了花括号,导致 max = scores[i]; 被无条件执行,最大值被最后一个数字覆盖。修正为“循环外初始化,循环内用 if 和 {} 控制更新”。
- 文件读写中的“路径与权限”连环坑:
· 文件被系统隐藏了后缀名(实际叫 input.txt.txt),导致 fopen 失败。学会打开“文件扩展名”检查真实文件名。
· 上一次运行的程序没关闭,导致编译器无法生成新的 .exe,报错 Permission denied。学会了关闭黑框或重启软件。 - 数学符号与函数的混淆:把 sin(正弦)错写成 sinh(双曲正弦),tan 错写成 atan,以及 log10 漏写参数等。明确了数学公式和 C 语言函数的严格对应关系。

浙公网安备 33010602011771号