C++ 编程语法

五、循环结构

当需要重复执行一段代码时,可以使用循环。C++ 提供三种循环结构,各有适用场景,本章还将学习 break 与 continue 控制循环流程。

三种循环一览

🔁 while
先判断,再执行。
条件为 false 时一次都不执行。
适合:循环次数不确定的情况。
🔂 do-while
先执行,再判断。
至少执行一次,再决定是否继续。
适合:必须先做一次的场景(如输入验证)。
🔃 for
初始化、判断、更新三合一。
结构最紧凑,最常用。
适合:循环次数已知的情况。

while 循环

while 循环会先判断条件,条件为真才执行循环体,条件为假则直接跳过,适合循环次数不确定的情况。

♾️
避免死循环:while 循环体中必须有能让条件最终变为 false 的操作(如 i++),否则程序会永远运行下去。死循环是初学者最常见的错误之一!

do-while 循环

while 不同,do-while 循环会先执行一次循环体,再判断条件——保证至少执行一次,适合需要先操作再验证的场景(如输入校验)。

💡
do-while vs while:如果一开始条件就是 falsewhile 循环体一次也不执行;但 do-while 会先执行一次再判断。输入验证就是典型场景——必须先让用户输入,才能判断输入是否合法。

for 循环

for 循环把初始化、条件判断、更新三步整合到一行,是循环次数已知时最简洁、最常用的写法。

for  ( int i = 1 i <= 10 i++ )
① 初始化(只执行一次)
② 条件(每轮都判断)
④ 更新(每轮执行完后)
1初始化
2判断条件
3执行循环体
4执行更新
回到 ②,直到条件为 false
📌
三部分均可省略:for 循环的初始化、条件、更新都可以省略。省略条件时,循环变成无限循环:for (;;) { ... },与 while (true) 效果相同。需要搭配 break 才能退出。

嵌套循环

循环内部可以再嵌套循环,常用于处理二维数据(如矩阵、九九乘法表)。外层循环每执行一次,内层循环完整跑一遍。

外层循环 — 控制行 i: 1→9
for (int i = 1; i <= 9; i++)
内层循环 — 控制列 j: 1→i
for (int j = 1; j <= i; j++)
printf("%d×%d=%-3d", j, i, i*j); // 输出每格
C++ · 九九乘法表
1for (int i = 1; i <= 9; i++) // 外层:控制行
2{
3 for (int j = 1; j <= i; j++) // 内层:控制列
4 {
5 printf("%d×%d=%-3d", j, i, i*j); // %-3d:左对齐占3位
6 }
7 cout << endl; // 每行结束换行
8}
📊
时间复杂度提醒:嵌套循环的执行次数是各层循环次数的乘积。例如两层各循环 n 次,总共执行约 n² 次。在竞赛中,如果 n = 10⁵,两层嵌套(10¹⁰ 次)会直接超时,需要更优算法。

break 语句

break 跳出整个循环
遇到 break 后,立即终止当前循环,继续执行循环后面的代码。也可用于跳出 switch
continue 跳过本次迭代
遇到 continue 后,跳过本次循环体中剩余的代码,直接进入下一次迭代,循环不会终止。

break 关键字用于跳出当前所在的循环(或 switch),继续执行循环后面的代码。

C++ · break 示例(找第一个被 7 整除的数)
1for (int i = 1; i <= 100; i++)
2{
3 if (i % 7 == 0)
4 {
5 cout << "第一个被7整除的数是:" << i << endl;
6 break; // 找到了就立刻跳出,不再继续
7 }
8}
9// 输出:第一个被7整除的数是:7
⚠️
break 只跳出一层:在嵌套循环中,break 只跳出最内层的循环,不会直接跳出外层循环。如果需要跳出多层循环,可以使用标志变量或 goto(高级用法)。

continue 语句

continue 关键字用于跳过当前循环的剩余部分,直接进入下一次迭代。它不会终止循环,只是跳过本次迭代中剩余的代码。

C++ · continue 示例(输出奇数)
1for (int i = 1; i <= 10; i++)
2{
3 if (i % 2 == 0)
4 {
5 continue; // 偶数:跳过本次,不执行 cout
6 }
7 cout << i << " "; // 只有奇数才到这里
8}
9// 输出:1 3 5 7 9
💡
break vs continue 一句话总结:break 是"我不想玩了,退出循环";continue 是"这次跳过,下一轮继续玩"。