第三章——循环语法
2026-01-03 15:31:52
发布于:河南
一、核心概念:循环的本质
循环语句的作用是重复执行一段代码,直到满足特定条件为止。C++的三种循环核心逻辑一致,只是语法结构和执行时机略有不同:
- while:先判断条件,再执行循环体(可能一次都不执行)
- do while:先执行循环体,再判断条件(至少执行一次)
- for:把初始化、条件判断、更新操作集中在一处,适合已知循环次数的场景
二、逐类详解
1. while 循环(先判断,后执行)
语法结构
while (条件表达式) {
// 循环体:满足条件时执行的代码
}
执行逻辑
- 先计算
条件表达式的结果(布尔值:true/false); - 如果结果为
true,执行循环体代码,执行完后回到步骤1重新判断; - 如果结果为
false,跳出循环,执行循环后的代码。
示例:输出1到5的数字
#include <iostream>
using namespace std;
int main() {
int i = 1; // 循环变量初始化
while (i <= 5) { // 条件:i不超过5
cout << i << " "; // 循环体:输出i
i++; // 循环变量更新(必须写,否则死循环)
}
return 0;
}
输出:1 2 3 4 5
关键注意点
- 循环变量的初始化要写在
while外面; - 循环体内部必须有更新循环变量的语句(如
i++),否则会陷入死循环; - 如果条件一开始就为
false,循环体一次都不会执行(比如把i=1改成i=6,输出为空)。
2. do while 循环(先执行,后判断)
语法结构
do {
// 循环体:至少执行一次的代码
} while (条件表达式); // 注意末尾有分号!
执行逻辑
- 先执行一次循环体代码;
- 计算
条件表达式的结果; - 如果结果为
true,回到步骤1继续执行; - 如果结果为
false,跳出循环。
示例:即使条件不满足,也执行一次循环体
#include <iostream>
using namespace std;
int main() {
int i = 6; // 初始值让条件不满足
do {
cout << i << " "; // 会执行这行
i++;
} while (i <= 5); // 条件为false,循环结束
return 0;
}
输出:6
关键注意点
- 末尾的分号
;不能省略; - 适合“至少要执行一次”的场景(比如用户输入验证:先让用户输入,再判断是否合法)。
3. for 循环(结构化循环,适合已知次数)
语法结构
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}
执行逻辑
- 初始化表达式:只执行一次,用于定义/初始化循环变量(如
int i=1); - 条件表达式:判断是否继续循环(布尔值),为
true则执行循环体,为false则跳出; - 执行完循环体后,执行更新表达式(如
i++),然后回到步骤2重新判断条件。
示例:输出1到5的数字(等价于while示例)
#include <iostream>
using namespace std;
int main() {
// 初始化:i=1;条件:i<=5;更新:i++
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
return 0;
}
输出:1 2 3 4 5
灵活用法(拓展)
- 初始化、更新可以写多个表达式(用逗号分隔):
// 同时初始化i和j,同时更新i和j for (int i=1, j=5; i<=5; i++, j--) { cout << i << " " << j << endl; } - 省略部分表达式(但分号不能省):
int i = 1; for (; i<=5; ) { // 省略初始化和更新,等价于while循环 cout << i << " "; i++; }
关键注意点
- 循环变量的作用域默认仅限于
for循环内(C++11及以上),更符合“局部变量”的最佳实践; - 适合已知循环次数的场景(比如遍历数组、固定次数的计算),代码更简洁、结构化更强。
三、三种循环的对比与适用场景
| 循环类型 | 执行顺序 | 适用场景 | 特点 |
|---|---|---|---|
| while | 先判断后执行 | 未知循环次数,仅知道终止条件 | 结构简单,灵活 |
| do while | 先执行后判断 | 至少执行一次的场景(如输入验证) | 保证循环体执行至少一次 |
| for | 初始化+判断+更新 | 已知循环次数(如遍历、固定次数迭代) | 代码紧凑,可读性高 |
四、常见坑点提醒
- 死循环:忘记更新循环变量(如
while(i<=5) { cout<<i; }),或条件永远为true(如for(;;)); - do while的分号:末尾漏写分号会导致编译错误;
- 循环变量作用域:
for循环内定义的变量,外部无法访问(如for(int i=1;...){}后,cout<<i会报错); - 条件表达式的边界:比如想输出1-5,写成
i<5会少输出5,写成i>=5会逻辑错误。
总结
- while:先判断后执行,适合未知循环次数的场景,需手动初始化和更新循环变量;
- do while:先执行后判断,唯一能保证循环体至少执行一次的循环,末尾必须加分号;
- for:把初始化、条件、更新集中管理,代码更整洁,优先用于已知循环次数的场景。
三种循环可以互相转换,核心是根据循环次数是否已知和是否需要至少执行一次选择合适的类型。
这里空空如也










有帮助,赞一个