循环结构

for循环的基本结构

for (初始化; 条件; 更新) {
    // 要重复执行的代码
}
  1. 初始化:循环正式开始前先执行,只执行一次
  2. 条件:每次进入循环前检查,结果为真则执行循环内容
  3. 更新:每次循环内容执行结束后执行,执行完回到“条件”位置

使用案例:打印数字0~4

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 5; i++) {
        cout << i << endl;
    }
    return 0;
}

执行顺序:

  1. int i = 0 (初始化,只执行一次)
  2. 检查 i < 5 (0 < 5,为真)
  3. 执行 cout << i << endl; (输出 0 换行)
  4. 执行 i++ (i变为1)
  5. 检查 i < 5 (1 < 5,为真)
  6. 执行 cout << i << endl; (输出 1 换行)
  7. … 重复直到条件为假

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循环的{}中只有一句时也能省略大括号,新手不要这样做