首页 > 编程笔记

C++循环嵌套详解

所谓循环嵌套,指的是一个循环结构的内部还包含一个或者多个循环的情况,常用于处理多维数据结构,如二维数组、矩阵或需要多级遍历的场景。

C++ 提供了多种循环结构,包括 while、do while 和 for 循环,它们可以相互嵌套,也可以自己嵌套自己。例如两个 for 循环嵌套、while 循环嵌套 for 循环、do while 循环嵌套 while 循环等。

接下来通过几个实例,给大家演示嵌套的循环结构。

【实例一】使用嵌套的 for 循环遍历二维数组,并打印所有元素。
#include <iostream>

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << matrix[i][j] << ' ';
        }
        std::cout << std::endl;
    }

    return 0;
}
程序中采用了两个 for 循环嵌套的方式对二维数组 matrix 进行遍历:

执行程序,输出结果为:

1 2 3
4 5 6
7 8 9


【示例二】使用嵌套的 while 循环创建乘法表。
#include <iostream>

int main() {
    int i = 1;
    while (i < 10) {
        int j = 1;
        while (j < 10) {
            std::cout << i * j << ' ';
            j++;
        }
        std::cout << std::endl;
        i++;
    }
    return 0;
}
程序中,两个 while 循环嵌套使用,外层 while 循环的变量 i 从 1 到 9,表示乘法表的第一个因数,内层 while 循环的变量 j 从 1 到 9,表示第二个因数。

外层 while 循环的变量 i 每次递增之前,都会执行一次内层的 while 循环和末尾的 cout 语句。内层的 while 循环执行时,j 的值从 0 递增到 9,期间会输出 i*j 的值。

执行程序,输出结果为:

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81


【示例三】不同循环结构的嵌套
#include <iostream>

int main() {
    char repeat;
    do {
        for (int i = 1; i <= 5; i++) {
            std::cout << i << " ";
        }
        std::cout << "\n是否继续?(y/n): ";
        std::cin >> repeat;
    } while (repeat == 'y' || repeat == 'Y');
    return 0;
}
程序中,do while 循环中包含了一个 for 循环。for 循环至少执行一次,然后 do while 循环判断 repeat 的值是否为 'y' 或者 'Y',如果是,则再次执行 for 循环,反之则结束循环。

程序的运行结果为:

1 2 3 4 5
是否继续?(y/n): y
1 2 3 4 5
是否继续?(y/n): n

总结

循环嵌套是一种强大的编程工具,用于执行多级迭代和遍历复杂数据结构。通过合理地组合和嵌套各种循环,可以实现广泛的编程需求。

在使用嵌套循环时,注意保持代码的清晰和简洁,过度嵌套的循环可能会使得代码变得难以理解和维护,要避免不必要的复杂性,确保程序的可读性和可维护性。

推荐阅读