资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,循环的嵌套,一、,continue,语句和,break,语句,1、,continue,语句,2、,break,语句,二、循环的嵌套,三、,goto,语句,一、,continue,语句和,break,语句,1、,continue,语句,格式:,continue;,功能:结束本次循环,使程序回行到循环条件,判断是否提前进入下一次循环。,continue,语句只用于循环结构的内部,常与,if,语句联合起来使用,以便在满足条件时提前结束本次循环。,例7.1,对除5的倍数以外的1100的数求和。,main(),int i,s;,s=0;,for,(i=1;i=100;i+),if(!(i%5),continue,;,s+=i;,如果,if,判断语句为真,则跳出本次循环,回到循环条件,判断是否进行下一次循环,此处,当,i,为5的倍数时,!(,i%5),为真,跳出本次循环,不执行,continue,下面的语句,直接进入下一次循环,即执行,for,语句,运行序列如下:,i if(!(i%5)si,1,假,s=0+1=1,2,假,s=1+2=3,3,假,s=3+3=6,4,假,s=6+4=10,5,真 不执行,6 假,s=10+6=16,main(),int n,s;,for,(n=1,s=0;n=20;n=n+1),if(n%3=0),continue,;,printf(%dt,n);,s=s+1;,printf(ntotal:%dn,s);,例7.2,统计150之间不能被3整除的数的个数并输出这些数。,运行结果:,2 4 5 7 8 10 11 13 14 16 17 19 20,total:14,格式:,break;,功能:,循环体中遇见,break,语句,立即结束循环,跳到循环体外,执行循环结构后面的语句。,2、,break,语句,在循环体中,break,语句常与,if,语句搭配使用,并且,break,语句只能用在,switch,语句和循环语句中。,break,只能跳出一层循环(或者一层,switch,语句结构),例7.3,统计输入的字符个数,并输出它们,以“!”终止。,main(),char chr;,int s;,for,(s=0;s+),chr=getchar();,if(chr=!),break,;,else printf(“c%”,chr);,printf(“s=%dn”,s);,如果,if,判断语句为真,则结束循环,,执行循环结构后面的语句,此处,当输入字符为“!”时,,chr=!,为真,结束,for,循环,执行循环结构后面的语句,即执行,printf(“s=%dn”,s),语句,运行序列如下:,输入,if(chr=!),输出,a,假,a,5,假,5,$,假,$,B,假,B,!,真 4,例7.4,计算半径,r=1,到,r=10,时圆的面积,直到面积,area,大于100为止。,#define pi 3.14159,main(),int r;,float area;,for,(r=1;r100),break,;,printf(“%f”,area);,二、循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,内嵌的循环中还可以嵌套循环即为多层循环。,说明:,嵌套的原则:不允许交叉,循环与分支可以相互嵌套但不允许交叉。,*,*,*,*,输出图形:,for,(i=1;i=4;i+),printf(“,*,”);,printf(“n”);,其中语句:,printf(“,*,”);,等价于,for,(j=1;j=8;j+)printf(“,*,”);,于是构成了二重循环语句:,for,(i=1;i=4;i+),for,(j=1;j=8;j+)printf(“,*,”);,printf(“n”);,上面的例子中:,外循环由外循环控制变量,i,控制,,i,由1递增到4。,for,(i=1;i=4;i+),for,(j=1;j=8;j+)printf(“,*,”);,printf(“n”);,每1次的外循环中,都要执行由内循环控制变量,j,控制的8次内循环操作和1次换行操作。,由此:每次内循环输出一个星号,每次外循环输出一行(8个)星号,4次外循环,输出了4行8列星号。,n=1;,while,(n=3),printf(,输出外循环,n=%dn,n);,i=1;,while,(i=2),printf(1),输出内循环,i=%dn,i);,i+;,j=1;,while,(j=3),printf(2),输出内循环,j=%dn,j);,j+;,n+;,例7.5,读程序,写出运行结果:,输出外循环,n=1,1),输出内循环,i=1,1),输出内循环,i=2,2),输出内循环,j=1,2),输出内循环,j=2,2),输出内循环,j=3,输出外循环,n=2,输出结果:,1),输出内循环,i=1,1),输出内循环,i=2,2),输出内循环,j=1,输出外循环,n=3,1),输出内循环,i=1,例7.6,输出,九九乘法表,1*1=1,1*2=2 2*2=4,1*3=3 2*3=6 3*3=9,1*9=9 2*9=18 9*9=81,递增 19,递增 99,递增 39,递增 29,相同为1,相同为2,相同为3,相同为9,外循环,内循环,main(),int i,j ;,for,(i=1;i =9;i+),for,(j=1;j =i;j+),printf(%d*%d=%2d,i,j,i*j);,printf(n);,程序:,例7.7,输出3100中的所有素数。,分析:,1)对于某个数,n,,如果从2到,n1,都不能被,n,整除,则该数,n,为素数。,此处,除数2到,n,可以用一个,for,语句来表示,:,for(i=2;i=n-1;i=i+1),2)对于3100之间的数,,,可以表示如下:,for(n=3;n=100;n=n+1),main(),int n,i;,for,(n=3;n=100;n=n+1),for,(i=2;i=n)printf(%dt,n);,程序:,例7.8,读程序段,,,写出输出结果:,for,(i=1;i=2;i+),for,(j=1;j=3;j+),for,(k=1;k=4;j+)printf(“,*,”);,printf(“n”);,*,*,*,*,*,*,输出如下图形:,i,从1到2,k,从1到4,j,从1到3,例7.9,输出如下图形:,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,分析:,共有5行,外循环,i:15,第一行输出4个空格,1个星号,第三行输出2个空格,5个星号,第二行输出3个空格,3个星号,第五行输出0个空格,9个星号,空格用循环变量,j,控制,,j=5,-,i,星号用循环变量,k,控制,,k=2i,-,1,程序:,main(),int i,j,k;,for,(i=1;i=5;i+),for,(j=1;j=5-i;j+)printf(“”);,for,(k=1;k=2i-1;j+)printf(“,*,”);,printf(“n”);,练习7.10,输入一个整数,n,输出如下回文塔。,1,1 2 1,1 2 3 2 1,n3,时,n5,时,1,1 2 1,1 2 3 2 1,1 2 3 4 3 2 1,1 2 3 4 5 4 3 2 1,
展开阅读全文