根据循环语句的循环体作为循环语句,可以分成双重循环、三重循环等。这样的循环结构我们称为多重循环。之前我么见过的程序中的循环、结构都比较简单。实际上,在一个循环中可以嵌套另一个循环。使用二重循环实现九九乘法表的程序代码如下:
#include <stdio.h>
int main() {
// 外层循环控制行数,即乘法表的左侧数字
for (int i = 1; i <= 9; i++) {
// 内层循环控制列数,即乘法表的右侧数字
for (int j = 1; j <= i; j++) {
// 打印每个乘法表达式,并格式化输出
printf("%d * %d = %2d\t", i, j, i * j);
}
// 每打印完一行乘法表后换行
printf("\n");
}
return 0;
}
外侧的for语句的作用使变量i的值从1到9递增,其循环分别对应乘法表的第一行,第二行.....即纵方向的循环。各行执行的内侧的for语句的作用是使变量j的值从1到i递增,这是各行那个中的横方向的循环。在C语言中,break语句的核心作用break语句的作用域严格限定break只能终止当前正在执行的那一层循环,外层循环不会受到影响。我们看下面的例子:双重循环中的break语句
for (int i = 0; i < 3; i++) { // 外层循环(i=0,1,2)
for (int j = 0; j < 3; j++) { // 内层循环(j=0,1,2)
if (j == 1) break; // 当j=1时,跳出内层循环
printf("i=%d,j=%d ", i, j);
}
printf("
"); // 每完成一次外层循环的内层遍历后换行
}