for循环的基本结构
for (初始化; 条件; 更新) {
// 要重复执行的代码
}
- 初始化:循环正式开始前先执行,只执行一次
- 条件:每次进入循环前检查,结果为真则执行循环内容
- 更新:每次循环内容执行结束后执行,执行完回到“条件”位置
使用案例:打印数字0~4
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
cout << i << endl;
}
return 0;
}
执行顺序:
int i = 0(初始化,只执行一次)- 检查
i <5 (0 < 5,为真) - 执行
cout << i << endl;(输出 0 换行) - 执行
i++(i变为1) - 检查
i <5 (1 < 5,为真) - 执行
cout << i << endl;(输出 1 换行) - … 重复直到条件为假
for循环的常见用法
- 计数循环(常用)
// 打印1-10
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
// 输出:1 2 3 4 5 6 7 8 9 10
- 倒序循环
// 倒计时:5 4 3 2 1
for (int i = 5; i >= 1; i--) {
cout << i << " ";
}
- 步长不为1的循环
// 打印0-10之间的偶数
for (int i = 0; i <= 10; i += 2) {
cout << i << " ";
}
// 输出:0 2 4 6 8 10
实际应用示例
示例1:计算1-100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i; // 等价于 sum = sum + i
}
cout << "1到100的和是:" << sum << endl;
示例2:找n个正整数中的最大值
int n,a;
cin >> n;
int max = -1;
for (int i = 1; i <= n; i++) {
cin >> a;
if(max < a){
max = a;
}
}
cout << "最大值是:" << max << endl;
控制循环的关键字
- break 立即结束整个循环
// 找到第一个负数就停止
int num;
for (int i = 0; i < 6; i++) {
cin >> num; // 5 3 -2 7 -1 4
if (num < 0) {
cout << num << " ";
break; // 立即退出循环
}
}
//输出:5 3
- continue 跳过本次循环
// 只打印正数,跳过负数
int num;
for (int i = 0; i < 5; i++) {
cin >> num; // 5 -3 2 -7 1
if (num < 0) {
continue; // 跳过负数,继续下一次循环
}
cout << num << " ";
}
// 输出:5 2 1
常见错误
- 死循环错误
// ❌ 忘记更新变量
for (int i = 0; i < 5; ) { // 缺少 i++
cout << i << endl;
// 会一直输出0,永远停不下来!
}
- 分号位置错误
// ❌ 错误:在for后面加多余的分号
for (int i = 0; i < 5; i++); // 这个分号结束了循环
{
cout << i << endl; // 这行只执行一次,而且i的作用域可能有问题
}
// ✅ 正确:没有多余分号
for (int i = 0; i < 5; i++) {
cout << i << endl; // 这会执行5次
}
- 作用域问题
for (int i = 0; i < 5; i++) {
// i在这里可用
}
// i在这里不可用(超出作用域)
cout << i << endl; // ❌ 编译错误
- 与if语句类似,for循环的{}中只有一句时也能省略大括号,新手不要这样做