本讲定位:一级最难、也最关键的一讲。前七讲的程序,每条语句最多执行一次;从这一讲起,一段代码可以跑一万遍——这是”编程”和”照着算式抄”的分水岭。官方大纲把
for、while、do-while、break、continue全部点名,真题里一级编程题的第 2 题几乎必然是循环题。零基础学生在这一讲的掉队率最高,原因不是语法难,而是想不清楚”同一行代码被反复执行”是怎么回事——所以本讲会用大量的手工模拟表来治这个病。对应官方大纲:一级知识块 3「结构化程序设计」中的循环结构;知识块 4「程序的基本语句」中的
for语句、while语句、do-while语句,以及continue与break在循环中的应用。前置知识:一级第 05 讲(
%、/、++)、第 06 讲(条件表达式)、第 07 讲(分支)。代码说明:本讲所有代码均已用 g++ 11.5(
-std=c++11)编译运行验证,输出结果即为文中标注结果。
输入一个正整数 $n$($1 \le n \le 1000$),求 $1 + 2 + 3 + \cdots + n$。
没有循环,你得写 1000 行 sum = sum + 1; sum = sum + 2; ...,而且 $n$ 是输入的,你根本不知道要写几行。
有了循环,三行搞定:
int sum = 0;
for (int i = 1; i <= n; i++) {
sum = sum + i;
}
循环的价值:让”重复的工作”只写一遍。
for 循环for (初始化; 条件; 增量) {
循环体;
}
三个部分,用两个分号隔开(注意是分号不是逗号):
| 部分 | 作用 | 执行次数 |
|---|---|---|
| 初始化 | 设置循环变量的起点 | 只在最开始执行一次 |
| 条件 | 判断要不要继续 | 每轮开始前判断一次 |
| 增量 | 改变循环变量 | 每轮循环体跑完后执行一次 |
① 执行「初始化」(仅此一次)
↓
② 判断「条件」 ── 假 ──→ 跳出循环,执行后面的代码
│
真
↓
③ 执行「循环体」
↓
④ 执行「增量」
↓
回到 ②
关键顺序:条件 → 循环体 → 增量 → 条件 → 循环体 → 增量 → ……
⚠️ 增量是在循环体之后执行的,不是之前。这决定了循环体里
i的值。