第7讲循环的嵌套 continue语句和 break语句 l、 continue语句 2、 break语句 二、循环的嵌套 三、goto语句
第7讲 循环的嵌套 一、continue 语句和 break 语句 1、continue语句 2、break语句 二、循环的嵌套 三、goto语句
一、 continue语句和 break语句 l、 continue语句 格式: continue; 功能:结束本次循环,使程序回行到循环条件, 判断是否提前进入下一次循环。 continue语句只用于循环结构的内部,常与i语 句联合起来使用,以便在满足条件时提前结束 本次循环
一、continue 语句和 break 语句 1、continue语句 格式:continue ; 功能:结束本次循环,使程序回行到循环条件, 判断是否提前进入下一次循环。 continue语句只用于循环结构的内部,常与if语 句联合起来使用,以便在满足条件时提前结束 本次循环
例71对除5的倍数以外的1~100的数求和。 main 如果if判断语句为 运行序列如下: 真,则跳出本次循 i if((i%5) S+=i 环,回到循环条件, 判断是否进行下 for(i=1;i<=100;i++) s=0+1=1 次循环 s=1+2=3 fif(!(i%5) 此处,当i5的倍 s=3+3=6 数时,!(i%5)为真, continue, 4 s=6+4=10 跳出本次循环,不 执行 continue下面 S+=i; 假假假假真假 不执行 的语句,直接进入 s=10+6=16 下一次循环,即执 行for语句
例7.1 对除5的倍数以外的1~100的数求和。 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)) s+=i 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 …… …… ……
例72统计1~50之间不能被3整除的数的个数并 输出这些数。 main nt ns for(n=1,=0;n<=20;n=n+1) iif (n%3==0)continue printf(%odt",n); 运行结果 S=s+1: 245781011 13141617 20 total: 14 printf("\ntotal: %d\n", s)
main() { int n,s; for (n=1,s=0;n<=20;n=n+1) { if (n%3==0) continue; printf("%d\t",n); s=s+1; } printf("\ntotal:%d\n",s); } 例7.2 统计1~50之间不能被3整除的数的个数并 输出这些数。 运行结果: 1 2 4 5 7 8 10 11 13 14 16 17 19 20 total: 14
2、 break语句 格式: break: 功能:循环体中遇见 break语句,立即结束循 环,跳到循环体外,执行循环结构后面的语 句。 在循环体中 break语句常与i语句搭配使 用,并且 break语句只能用在 switch语句和循 环语句中。 break只能跳出一层循环(或者一层 switch 语句结构)
格式: break; 功能:循环体中遇见break语句,立即结束循 环,跳到循环体外,执行循环结构后面的语 句。 2、break语句 在循环体中break语句常与if语句搭配使 用,并且break语句只能用在switch语句和循 环语句中。 break只能跳出一层循环(或者一层switch 语句结构)
例73统计输入的字符个数,并输出它们,以“!终 止 main( 运行序列如下 ichar chr; 输入 if(chr==4!”)输出 如果主判断语句为 int s: 真,则结束循环, 执行循环结构后面 的语句 for(s=0;;s++) 5SB 假假假假真 S Schr=getchar(; B 此处,当输入字符 if(chr==4”) 为“!”时, chr=!为真,结 break: 束for循环,执行循 环结构后面的语句, else printf(“c%”,chr);} 即执行 printf (“s=%dm”,s)语句 printf(“s=%dⅦn”,s);
例7.3 统计输入的字符个数,并输出它们,以“!”终 止。 main( ) {char chr; int s; for( s=0; ; s++) {chr=getchar( ); if (chr==‘!’) break; else printf(“c%”,chr);} printf(“s=%d\n”,s); } 如果if判断语句为 真,则结束循环, 执行循环结构后面 的语句 此处,当输入字符 为“!”时, chr==‘!’为真,结 束for循环,执行循 环结构后面的语句, 即执行printf (“s=%d\n”,s)语句 运行序列如下: 输入 if(chr==‘!’) 输出 a 假 a 5 假 5 $ 假 $ B 假 B ! 真 4
例74计算半径r=1到r=10时圆的面积,直到面积 area大于100为止。 #define pi 3.14159 main i int r; float area: for(r=1;r100) break printf(“%r”,area);
例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); } }
二、循环的嵌套 一个循环体内又包含另一个完整的循环结构,称 为循环的嵌套,内嵌的循环中还可以嵌套循环即 为多层循环。 说明: (1)嵌套的原则:不允许交叉 (2)循环与分支可以相互嵌套但不允许交叉
二、循环的嵌套 一个循环体内又包含另一个完整的循环结构,称 为循环的嵌套,内嵌的循环中还可以嵌套循环即 为多层循环。 说明: ⑴ 嵌套的原则: 不允许交叉 ⑵ 循环与分支可以相互嵌套但不允许交叉
输出图形: 大大★★大★★ 大大大大大大 for(i=1;i<=4;i++) {prin(“★★★★★★★★”); printf(n”);
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 输出图形: for(i=1;i<=4;i++) { printf(“* * * * * * * *”); printf(“\n”); }
其中语句:prin(“******★*”); 等价于 for(i=1;j=8:j++) printi(“★”) 于是构成了二重循环语句: for(i=1;i<=4;i++) {for(=1;j<=8:j++) printi(“*”); printf(“in”);
其中语句:printf(“* * * * * * * *”); 等价于 for(j=1;j<=8;j++) printf(“*”); 于是构成了二重循环语句: for(i=1;i<=4;i++) {for(j=1;j<=8;j++) printf(“*”); printf(“\n”); }