3.2 循环

本篇学习 `while`、`do while`、`for`、`break`、`continue` 与循环边界设计,并能写出稳定的重复执行逻辑。

循环

概念说明

循环用于重复执行一段代码,直到满足退出条件。 C 语言提供了 whiledo whilefor 三种常见循环结构,它们适合的场景略有不同。

大多数循环错误并不是语法写错,而是边界、更新时机和退出条件没有想清楚。 所以写循环时,最好先明确三件事:从哪里开始、什么时候结束、每轮怎么推进。

可以先这样理解:

  • while:先判断,再决定要不要执行。
  • do while:先执行一次,再判断是否继续。
  • for:把初始化、条件和更新写在同一处,更适合计数型循环。

语法/规则

  1. while 在进入循环体前先检查条件,因此可能一次也不执行。
  2. do while 至少会执行一次循环体,因为判断发生在末尾。
  3. for (初始化; 条件; 更新) 适合计数型或遍历型逻辑。
  4. break 用于提前结束整个循环,continue 用于跳过本轮剩余语句进入下一轮。
  5. 嵌套循环时,要格外注意内外层变量名、边界和退出条件。
  6. 循环变量最好只由一个明确位置更新,避免“多处修改”带来的混乱。
  7. 写完循环后,最好手动检查首轮、末轮和空输入这三类边界情况。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>

int main(void) {
    int sum = 0;

    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        sum += i;
    }

    printf("sum = %d\n", sum);
    return 0;
}

输出结果:

1
sum = 25

这个例子里,continue 跳过了所有偶数,只把 110 之间的奇数累加起来。

常见错误

  1. 循环变量没有更新,导致死循环。
  2. 边界条件写错,例如 i < ni <= n 混淆,产生 off-by-one 错误。
  3. forwhile 后面误写一个分号,导致循环体变成空语句。
  4. 在多个位置同时修改循环变量,最后连自己都说不清一轮到底怎么推进。
  5. 只测试“正常输入”,没有验证空数组、零次循环和最后一轮边界。
本文禁止转载
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
最近构建时间:2026-04-17 19:07:48 CST
载入天数...载入时分秒...
发表了 1 篇文章 · 发表了 152 篇笔记 · 总计 18 万 0 千字