循环嵌套
有时为了解决一个较为复杂的问题,需要在一个循环中再定义一个循环,这样的方式被称作循环嵌套。在C语言中,while、do…while、for循环语句都可以进行嵌套,其中,for循环嵌套是最常见的循环嵌套,其格式如下所示:
for(初始化表达式; 循环条件;操作表达式)
{
for(初始化表达式; 循环条件; 操作表达式)
{
执行语句;
}
}
在for循环嵌套中,外层循环每执行一次,内层循作为外层循环体中的语句会完全执行一次。例如,如果外层循环需要执行3次,由变量i控制,内层循环执行4次,由变量j控制,示例代码如例1所示。
例1 loopNest.c
1 #include <stdio.h>
2 int main()
3 {
4 for(int i = 1; i <= 3; i++)
5 {
6 printf("执行第%d次外层次循环:\n", i); //每一次外层循环都输出i的值
7 for(int j = 1; j <= 4; j++)
8 {
9 printf("%3d", j); //内层循环输出j的值,输出宽度为3
10 }
11 printf("\n"); //每一次外层循环结束后就换行
12 }
13 return 0;
14 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第5行代码控制外层循环,变量i可取1、2、3三个值;第6行代码输出外层循环执行次数;第7行代码控制内层循环,变量j可取1、2、3、4四个值;第9行代码输出变量j的取值。由图1可知,外层循环每执行1次,内层循环就执行4次,即外层循环每取一个i的值,j都要从1~4循环执行一遍,其循环过程可用图2表示。
图2 双层for循环过程
在图2中,第1轮外层循环中,i=1,j分别循环执行1、2、3、4四个条件值,当j结束循环时,该轮内层循环结束,外层循环执行i++操作,进入第2轮外层循环…,以此类推,直到外层循环条件不成立时结束循环。