break 和 continue 都会改变循环的正常执行流程,但它们的含义不同。
break:直接结束当前循环。continue:跳过本轮迭代(iteration)的剩余代码,开始下一轮循环。
break
当循环中已经完成目标,或者继续循环没有意义时,可以使用 break。
下面的程序判断一个整数是否为素数(prime number)。只要找到一个能整除 n 的数,就可以确认 n 不是素数,不需要再继续检查。
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int n = 17;
bool prime = n > 1;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
prime = false;
break;
}
}
cout << (prime ? "Prime" : "Not prime") << endl;
return 0;
}一次可能的运行结果:
请输入一个整数:17
17 是素数这里不需要检查到 n - 1。如果一个数有大于平方根(square root)的因子,那么它一定也有一个小于平方根的配对因子,所以检查到 sqrt(n) 就够了。
知识测验
题目
在循环中执行 break 会发生什么?
continue
continue 不会结束整个循环,而是跳过本轮循环中剩下的代码,直接进入下一轮。
下面的程序读取 10 个整数,只计算非负整数的平方和。遇到负数时,本轮直接跳过。
int sumSquare = 0;
for (int i = 0; i < 10; i++) {
int num;
cin >> num;
if (num < 0) {
continue;
}
sumSquare += num * num;
}一次可能的运行过程:
请输入 10 个整数:
5
7
-2
0
4
-4
-9
3
9
5
非负整数平方和:205当 num < 0 时,continue 会跳过 sum_square += num * num,因此负数不会参与计算。
0 不是负数,它的平方是 0,加入结果也不会改变总和。
知识测验
题目
continue 的作用是什么?
如何选择
如果你想“整个循环到此为止”,用 break。如果你只是想“这一轮不继续做了,下一轮照常开始”,用 continue。
for (int x = 1; x <= 5; x++) {
if (x == 3) {
continue;
}
cout << x << endl;
}运行结果:
1
2
4
53 被跳过了,但循环没有结束。
知识测验
题目
for (int x = 1; x < 6; x++) 中遇到 x == 3 时 continue,最终不会打印哪个数?
对比实验
读完 break 和 continue 的含义后,再用下面的组件单步比较:同样遇到 x == 3,continue 只是跳过本轮,而 break 会让整个循环提前结束。
互动实验
包裹分拣线:跳过,还是停机?
访问权限免费
扫描器在 x = 3 遇到破损包裹。对比 continue(送去旁路)和 break(整条传送带停机)。
L-011.2 kg
L-021.5 kg
DAMAGED破损
L-042.1 kg
L-052.4 kg
L-062.7 kg
✓ 正常出口↘ 破损旁路
传送带等待启动动手练习
跳过负数,并在超限时停止
先读取整数个数 n,再逐个读取整数:负数直接跳过,遇到大于 100 的数字就停止,其余数字累加并统计个数。
- 读取整数 n,表示最多输入多少个数。
- 用 for 循环逐个读取;负数用 continue 跳过。
- 遇到大于 100 的数字时用 break,并输出总和与个数。