4. 循环结构程序设计

这一章在学什么

前面学了顺序(一条条执行)和选择(if/else 分支)。这一章学循环结构同一段代码重复执行多次——比如「普攻 10 次」「输出 1 到 5 每个数」。

会用三种写法:whiledo-whilefor。其中 for 最常用,格式是 for (初值; 条件; 更新),例如 for (i=1; i<=5; i++) 表示 i 从 1 到 5 执行 5 次。还会学 break(跳出整个循环)和 continue(只跳过这一轮)。

本节考纲要点

本节代码里的英文词

三种循环(语法与区别)

为什么需要循环

要让某段代码重复执行,用循环。C 里有三种写法,效果类似,区别是“什么时候判断条件、写法习惯”:

while、do-while、for 各怎么写

for 的三个部分怎么理解

for 的三个部分:for (int i = 0; i < 10; i++) 表示:i 从 0 开始;每次循环前看 i<10 是否成立,成立就进循环体;每次循环体执行完后做 i++(i 加 1)。所以循环体会执行 10 次,i 依次为 0,1,…,9。

循环示例

while 示例

while 例子:小兵数量大于 0 就普攻一次,并把小兵数减 1(minion_count-- 等价于 minion_count = minion_count - 1),直到小兵为 0。

for 例子:i 从 5 变到 0,每次减 1(i--),每次输出“CD: i 秒”,相当于倒计时 5 秒。

/* 普攻直到小兵清完 */
while (minion_count > 0) {
    attack();
    minion_count--;
}

/* 技能 CD 倒计时 */
for (int i = 5; i >= 0; i--)
    printf("CD: %d 秒\n", i);

for 示例

上面 for 循环:i 从 5 变到 0,每次减 1,共输出 6 行“CD: 5 秒”到“CD: 0 秒”。

循环嵌套(了解)

什么是嵌套循环

循环里面再写一个循环,叫嵌套。比如外层循环“每个英雄”,内层循环“该英雄的每个技能”——先固定一个英雄,把他三个技能都处理完,再换下一个英雄。考纲为了解,能看懂双重 for 就行。

break 与 continue

break:跳出整个循环

break:执行到 break 时,立刻跳出当前循环(只跳出一层),后面的循环体不再执行,也不会再判断条件。游戏里好比“被击杀了,直接结束本局”。

continue:只跳过这一轮

continue:执行到 continue 时,跳过本次循环剩下的语句,直接进入“下一轮”循环(重新判断条件)。游戏里好比“这波兵不打,等下一波”。

对比:break 是“整个循环不玩了”;continue 是“这一轮不玩了,下一轮继续”。

本章总示例(含 main)

本章讲的是循环结构:用 for/while 重复执行。下面是一段完整可运行的程序(for 循环打印 3 次)。

#include <stdio.h>
int main() {
    int i;
    for (i = 1; i <= 3; i++)
        printf("第%d次普攻\n", i);
    return 0;
}

下面练习区已预填了这段代码,可修改后点击「运行」。

练习区域

提示:注释可以暂时不写,等以后学熟了再慢慢加。请仿照上面循环代码在下面输入或修改,点击「运行」。

运行结果:

(点击「运行」后显示在这里)

易错知识(避免踩坑)

小结