C 语言中的多重循环嵌套

多重循环嵌套是我们之前讲过的几种不同的循环控制语句的组合,可以有不同的组合形式。在这里,我们给大家举例讲解。

1. 单一循环语句组成的嵌套循环

1.1 由 for 语句组成的循环嵌套

#include <stdio.h>

int main()
{
    for (int i = 0; i < 3; i++)
    {
        printf("Outside: %dn", i);
        for (int j = 5; j < 10; j++)
        {
            printf("Inside: %dn", j);
        }
    }

    return 0;
}

运行结果:

Outside: 0
Inside: 5
Inside: 6
Inside: 7
Inside: 8
Inside: 9
Outside: 1
Inside: 5
Inside: 6
Inside: 7
Inside: 8
Inside: 9
Outside: 2
Inside: 5
Inside: 6
Inside: 7
Inside: 8
Inside: 9

这个程序内部的循环语句执行了 15 次,外部的循环语句执行了 3 次。

1.2 由 do while 语句组成的循环嵌套

#include <stdio.h>

int main()
{
    int i = 5, j = 3;
    do
    {
        i--;
        printf("Outside: %dn", i);
        do
        {
            j++;
            printf("Inside: %dn", j);
        } while (j < 6);
    } while (i > 3);

    return 0;
}

运行结果:

Outside: 4
Inside: 4
Inside: 5
Inside: 6
Outside: 3
Inside: 7

这个程序的内层循环执行了 4 次,外层循环执行了 2 次。

1.3 由 while 语句组成的循环嵌套

#include <stdio.h>

int main()
{
    int i = 5, j = 3;
    while (i > 3)
    {
        i--;
        printf("Outside: %dn", i);
        while (j < 6)
        {
            j++;
            printf("Inside: %dn", j);
        }
    }

    return 0;
}

运行结果:

Outside: 4
Inside: 4
Inside: 5
Inside: 6
Outside: 3

这个程序的内层循环执行了 3 次,外层循环执行了 2 次。

2. 不同类型循环组成的嵌套循环

2.1 由 do while , do 和 for 语句组成的三重嵌套

#include <stdio.h>

int main()
{
    int i = 5, k = 0;
    do
    {
        i--;
        printf("Loop 1: %dn", i);
        for (int j = 0; j < 3; j++)
        {
            printf("Loop 2: %dn", j);
            while (k < 3)
            {
                k++;
                printf("Loop 3: %dn", k);
            }
        }
    } while (i > 3);

    return 0;
}

运行结果:

Loop 1: 4
Loop 2: 0
Loop 3: 1
Loop 3: 2
Loop 3: 3
Loop 2: 1
Loop 2: 2
Loop 1: 3
Loop 2: 0
Loop 2: 1
Loop 2: 2

程序中循环 3 执行了 3 次,循环 2 执行了 6 次,循环 1 执行了 2 次。

大家可以根据上面的例子进行拓展,可以有不同的组合与不同的嵌套层数。

3. 小结

多重循环嵌套,就是将原有的循环控制语句进行嵌套组合,也就是将一个循环语句写到其他的循环语句中的循环体中。这样就可以循环多次执行循环体中的循环。这种循环有点如同我们使用的电度表,俗称电表。当你用电的时候,电表会从最低位开始不断循环,当完成一圈循环后,上一位就会自动加一。这种循环使得电表中的数字依次增加。

Tips:如果不是有特殊的需求,请为你的所有的循环语句设置可以达到的循环停止的条件。不然就是无尽的死循环,会让程序在耗尽系统分配给它的资源后被操作系统强制终止,或者造成操作系统的资源抢占,使得操作系统没有办法相应别的软件的请求。