C++ 多层循环结构教程

学习嵌套循环的使用方法和应用场景

什么是多层循环?

多层循环(嵌套循环)就是在一个循环内部包含另一个循环。

就像时钟的时针、分针、秒针:秒针转一圈,分针走一格;分针转一圈,时针走一格。

两层循环执行过程:

外层循环 i = 1

├─ 内层循环 j = 1, 2, 3...

外层循环 i = 2

├─ 内层循环 j = 1, 2, 3...

外层循环 i = 3

├─ 内层循环 j = 1, 2, 3...

...

基本嵌套循环示例

// 示例1:打印九九乘法表的一部分
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        cout << i << " × " << j << " = " << i * j << " ";
    }
    cout << endl; // 换行
}
输出结果:
1 × 1 = 1 1 × 2 = 2 1 × 3 = 3
2 × 1 = 2 2 × 2 = 4 2 × 3 = 6
3 × 1 = 3 3 × 2 = 6 3 × 3 = 9
执行顺序:
  • 外层循环 i 从 1 开始
  • 对于每个 i,内层循环 j 从 1 到 3 执行一遍
  • 当 j 循环结束后,i 增加 1,再次执行 j 循环

不同循环的组合

可以混合使用 for、while、do-while 循环

// 示例2:for 和 while 组合
for (int row = 1; row <= 4; row++) {
    int col = 1;
    while (col <= row) {
        cout << "* ";
        col++;
    }
    cout << endl;
}
输出结果:
*
* *
* * *
* * * *

三层循环示例

// 示例3:三维坐标遍历
for (int x = 1; x <= 2; x++) {
    for (int y = 1; y <= 2; y++) {
        for (int z = 1; z <= 2; z++) {
            cout << "(" << x << ", " << y << ", " << z << ") ";
        }
        cout << endl;
    }
    cout << endl;
}
输出结果:
(1, 1, 1) (1, 1, 2)
(1, 2, 1) (1, 2, 2)

(2, 1, 1) (2, 1, 2)
(2, 2, 1) (2, 2, 2)

实用案例:打印图形

// 示例4:打印矩形
int width = 5, height = 4;

for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        cout << "* ";
    }
    cout << endl;
}
输出结果:
* * * * *
* * * * *
* * * * *
* * * * *
// 示例5:打印直角三角形
int n = 5;

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {
        cout << "* ";
    }
    cout << endl;
}

测试题

题目1:下面的代码输出什么?

for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        cout << i << j << " ";
    }
    cout << endl;
}

答案:

11 12 13
21 22 23

外层循环 i 从 1 到 2,内层循环 j 从 1 到 3,所以输出 i 和 j 的组合。

题目2:下面的代码输出什么图形?

for (int i = 1; i <= 4; i++) {
    for (int j = 1; j <= i; j++) {
        cout << j << " ";
    }
    cout << endl;
}

答案:

1
1 2
1 2 3
1 2 3 4

题目3:找出代码中的错误

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; i++) {
        cout << "*";
    }
    cout << endl;
}

答案:内层循环的增量写错了

错误:for (int j = 1; j <= 3; i++)

正确:for (int j = 1; j <= 3; j++)

内层循环应该增加 j,而不是 i,否则会导致死循环。

编程练习

练习1:打印九九乘法表

编写程序打印完整的九九乘法表

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        cout << j << "×" << i << "=";
        if (i * j < 10) cout << " "; // 对齐数字
        cout << i * j << " ";
    }
    cout << endl;
}

练习2:打印空心矩形

编写程序打印一个空心矩形,只有边框有 *,内部是空格

int width = 6, height = 4;

for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        if (i == 0 || i == height - 1 || j == 0 || j == width - 1) {
            cout << "* ";
        } else {
            cout << " "; // 两个空格
        }
    }
    cout << endl;
}

练习3:数字金字塔

编写程序打印数字金字塔:

    1
   1 2 1
  1 2 3 2 1
 1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
int n = 5;

for (int i = 1; i <= n; i++) {
    // 打印空格
    for (int j = 1; j <= n - i; j++) {
        cout << " ";
    }
    // 打印左边数字
    for (int j = 1; j <= i; j++) {
        cout << j << " ";
    }
    // 打印右边数字
    for (int j = i - 1; j >= 1; j--) {
        cout << j << " ";
    }
    cout << endl;
}

总结

重点回顾:
  • 嵌套循环就是循环里面套循环
  • 外层循环执行一次,内层循环执行完整的一轮
  • 可以使用 for、while、do-while 的任意组合
  • 注意循环变量的命名,避免混淆
  • 多层循环常用于处理二维数据、打印图形等场景
题目 对/错/率 难度 记录 通过
姓名 分数 提交时间 操作