单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,5.4 循环结构的嵌套,假设循环语句中的循环体内又完整地包含另一个或多个循环语句,称为循环嵌套。前面介绍的三种循环都可以相互嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。例如,二层循环嵌套(又称二重循环)结构如下:,for(;)/*for()称为外循环*/,语句1,while()/*while称为内循环*/,循环体 /*for()中嵌套一个while循环*/,语句2,【例5.9】在屏幕上输出下三角九九乘法表。,程序如下:,main(),int i,j;,for(i=1;i=9;i+),for(j=1;j=i;j+),printf(%d*%d=%d,i,j,i*j);,printf(n);,运行结果如下:,1*1=1,2*1=2 2*2=4,3*1=3 3*2=6 3*3=9,4*1=4 4*2=8 4*3=12 4*4+16,5*1=5 5*2=10 5*3=15 5*4=20 5*5=25,6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36,7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49,8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64,9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,【例5.10】编程求s=1!+2!+3!+10!的和。,程序如下:,main(),int i,j;,long p,s=0;,for(i=1;i=10;i+),p=1;,for(j=1;j=i;j+),p=p*j;,s+=p;,printf(s=%ldn,s);,【例5.11】使用二重for循环编程打印以下图形。,程序如下:,main(),int i,j,k;,for(i=1;i=i;j-),printf();/*打印一个空格*/,for(k=1;k0程序执行后的输出结果是A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-5,练习2:,有以下程序main()inti,s=0;for(i=1;iy);,A 1 B2 C 3 D 程序执行错误,练习4:C语言中while循环和do-while循环的主要区别是,Ado-while的循环体至少无条件执行一次,Bwhile的循环控制条件比do-while的循环控制条件严格,Cdo-while允许从外部转到循环体内,Ddo-while的循环体不能是复合语句,5,、有以下程序,main()intt=100,i=100;for(;i0;i-)t+=i;printf(%dn,t);,执行后输出结果是,。,6.下面是计算的n!值的程序,空格处应选 ,#include,main(),int i,s,n;,s=1;,printf(“Enter n:);,scanf(“%d,for(i=1;i=n;i+),;,printf(“s=%d,s);,A)s=s*i B)s*i C)s=s+i D)s+i,