嵌套循环

嵌套循环

有时候将一个循环放在另外一个循环里面。例如计算某条街每间房子的居住人数。这需要进入每间房子,计算每间房子的居住人数,统计所有的房子是一个外部循环。在外部循环的每个迭代,都要使用一个内部循环来计算居住人数。

下面来看一个例子,使用嵌套来输出高度和宽度固定的方框。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int width = 0;
    unsigned int height = 0;
    unsigned int i = 0;
    const unsigned int MIN_SIZE = 3;
    printf("请输入宽度和高度,最小值是 is %u\n", MIN_SIZE);
    scanf("%u %u", &width, &height);
    if (width < MIN_SIZE) //盒子的大小至少要为3
    {
        printf("宽度小于最小值3");
        width = MIN_SIZE;
    }
    if (height < MIN_SIZE)
    {
        printf("高度小于最少值3");
        height = MIN_SIZE;
    }

    for (i = 1; i <= width; i++) //输出盒子的第一行 星号
    {
        printf("*");
    }

    //输出非第一行和非最后一行
    for (unsigned j = 1; j <= (height - 2); j++)
    {
        printf("\n*"); //每一行的第一个星号
        for (i = 1; i <= width - 2; i++)
        {
            printf(" "); //盒子中空的部分
        }
        printf("*"); //每一行的最后一个星号
    }
    printf("\n"); //换行

    for (i = 1; i <= width; i++) //输出最后一行星号
    {
        printf("*");
    }

    printf("\n"); //换行
    return 0;
}Code language: PHP (php)

使用 while 循环实现相同功能:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int width = 0;
    int height = 0;

    printf("请输入宽:");
    scanf("%d", &width);
    if (width < 3)
        width = 3;

    printf("请输入高:");
    scanf("%d", &height);
    if (height < 3)
        height = 3;

    //第一行
    int i = 0;
    while (i < width)
    {
        printf("*");
        i++;
    }
    printf("\n");

    i = 0;
    while (i < height - 2)
    {
        printf("*");
        int j = 0;
        while (j < width - 2)
        {
            printf(" ");
            j++;
        }

        printf("*\n");
        i++;
    }

    //最后一行
    i = 0;
    while (i < width)
    {
        printf("*");
        i++;
    }
    printf("\n");

    return 0;
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注