在一个循环结构中,又包含另一个完整的循环结构称为循环嵌套。内嵌循环的循环体中还可以出现新的循环,这就构成多重循环。
C语言提供的for语句、while语句和do...while语句,不但可以嵌套循环语句自身,而且还可以相互嵌套。
循环嵌套的执行:外层循环体每执行一次,内层循环都要整体循环一次(从初值开始,一直执行到不满足循环条件为止)。
三种循环语句for、while、do. . .while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。
举例1:输出1000到9999有哪些玫瑰花数?
例如:1634 = 1*1*1*1 +6*6*6*6 +3*3*3*3 +4*4*4*4
#include <stdio.h>
#include <math.h>
int main()
{
int i,t;
float sum;
for(i=1000;i<10000;i++)
{
t = i;sum=0;
while(t)
{
sum+=pow(t%10,4);
t/=10;
}
if(sum==i)
{
printf("%d is rosenumern",i);
}
}
return 0;
}
举例2:在屏幕上输出以下图案
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
#include <stdio.h>
int main()
{
int n,i,j,k,m;
printf("输入行数:");scanf("%d",&n);
for(i=0,j=n-1;i<n;i++,j--)
{
if(i<j)
for(k=0;k<2*i+1;k++)
printf("%c",'*');
else
for(m=0;m<2*j+1;m++)
printf("%c",'*');
printf("n");
}
}
举例3:在屏幕上输出以下图案
#include <stdio.h>
int main()
{
int i,j,k;
char c ='A';
for(i=0;i<7;i++)
{
if(i<4)
{
for(j=0;j<4-i-1;j++)
putchar(' ');
for(k=0;k<2*i+1;k++)
putchar(c+i);
printf("n");
}
else
{
for(j=0;j<=i-4;j++)
putchar(' ');
for(k=0;k<2*(7-i)-1;k++)
putchar(c+i);
printf("n");
}
}
return 0;
}
举例4:在屏幕上输出以下图案
#include <stdio.h>
int main()
{
int i,j,k;
int n;
printf("input n:");
scanf("%d",&n);
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
printf("%2c",' ');
for(k=1;k<=2*i-1;k++)
{
if(k==1 || k == 2*i-1)
{ printf("%2c",'*');continue; }
printf("%2c",' ');
}
printf("n");
}
for(i=1;i<=2*n-1;i++)
printf("%2c",'*');
return 0;
}