C++循环嵌套详解
所谓循环嵌套,指的是一个循环结构的内部还包含一个或者多个循环的情况,常用于处理多维数据结构,如二维数组、矩阵或需要多级遍历的场景。
C++ 提供了多种循环结构,包括 while、do while 和 for 循环,它们可以相互嵌套,也可以自己嵌套自己。例如两个 for 循环嵌套、while 循环嵌套 for 循环、do while 循环嵌套 while 循环等。
接下来通过几个实例,给大家演示嵌套的循环结构。
【实例一】使用嵌套的 for 循环遍历二维数组,并打印所有元素。
执行程序,输出结果为:
【示例二】使用嵌套的 while 循环创建乘法表。
外层 while 循环的变量 i 每次递增之前,都会执行一次内层的 while 循环和末尾的 cout 语句。内层的 while 循环执行时,j 的值从 0 递增到 9,期间会输出 i*j 的值。
执行程序,输出结果为:
【示例三】不同循环结构的嵌套
程序的运行结果为:
在使用嵌套循环时,注意保持代码的清晰和简洁,过度嵌套的循环可能会使得代码变得难以理解和维护,要避免不必要的复杂性,确保程序的可读性和可维护性。
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 进行遍历:
- 当外层 for 循环变量 i 的值为 0 时,条件表达式 i<3 成立,于是执行内层的 for 循环和它后面的 cout 语句。在内层的 for 循环中,变量 j 的值会从 0 一直递增到 3,输出 1 2 3,循环后面的 cout 语句负责完成换行操作。
- 外层 for 循环的循环体执行完后,会执行 i++ 语句,i 的值从 0 变为 1,条件表达式 i<3 仍然成立,会再次执行一遍内层的 for 循环以及最后的 cout 语句,输出 4 5 6;
- 再次执行 i++ 语句,i 的值从 1 变为 2,条件表达式 i<3 仍然成立,于是再次执行一遍内层的 for 循环以及最后的 cout 语句,输出 7 8 9;
- 再次执行 i++ 语句,i 的值从 2 变为 3,条件表达式 3<3 不成立,循环结束。
执行程序,输出结果为:
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
总结
循环嵌套是一种强大的编程工具,用于执行多级迭代和遍历复杂数据结构。通过合理地组合和嵌套各种循环,可以实现广泛的编程需求。在使用嵌套循环时,注意保持代码的清晰和简洁,过度嵌套的循环可能会使得代码变得难以理解和维护,要避免不必要的复杂性,确保程序的可读性和可维护性。