第六章 循环控制 本章要点 循环的基本概念 不同形式的循环控制 多重循环问题 6.1 概述 求:
方法一(用if语句和goto语句构成循环) #include<stdio.h> void main( ) { int i,sum=0; i=1; loop: if(i<=100) { sum=sum+i; i++; goto loop; } printf("%d\n",sum); } 方法二(用for 语句实现循环) for语句的执行过程: (1) 先求解表达式1。 (2) 求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则结束循环,转到第(5)步。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执行。 (5) 循环结束,执行for语句下面的一个语句
#include <stdio.h> void main() { int i,sum=0; for(i=1;i<=100;i++) { sum=sum+i; } while(i<=100); printf("%d\n",sum); }
方法三(while语句实现循环) 解题思路:while语句用来实现“当型”循环结构。 一般形式:while (表达式) 语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。
#include <stdio.h> void main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d\n",sum); }
方法四(用do-while语句实现循环) 解题思路 do-while语句的特点:先执行循环体,然后判断循环条件是否成立。 一般形式: do 循环体语句 while (表达式); 执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。
#include <stdio.h> void main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100); printf("%d\n",sum); }
6.2 循环的嵌套 6.2.1 break语句 循体内又包含另一个完整的循环结构称为循环的嵌套。内嵌的循环中还可以嵌套循环,就是多层循环。 三种循环(while循环、do-while循环和for循环)可以互相嵌套。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。 注意: break语句对if-else的条件语句不起作用;在多层循环中,一个break语句只向外跳一层。 例: float pi=3.14159; for(r=1;r<=10;r++) { area=pi*r*r; if(area>100) break; printf(″r=%f,area=%f\n″,r,area); } 说明:程序的作用是计算r=1到r=10时的圆面积,直到面积area大于100为止。从上面的for循环可以看到:当area>100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环。 6.2.2 continue语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定. 一般形式: continue; 例如: #include <stdio.h> int main(void) { int i=0; char c; while(1){ /*设置循环*/ c='\0'; /*变量赋初值*/ while(c!=13&&c!=27){ /*键盘接收字符直到按回车或Esc键*/ c=getch(); printf("%c\n", c); } if(c==27) break; /*判断若按Esc键则退出循环*/ i++; printf("The No. is %d\n", i); } printf("The end"); return 0; } 6.2.3continue语句和break语句的区别 continue语句只结束本次循环,而不是终止整个循环的执行。 while(表达式1) for { … if(表达式2) continue; … }0 continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。 #include <stdio.h> int main(void) { char c; while(c!=13) { /*不是回车符则循环*/ c=getch(); if(c==0X1B) continue; /*若按Esc键不输出便进行下次循环*/ printf("%c\n", c); } return 0; } 6.3 几种循环的比较 (1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。 (2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++,或i=i+1等)。 概括起来,C语言有四种循环:goto语句构成的循环、while循环、do-while循环和for循环。 四种循环的比较: 四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环,不但因为其蹩脚,我们也极力建议不要使用goto语句,尽量使用其他语句代替。 ① while和do-while循环,循环体中应包括使循环趋于结束的语句。 ② for语句功能最强,也最常用。 ③ 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之 前完成,而for语句可以在表达式1中实现循环变量的初始化。 总结:for循环是最常用的循环,它的功能强大,可以代替其他循环。
|
|
来自: running_to_you > 《第六章 循环控制》