
第六章循环控制设计 本章重点 循环结束条件设置 for语句、 while语句、do- while语句三种循环语句的比较 break语句、 continue语句 for语句 for语句的一般形式 for(表达式1;表达式2;表达式3)语句 循环变量赋初值循环终止条件循环变量增量 循环变量赋初值 循环变量达到终值吗? 执行循环体中的语句 循环变量加上增量 例6.1求1+2+3+.+100 main( int n sum sum=0 for(=1
第六章 循环控制设计 本章重点: ⚫ 循环结束条件设置 ⚫ for 语句、while 语句、do-while 语句三种循环语句的比较 ⚫ break 语句、continue 语句 ⚫ 6.1 for 语句 1. for 语句的一般形式 例 6.1 求 1+2+3+….+100 main( ) { int n,sum; sum=0; for (i=1;i<=100;i++) sum=sum+i; printf(“the sum is %d\n”,sum); } 2.For 语句说明: ⚫ 赋初值可以省略,但分号不能省略。 如:for (; i<=100;i++) sum=sum+i; ⚫ 如果循环终止条件省略,则无限循环。 如:for (i=1; ; i++) sum=sum+1;

●如果循环变量增量部份省略,必须在程序的其他地方有 修改循环变量的语句,否则无法保证循环正常结束 :for(=1;ib&&x
⚫ 如果循环变量增量部份省略,必须在程序的其他地方有 修改循环变量的语句,否则无法保证循环正常结束 如:for (i=1;ib && x<y ;) 3) 字符表达式: for (; (c=getchar()) != ‘\n’;) printf(“%c”,c); 4)break 语句跳出循环。 for (sum=0;; i++) { sum=sum+i; if (i<=100) break; } 6.2 while 语句 1.while 语句用来实现“当循环” 一般形式如下: while (表达式) 语句 表达式为真时(非 0 值),执行 while 语句的内嵌语句。 2.说明: ① while 循环表示当条件表达式的值为真时, 便执行语句。直到 条件为假才结束循环。 并继续执行循环程序外的后续语句。 ② 语句可以是语句体, 此时必须用"{"和"}"括起来。 ③条件表达式可为任意式子。在语句体中要有使得条件表达式为 假值的语句,否则进入死循环。 [例 6.2] 求 1+2+3+….+100

i=1 main i
6.3 do-while 语句 1.do-while 循环的一般格式为: do 语句; while(条件); 2.说明: ① 它先执行循环中的语句, 然后再判断条件是否为真, 如果为 真则继续循环; 如果为假, 则终止循环。因此, do-while 循环至少要执 行一次循环语句。 ②当有许多语句参加循环时, 要用"{"和"}"把它们括起来。 例 6.3 求 1+2+3+‥‥+100 的值。 main() { int i, sum=0; i=1; do { sum=sum+i; i++; } while (i<=100); printf(“%d”,sum) } (1) do-while 结构至少要执行一次循环体。 (2)一般情况下,处理同一问题时,若二者的循环体部分是一样 的,它们的结果也是一样。但若 while 后面的表达式一开始就为假时, 两种循环的结果就不

6.4循环的嵌套 whle、do- while、for可以有多层嵌套。 即在 while、do- while、for的循环体中可内嵌一个循环语句。 maino L,j, k printf("ijkn): for(i=0;i
6.4 循环的嵌套 while、do –while 、for 可以有多层嵌套。 即在 while、do –while 、for 的循环体中可内嵌一个循环语句。 main() { int i, j, k; printf("i j k\n"); for (i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++) printf(%d %d %d\n", i, j, k); } 输出结果为: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 例 6.4 打印九九表(三角形) main() { int i,j; printf("\n"); for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } } 注:程序中用 I 控件行数,用 J 控件打印个数。 ☆☆只有内循环 J 循环一遍后,外循环 I 才改变一次。☆☆

6.5 break语句和 ontinue语句 1. break语句 (1) break语句格式: break (2) break语句通常用在循环语句和开关语句中。当 break用于 开关语句 switch中时,可使程序跳出 switch而执行 switch以后的语句 (3)当 break语句用于do- while、for、 while循环语句中时,可 使程序终止循环而执行循环后面的语句,通常 break语句总是与i语 句联在一起。即满足条件时便跳出循环。 例6.5:统计输入字符个数,直到输入ESc键结束输入。 maino int i =0 while(1) /*设置循环* *变量赋初值* while(c!=13&&c!=27)/*键盘接收字符直到按回车或FSc键* c=getchO printf("%ocn,c) if(c==13)l-- fc=27){i-; break;}*判断若按Fsc键则退出循环* printf("The No is %dn",1) printf(" The end); 注意 ①. break语句对 if-else的条件语句不起作用。 ②.在多层循环中,一个 break语句只向外跳一层 2. continue语句 (1)格式: continue: (2) continue语句的作用是跳过循环本中剩余的语句而强行执行 下一次循环
6.5 break 语句和 ontinue 语句 1.break 语句 (1)break 语句格式: break ; (2) break 语句通常用在循环语句和开关语句中。当 break 用于 开关语句switch 中时, 可使程序跳出switch而执行switch 以后的语句; (3)当 break 语句用于 do-while、for、while 循环语句中时, 可 使程序终止循环而执行循环后面的语句, 通常 break 语句总是与 if 语 句联在一起。 即满足条件时便跳出循环。 例 6.5: 统计输入字符个数,直到输入 Esc 键结束输入。 main() { int i=0; char c; while(1) /*设置循环*/ { c='\0'; /*变量赋初值*/ while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/ { c=getch(); printf("%c\n", c); i++; } if(c==13) i--; if(c==27) {i--; break;} *判断若按 Esc 键则退出循环*/ printf("The No. is %d\n", i); } printf("The end"); } 注意: ①. break 语句对 if-else 的条件语句不起作用。 ②. 在多层循环中, 一个 break 语句只向外跳一层。 2. continue 语句 (1)格式: continue; (2) continue 语句的作用是跳过循环本中剩余的语句而强行执行 下一次循环

(3) continue语句只用在for、whle、do- while等循环体中,常与 if条件语句一起使用,用来加速循环。 例66把100-200之间的不能被3整除的数输出 Maino intn for(n=100n‘a&&eA&&c
(3) continue 语句只用在 for、while、do-while 等循环体中, 常与 if 条件语句一 起使用, 用来加速循环。 例 6.6 把 100-200 之间的不能被 3 整除的数输出 Main() { int n; for (n=100;n‘a’ &&c ‘A’&& c<‘Z’)