把循环的三步写在一起,
让累计表达得更紧凑
今天学习 for 循环与 +=、-= 复合赋值,用它们重写计数、倒计时与累计,并独立完成 2 到 10 的偶数累计。
for 集中保存循环的三部分
for 的圆括号依次写初始化、继续条件和每轮更新。初始化只执行一次;之后每轮先检查条件,成立时执行循环体,最后才更新变量。
day13.c
for (int count = 1; count <= 5; count++)
{
printf("count = %d\n", count);
}第一轮先检查 1 <= 5,然后输出 1,最后才执行 count++。输出 5 后变量更新为 6,下一次条件不成立,因此不会输出 6。
更新方向决定循环如何前进
把开始值设为 5、条件写成不小于 1,并在每轮结束后执行 countdown--,就可以完成倒计时。
day13.c
for (int countdown = 5; countdown >= 1; countdown--)
{
printf("%d\n", countdown);
}程序依次输出 5、4、3、2、1。输出 1 后变量更新为 0,随后 0 >= 1 不成立,所以 0 不会进入循环体。
+= 与 -= 缩短重复赋值
total += number 等价于 total = total + number;even -= 2 等价于 even = even - 2。虽然写法更短,理解时仍然先计算右边,再把新结果保存回左边变量。
day13.c
int total = 0;
for (int number = 1; number <= 5; number++)
{
total += number;
printf("加入 %d 后,total = %d\n", number, total);
}五轮后,total 依次变成 1、3、6、10、15。另一个练习使用 even -= 2,从 10 依次输出 10、8、6、4、2。
独立完成偶数累计综合练习
最后把今天的两个知识点放进同一个任务:循环变量从 2 开始,每轮增加 2,只经过 2、4、6、8、10;另一个变量保存不断增加的总和。
day13.c
int totall = 0;
for (int numberr = 2; numberr <= 10; numberr += 2)
{
totall += numberr;
printf("加入 %d 后,totall = %d\n", numberr, totall);
}
printf("总和 = %d\n", totall);累计结果依次是 2、6、12、20、30,最终得到 2 + 4 + 6 + 8 + 10 = 30。预测与实际运行一致,程序正常退出,代码为 0。
今天真正掌握的内容
- 理解
for的初始化、条件和更新三个部分 - 能准确追踪检查条件、执行循环体与更新变量的顺序
- 会用
for完成正向计数和倒计时 - 理解并使用
+=与-= - 会改变更新步长,让变量每轮增加或减少 2
- 能独立组合循环与累计变量完成偶数求和
下一步将学习循环中的 break 与 continue,分别观察“立即结束整个循环”和“跳过当前这一轮”的执行路线。