← 课程目录
第 9 讲 模块三:让程序重复执行

for 循环与 break / continue

9 / 24
💡
本节课目标
学习第二种循环结构 for——把循环变量的初始化、判断、更新 三件事收进一行,专治“循环次数已知”的场景。再学两个循环里的“急刹车”: break 提前跳出整个循环,continue 跳过本次、继续下一轮。
开场

while 的三件事,散落在三处

📖 理论讲解

回忆上节课

上节课写 while 时,循环变量的三个动作分散在不同位置: 初始化在循环之前,判断在圆括号里,更新藏在循环体最后。一不小心忘了更新,就是死循环。

当循环次数写代码时就确定(比如“正好跑 5 次”), for 能把这三件事排在同一行,一眼看全,也更不容易漏掉更新。

第一段

for:三段式写在一行

📖 理论讲解

语法:for (初始化; 判断; 更新)

圆括号里用两个分号隔成三段,正好对应循环变量的三个动作:

作用执行时机
int i = 1初始化循环开始前,只做一次
i <= 5判断每轮开始前都检查
i++更新每轮循环体执行完后
Python

while 版:三件事分散三处

int i = 1;

while (i <= 5) {

std::cout << i;

i++;

}

VS
C++

for 版:三件事收进一行

for (int i = 1; i <= 5; i++) {

std::cout << i;

}

两段代码完全等价
上面两种写法跑出来一模一样。它们不是“谁更高级”,而是各有主场: 次数确定用 for 更紧凑,次数看运行情况用 while 更自然。
第二段

经典用场:累加求和

📖 理论讲解

1 加到 100

“从 1 加到 100”是循环最经典的练手题:循环次数(100 次)写代码时就知道, 正是 for 的主场。关键是循环体外先准备一个累加器 sum, 每轮把 i 加进去。

for_sum.cpp CPP
#include <iostream>

int main() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum += i;          // sum = sum + i
    }
    std::cout << "1 到 100 的总和是:" << sum << std::endl;
    return 0;
}
💡
+= 是什么
sum += i;sum = sum + i; 的简写,叫复合赋值。 同理还有 -=*=/=。它和 ++ 一样,是 C++ 里 “在自己原来的值上做改动”的常用简写。
⚠️
累加器要在循环外初始化
int sum = 0; 必须写在 for 之前。 如果写进循环体,每轮都被重置成 0,加了等于没加。
第三段

break:提前跳出整个循环

📖 理论讲解

不等循环跑完,中途就走

有时循环还没到条件结束,就已经“拿到想要的结果”了——比如在一堆数里 找到第一个符合要求的就够了,没必要再找下去。 break 的作用就是立刻跳出整个循环,执行循环后面的代码。

break_demo.cpp CPP
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;         // 一到 5 就跳出整个循环
    }
    std::cout << i << " ";
}
// 输出:1 2 3 4
第四段

continue:跳过本次,继续下一轮

📖 理论讲解

这一轮不办了,但循环继续

continuebreak 容易混。区别是: break整个循环都不要了continue 只是本轮剩下的代码不执行, 然后照常进入下一轮(for 会先做更新再判断)。

continue_demo.cpp CPP
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;      // 偶数就跳过本次,直接进入下一轮
    }
    std::cout << i << " ";
}
// 输出:1 3 5 7 9
一句话记住区别
break = 离场(循环结束);continue = 跳过(这轮算了,下轮接着来)。
⚡ 动手实操 约 8 分钟

把 break 改成 continue 看差别

break_demo.cpp 里的 break 改成 continue,先输出是什么,再运行验证。

  1. 改之前先想:i == 5 这一轮被跳过,那 6 到 10 还会打印吗?
  2. 运行对照,看和你猜的是否一致——不一致正好说明你抓住了两者的区别。
实战

动手写三个循环

练习 9-1

阶乘

读入一个正整数 n,用 for 算出 n! (即 1 × 2 × 3 × … × n)并输出。

提示:和累加求和几乎一样,但累乘的“累加器”初始值要设成 1 而不是 0——想想为什么。

练习 9-2

判断质数

读入一个大于 1 的整数,判断它是不是质数(只能被 1 和自身整除)。

思路:for2 试到 n-1, 只要发现有一个数能整除 nn % i == 0),它就不是质数—— 这时用 break 提前跳出,不用再试下去。

💡
想一想
跳出循环后,怎么知道到底是“找到了因子”还是“一个都没找到”? 你需要一个标记变量(比如 bool isPrime = true;),找到因子时把它改成 falsebreak
练习 9-3

跳过 7 的倍数

打印 1 到 50,但凡是 7 的倍数(7、14、21……)都跳过不打印。

提示:这正是 continue 的主场——条件成立就 continue,跳过本次打印。

收尾

小结

📖 理论讲解

这节课你掌握了

能力用到的工具
已知次数的循环for (初始化; 判断; 更新)
累加 / 累乘循环外的累加器 + += / *=
提前结束循环break
跳过本轮continue

whilefor 都能写循环,挑选标准就一句话: 次数定死用 for,看运行情况用 while

💡
下节课预告
模块三的循环、加上模块二的条件判断,已经够拼出一个真正好玩的程序了—— 猜数字游戏:电脑随机想一个数,你来猜,它提示大了还是小了, 限定次数内猜中就赢。下节课实战收尾。