嵌套循环
有时候将一个循环放在另外一个循环里面。例如计算某条街每间房子的居住人数。这需要进入每间房子,计算每间房子的居住人数,统计所有的房子是一个外部循环。在外部循环的每个迭代,都要使用一个内部循环来计算居住人数。
下面来看一个例子,使用嵌套来输出高度和宽度固定的方框。
#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)