让变量一步步变化,
让代码按条件重复
今天学习 while 循环、++ 与 --,从正向计数和倒计时出发,再用两个变量完成 1 到 5 的累计求和。
while 在每轮开始前检查条件
while 会先判断条件。条件成立才执行循环体,执行完后回到条件处再次判断;如果第一次检查就不成立,循环体一次也不会执行。
day12.c
int count = 1;
while (count <= 5)
{
printf("count = %d\n", count);
count++;
}
printf("循环结束后 count = %d\n", count);循环依次输出 1 到 5。输出 5 后仍会执行一次 count++,使变量变成 6;随后 6 <= 5 不成立,循环结束,所以循环外输出的最终值是 6。
++ 与 -- 推动循环前进
独立写成一条语句时,count++ 等价于 count = count + 1,count-- 等价于 count = count - 1。如果控制变量一直不更新,条件可能永远成立,从而形成无限循环。
day12.c
int countdown = 5;
while (countdown >= 1)
{
printf("%d\n", countdown);
countdown--;
}
printf("倒计时结束后 countdown = %d\n", countdown);倒计时依次输出 5、4、3、2、1。变量减到 0 后,0 >= 1 不成立,所以循环内部不输出 0,循环外验证最终值为 0。
两个变量协作完成累计
累计练习中,number 保存当前要加入的数字并控制循环进度,total 保存截至当前轮的总和。赋值时仍然先计算右边,再把结果交给左边。
day12.c
int number = 1;
int total = 0;
while (number <= 5)
{
total = total + number;
printf("加入 %d 后,total = %d\n", number, total);
number++;
}五轮累计后,total 依次变成 1、3、6、10、15,最终得到 1 + 2 + 3 + 4 + 5 = 15,而 number 最终为 6。
循环体中的顺序也很重要
正确程序先把当前的 number 加入 total,再执行 number++。如果把自增放到累计之前,第一轮会跳过 1,最后一轮又会加入 6,错误地计算出 2 + 3 + 4 + 5 + 6 = 20。
今天真正掌握的内容
- 理解
while在每轮开始前检查条件 - 会用
++和--更新计数变量 - 知道控制变量不更新可能造成无限循环
- 能追踪循环结束后的变量最终值
- 会用控制变量和累计变量协作完成求和
- 能判断循环体语句顺序对结果的影响
下一步将学习 for 循环与复合赋值,把初始化、条件和更新集中起来,并用更紧凑的写法完成计数与累计。