就像if语句可以嵌套一样,一个循环也可以嵌套在另一个循环中,一个循环中含有另一个循环就称为嵌套循环。
嵌套循环的工作原理如下:首先外循环的第一轮触发内循环,然后内循环将一直执行到完成为止,然后,外循环的第二轮再次触发内循环,此过程不断重复直到外循环结束,使用嵌套循环时,只有在内循环完全结束后,外循环才会执行下一趟循环,
一个while循环可以嵌套在另一个while循环中,示例1演示了嵌套while循环的用法。
例【1】while嵌套循环练习1
编程要求:用*输出一个直角三角形图案。
程序清单 sample.c
#include <stdio.h>
void main()
{
int nstars=1,stars;
//外层循环控制输出*的行数
while( nstars <= 10 )
{
stars = 1;
//内层循环控制打印星号的数量
while( stars <= nstars )
{
printf("*");
stars++;
}
printf("\n");
nstars++;
}
}
程序用外层循环控制输出*的行数,循环条件为nstars <= 10,nstars初始化为1,该条件允许输出10行*;内层循环控制*输出的数量,循环条件为stars <= nstars,内层循环开始前,stars都被赋值为1,然后在内层循环体内做自增操作。
例【2】while嵌套循环练习2
编程要求:输入字符序列,统计输入的字符数。
程序清单 sample.c
#include <stdio.h>
void main()
{
int x;
char ans;
ans = 'y';
do {
x = 0;
printf("请输入字符序列:\n");
do {
scanf("%c",&ans);
x++;
}while( ans != 'q');
printf("\n输入的字符数为:%d",--x);
printf("\n是否需要输入更多字符序列(Y/N)?");
scanf("%c",&ans);
}while( ans!='N' );
}
程序首先提示用户输入字符序列,进入内层do-while循环,接收用户输入的字符序列,直到用户按下回车键并输入字符q,程序将退出内层的do-while循环。程序接着询问用户是否要输入更多的字符序列,如果用户输入y或Y,do-while外循环的条件为真,则程序将提示用户输入另一序列字符。直到用户按下除y或Y以外的任何键时,外循环才结束。
while循环和do-while循环也可以互相嵌套。例如,可以将示例1的内层while循环修改为do-while循环,或者将外层循环修改为do-while循环。