循环结构(while、for 与嵌套)
一句话目标:让程序学会”重复做事”,而且知道什么时候停。
第一部分:while 循环 —— 先判断,后执行
while (条件成立) {
// 循环体:重复执行的代码
}执行逻辑:先检查条件,为真才进去执行;执行完回来再检查,直到条件为假才停。
例 1:输出 1 到 100。
int i = 1;
while (i <= 100) {
cout << i << endl;
i++; // 别忘了让 i 变化,否则死循环!
}⚠️ 循环里一定要有让条件最终变假的语句(这里是
i++),否则程序永远停不下来。
第二部分:do-while —— 先执行,后判断
do {
// 循环体
} while (条件成立);和 while 唯一的区别:先执行一次,再判断条件。所以至少会执行一次。
| while | do-while | |
|---|---|---|
| 判断时机 | 先判断 | 后判断 |
| 最少执行 | 0 次 | 1 次 |
第三部分:i++ 与 ++i
i++(后置):先用 i 的值,然后 i 加 1。++i(前置):先把 i 加 1,再用新值。
int i = 5;
cout << i++; // 输出 5,之后 i 变 6
int j = 5;
cout << ++j; // 输出 6(先加再用)单独占一行当计数器时,
i++和++i效果一样,随便用。
第四部分:for 循环 —— 固定次数的首选
for (初始化; 循环条件; 每轮结束操作) {
// 循环体
}执行步骤:
- 先执行初始化(只一次);
- 判断循环条件:真→执行循环体;假→结束;
- 执行每轮结束操作(如
i++),回到第 2 步。
for (int i = 1; i <= 100; i++) {
cout << i << endl;
}计数器
i可以”当场定义”(写在 for 里),它的作用范围就只在这个循环内。
第五部分:循环嵌套
循环里再套循环,常用于二维的事情(打印图形、处理表格)。
例 2:输入 n,打印边长为 n 的
*正方形。
int n;
cin >> n;
for (int i = 1; i <= n; i++) { // 外层:控制行
for (int j = 1; j <= n; j++) { // 内层:控制每行的列
cout << "*";
}
cout << endl; // 每行结束换行
}理解口诀:外层管行,内层管列;内层整个跑完,外层才走一步。
第六部分:break 与 continue
break:直接跳出整个循环。continue:跳过本轮剩下的语句,直接进入下一轮。
例 3:2~100 的偶数求和,但排除 10 的倍数。
int sum = 0;
for (int i = 2; i <= 100; i += 2) {
if (i % 10 == 0) continue; // 是 10 的倍数,跳过本轮
sum += i;
}
cout << sum;课堂预测题:下面会输出什么?
for (int i = 1; i <= 10; i++) { if (i % 2 == 0) continue; // 偶数跳过 cout << i << " "; if (i >= 5) break; // 到 5 就停 }答案:
1 3 5(输出 1、3、5 后,i=5 触发 break)。
小结
while先判断后执行;do-while先执行后判断(至少一次)。for适合固定次数:初始化 → 判断 → 循环体 → 结束操作。- 嵌套循环:外层管行、内层管列。
break跳出整个循环,continue跳过本轮。- 永远确保循环条件最终会变假,避免死循环。
课后小练
- 输入 n,求 1+2+…+n(洛谷 P5718 类)。
- 打印 n 行的直角三角形
*(提示:内层次数随行变化)。 - for 习题:洛谷 P5720、P5721。