第5章_循环结构_3_第1页
第5章_循环结构_3_第2页
第5章_循环结构_3_第3页
第5章_循环结构_3_第4页
第5章_循环结构_3_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 循环结构代表语句循环结构代表语句 break语句和语句和continue语句语句 3 5 程序举例程序举例 4 1 1 2 循环结构的概念循环结构的概念 1 4 循环的嵌套循环的嵌套 第五章第五章 循环结构循环结构 循环结构是结构化程序设计三种基本结构之一,是用来实现循环结构是结构化程序设计三种基本结构之一,是用来实现 在某个条件的控制下,反复地在某个条件的控制下,反复地 执行某些相同的操作的结构。执行某些相同的操作的结构。 循环条件循环条件 循环体(循环体语句)循环体(循环体语句) 循环条件通常由关系表达式或逻辑表达式表示,当然也可以用其循环条件通常由关系表达式或逻辑表达式表示,当然也可以

2、用其 它任意的合法的表达式来表示。若表达式的值为非它任意的合法的表达式来表示。若表达式的值为非0值,则认为循环条值,则认为循环条 件是成立的;反之,认为循环条件不成立。在循环条件中出现的,起件是成立的;反之,认为循环条件不成立。在循环条件中出现的,起 决定性作用的变量被称为决定性作用的变量被称为“循环变量循环变量”或或“循环控制变量循环控制变量”。 循环体语句可以是任意合法的语句,它们被看作为一组顺序结构的语循环体语句可以是任意合法的语句,它们被看作为一组顺序结构的语 句。也就是说,当循环体被执行时,首先执行其中的第一条语句,然句。也就是说,当循环体被执行时,首先执行其中的第一条语句,然 后是

3、第二条语句,以此类推直至最后一条语句被执行完毕,此时即认后是第二条语句,以此类推直至最后一条语句被执行完毕,此时即认 为这一次的循环体执行结束。为这一次的循环体执行结束。 5.1 循环结构的概念循环结构的概念 【例【例5.15.1】输入若干学生的成绩(输】输入若干学生的成绩(输 入为负数时表示输入结束),求入为负数时表示输入结束),求 其最高分及最低分。其最高分及最低分。 No Image No Image 循环体循环体 5.1 循环结构的概念循环结构的概念 while语句的一般形式语句的一般形式 while(循环条件表达式循环条件表达式) 循环体语句循环体语句 No Image while语

4、句的流程图语句的流程图 5.2 while语句语句 【例【例5.25.2】给出以下程序的运行结果、循环体执行的次数及程序】给出以下程序的运行结果、循环体执行的次数及程序 的功能。的功能。 运行结果:运行结果: 3 6 9 12 15 183 6 9 12 15 18 循环体执行的次数为:循环体执行的次数为:2020次次 程序的功能是:程序的功能是: 打印打印1 12020中能被中能被3 3整除的数整除的数 5.2 while语句语句 #include void main( ) int i=1; while(i=20) if(i%3= =0) printf(%5d,i); i+; 【例【例5.4

5、5.4】计算】计算1 1100100的累加和的累加和sumsum。 运行结果:运行结果: sum = 5050 sum = 5050 5.2 while语句语句 #include void main() int i,sum; i=1, sum=0; while( i=100) sum+=i; i+; printf(sum = %dn, sum); 说明:说明: 5.2 while语句语句 1 1)循环条件表达式)循环条件表达式 若循环条件由多个子条件组成,则应根据算法需要,用若循环条件由多个子条件组成,则应根据算法需要,用 逻辑运算符(逻辑运算符( scanf(x=%d, while(x10)

6、 x-; printf(%d ,x); 5.2 while语句语句 3)避免死循环)避免死循环 在在while语句的循环条件表达式或循环体语句中,必须有使语句的循环条件表达式或循环体语句中,必须有使 得循环条件表达式的值变为得循环条件表达式的值变为0(假)的操作,否则循环将无限(假)的操作,否则循环将无限 的执行下去,这样的循环称为的执行下去,这样的循环称为“死循环死循环”。在设计循环结构时。在设计循环结构时 , 一定要注意避免死循环。一定要注意避免死循环。 4)循环体语句)循环体语句 一条语句一条语句 一组语句一组语句 一个空语句一个空语句 循环体语句是一条语句时,其即可与循环体语句是一条语

7、句时,其即可与while同同 行,也可在行,也可在while下一行。下一行。 循环体语句是一组语句时,必须用循环体语句是一组语句时,必须用 括起来,括起来, 组成一个复合语句。组成一个复合语句。循环体语句是空语句时,循环体语句是空语句时,while语句可写为语句可写为 while ( 循环条件表达式循环条件表达式 ) ; dowhiledowhile语句的一般形式语句的一般形式 do 循环体语句循环体语句 while(循环条件表达式循环条件表达式); No Image 流程图流程图 5.3 do while语句语句 【例【例5.9】写出以下程序的运行结果。】写出以下程序的运行结果。 程序的运行

8、结果:程序的运行结果: 1 -2 -3 5.3 do while语句语句 #include void main() int x=3; do printf(%3d, x-=2); while(!(-x); printf(%3d,x); 【例【例5.105.10】用】用dowhiledowhile语句,编写例语句,编写例5.45.4的程序。的程序。 5.3 do while语句语句 #include void main( ) int i, sum; i=1, sum=0; do sum+=i; i+; while( i=100); printf(sum = %dn, sum); 说明:说明: 5.

9、3 do while语句语句 2 2)循环体语句)循环体语句 一条语句或一个空语句一条语句或一个空语句 一组语句一组语句 1 1)循环条件表达式)循环条件表达式 循环条件表达式可以是任意类型的表达式,只要其值为非循环条件表达式可以是任意类型的表达式,只要其值为非0 0 值就认为循环条件为真,进而反复执行循环体语句;只有当其值就认为循环条件为真,进而反复执行循环体语句;只有当其 值为值为0 0时才认为循环条件为假,此时结束循环语句。时才认为循环条件为假,此时结束循环语句。 其左、右大括号其左、右大括号 可以省略(但习可以省略(但习 惯上不省略)惯上不省略) 必须用大括号括必须用大括号括 起来,组

10、成复合起来,组成复合 语句语句 说明:说明: 3 3)避免死循环)避免死循环 在在dowhiledowhile语句的循环条件表达式或循环体语句语句的循环条件表达式或循环体语句 中,必须有使循环条件表达式的值变为中,必须有使循环条件表达式的值变为0 0(假)的操(假)的操 作,否则循环将无限的执行即为死循环。作,否则循环将无限的执行即为死循环。 4 4)dowhiledowhile语句的特点语句的特点 dowhile dowhile语句的特点是语句的特点是“先执行循环体语句,再先执行循环体语句,再 判断循环条件判断循环条件”。因此循环体语句至少被执行一次。因此循环体语句至少被执行一次 。 5.3

11、 do while语句语句 forfor语句的一般形式语句的一般形式 for ( for (表达式表达式1 1;表达式;表达式2 2;表达式;表达式3) 3) 循环体语句循环体语句 为循环变量赋为循环变量赋 初值初值 设定循环条件设定循环条件 给出循环变量的给出循环变量的 增值增值 5.4 for语句语句 for (for (循环变量赋初值;循环条件表达式;循环变量增值循环变量赋初值;循环条件表达式;循环变量增值 ) ) 循环体语句循环体语句 for 语句流程图 No Image 5.4 for语句语句 说明:说明: 1 1) for for语句中三个表达式的省略性语句中三个表达式的省略性 f

12、or for语句中的三个表达式之间以语句中的三个表达式之间以 ” ; ” ” ; ” 相间相间 隔。从理论上来说,三个表达式皆可省略,但是两个隔。从理论上来说,三个表达式皆可省略,但是两个 间隔符间隔符 ” ; ” ” ; ”均不可省略。均不可省略。 2 2)forfor语句的三个表达式可以是任意合法的语句的三个表达式可以是任意合法的C C语言表达语言表达 式。式。 3 3)循环体语句可以是一条语句、一组语句或空语句。)循环体语句可以是一条语句、一组语句或空语句。 5.4 for语句语句 【例【例5.115.11】给出以下程序的运行结果。】给出以下程序的运行结果。 程序的运行结果:程序的运行结

13、果: A2C4E6 5.4 for语句语句 #include void main() char a,b,c; b=1; c=A; for(a=0;a6;a+) if(a%2) putchar(b+a); else putchar(c+a); 【例【例5.135.13】求】求n! n! 5.4 for语句语句 #include void main( ) int n, fact, i; printf(please input n: ); scanf(%d, for( i=1, fact=1; i=n; i+) fact*=i; printf(%d! = %dn,n, fact); No Image

14、 在循环结构中,可能会遇到在某次执行循环体语句的过程中,在循环结构中,可能会遇到在某次执行循环体语句的过程中, 由于某种特殊情况需要使得整个循环语句提前结束的情况。由于某种特殊情况需要使得整个循环语句提前结束的情况。C C 语言中的语言中的breakbreak语句可以用来满足这种需求。语句可以用来满足这种需求。 5.5 break语句语句 break语句的一般形式语句的一般形式 break; break 语句的功能语句的功能 强制结束语句的执行强制结束语句的执行 说明:说明: 1 1)breakbreak语句的使用范围:语句的使用范围: switch switch语句、语句、 while wh

15、ile语句、语句、dodowhilewhile语句及语句及forfor语句。语句。 2 2)breakbreak语句通常与语句通常与if if语句一起使用。语句一起使用。 表示在某种条表示在某种条 件下需强制结束语句的执行。件下需强制结束语句的执行。 【例【例5.145.14】验证以下程序的运行结果,并给出程序的功能。】验证以下程序的运行结果,并给出程序的功能。 5.5 break语句语句 #include void main( ) int i,n; printf(input n: ); scanf(%d, i=n; while(i+=100) if(i%8= =0) printf(“the

16、first number is %d.n“,i); break; 第第1 1次运行程序的结果:次运行程序的结果: input n: 1 input n: 1 the first number is 8. the first number is 8. 第第2 2次运行程序的结果:次运行程序的结果: input n: 82 input n: 82 the first number is 88. the first number is 88. 程序的功能:程序的功能: 求求n n100100之间最小的之间最小的8 8的倍数。的倍数。 【例【例5.155.15】从键盘输入一个正整数,判断它是否是素数,

17、若是素数,则输出】从键盘输入一个正整数,判断它是否是素数,若是素数,则输出 “YES!”“YES!”,否则输出,否则输出“NO“NO!”。 5.5 break语句语句 #include #include void main() int n,i,k; printf(please input n: ); scanf(%d, k=(int)sqrt(n); for(i=2; i=k; i+) if(n%i= =0) break; if(i= =k+1) printf(YES!n); else printf(NO!n); 在循环结构中,可能会遇到在某次执行循环体语句的过程中在循环结构中,可能会遇到在某

18、次执行循环体语句的过程中 ,由于某种特殊情况需要使得本次循环体语句提前结束,转而开,由于某种特殊情况需要使得本次循环体语句提前结束,转而开 始下一次循环的情况。此时,可以用始下一次循环的情况。此时,可以用continue语句来实现。语句来实现。 5.6 continue语句语句 continue语句的一般形式语句的一般形式: continue ; continue语句的功能:语句的功能: 强制结束本次循环体语句的执行,即跳过循环体语句中其后的强制结束本次循环体语句的执行,即跳过循环体语句中其后的 尚未执行的语句,接着进行下一次是否执行循环的判断。尚未执行的语句,接着进行下一次是否执行循环的判断

19、。 说明:说明: 1 1) continue语句适用于语句适用于while语句、语句、dowhile语句和语句和for语句语句 。 2 2)在)在while语句和语句和dowhile语句中,语句中,continue语句将使得程语句将使得程 序转到循环条件表达式处继续执行;在序转到循环条件表达式处继续执行;在for语句中,语句中,continue语语 句将使得程序转到表达式句将使得程序转到表达式3 3处继续执行。处继续执行。 3 3) continue语句通常与语句通常与 if if 语句一起使用。语句一起使用。 【例5.16】给出以下程序的运行结果。 程序的运行结果:程序的运行结果: #*#*

20、! 5.6 continue语句语句 #include void main( ) int i; for(i=1; i5; i+) if(i%2) printf(#); continue; printf(*); printf(!); 假 假 真 真 break 表达式1 表达式2 循环语句的 下一条语句 循环语句的 下一条语句 假 假 真 真 表达式1 表达式2 continue break和和continue的区别的区别 循环的嵌套的概念循环的嵌套的概念 在一个循环语句的循环体内又包含了另一个在一个循环语句的循环体内又包含了另一个完整完整的循环结构,的循环结构, 称为循环的嵌套。内嵌的循环中还

21、可以再嵌套循环,这就是多称为循环的嵌套。内嵌的循环中还可以再嵌套循环,这就是多 重循环。重循环。C C语言中,三种循环结构的语句(语言中,三种循环结构的语句(whilewhile语句、语句、 dodowhilewhile语句和语句和forfor语句)可以相互嵌套。语句)可以相互嵌套。 执行嵌套的循环语句时,将内层的循环语句作为一个独立的执行嵌套的循环语句时,将内层的循环语句作为一个独立的 语句来执行。即在某次执行外层循环的循环体语句的过程中,语句来执行。即在某次执行外层循环的循环体语句的过程中, 当执行到内层的循环语句时,要将内层循环语句执行完毕,才当执行到内层的循环语句时,要将内层循环语句执

22、行完毕,才 能继续执行外层循环循环体中其后尚未执行的语句。也就是说,能继续执行外层循环循环体中其后尚未执行的语句。也就是说, 外层循环的循环体执行一次,内层循环语句完整执行一遍。外层循环的循环体执行一次,内层循环语句完整执行一遍。 嵌套的循环语句执行嵌套的循环语句执行 5.7 循环的嵌套循环的嵌套 【例【例5.18】给出下面程序的运行结果。】给出下面程序的运行结果。 程序的运行结果:程序的运行结果: m=1 5.7 循环的嵌套循环的嵌套 #include void main() int i, j, m=1; for(i=1; i1; j-) /* 内层内层for语句语句 */ if(i*j=3

23、) break; /* break语句属于内层语句属于内层for语句语句 */ m*=i*j; printf(m=%dn,m); 5.7 循环的嵌套循环的嵌套 #include void main( ) int n,k,sum,i,t,fact,f=1; printf(please input n: ); scanf(%d, for( k=1, sum=0; k=n; k+) for(i=1, fact=1; i=k; i+) fact*=i; /* 内层内层for语句求语句求k! */ t=fact*f; /* 变量变量t存放每个加数项存放每个加数项 */ f=-f; sum+=t; pri

24、ntf(1!-2!+ . +%d!=%dn,n,sum); 说明:说明: 1 1)外层循环应完全包含内层循环,内、外层循环不能发)外层循环应完全包含内层循环,内、外层循环不能发 生交叉。生交叉。 2 2) for for语句嵌套语句嵌套forfor语句时,内、外层语句的表达式语句时,内、外层语句的表达式3 3不能不能 写在同一位置。写在同一位置。 3 3) 内外层的循环控制变量不要同名,以免发生混淆。内外层的循环控制变量不要同名,以免发生混淆。 5.7 循环的嵌套循环的嵌套 【例【例5.205.20】输入两个数】输入两个数m m和和n n,求其最大公约数及最小公倍数。,求其最大公约数及最小公倍

25、数。 5.8 程序举例程序举例 #include void main( ) int m,n,a,b; int r; printf(please input m, n:n); scanf(%d,%d, if(m=n) a=m, b=n; else a=n, b=m; r=a%b; while(r!=0) /* 循环条件为循环条件为 r!=0 */ a=b; b=r; r=a%b; printf(The greatest common divisor is: %dn,b); printf(The least common multiple is: %dn,m*n/b); 【例【例5.215.21】

26、利用级数展开式求】利用级数展开式求 的近似值的近似值, ,直到某一项的值小于直到某一项的值小于1010-6 -6为止。为止。 /41 - 1/3 + 1/5 - 1/7 + /41 - 1/3 + 1/5 - 1/7 + 5.8 程序举例程序举例 #include void main( ) double t=1, s=0; int f=1; do s+=f/t; f=-f; t+=2; while(1/ t =1e-6) ; printf( %lf, 4*s) ; 【例【例5.225.22】打印】打印“水仙花数水仙花数”。所谓。所谓“水仙花数水仙花数”是指一个是指一个3 3位数,其各位数字位数

27、,其各位数字 的立方和等于该数本身。例如,的立方和等于该数本身。例如,153153是一个水仙花数,因为是一个水仙花数,因为153=1153=13 3+5+53 3+3+33 3。 5.8 程序举例程序举例 #include #include void main( ) int n,a,b,c; for(n=100; n1000; n+) a=n/100; b=n/10%10; c=n%10; if(n=(int)pow(a,3)+(int)pow(b,3)+(int)pow(c,3) printf(%5d,n); printf(n); 【例【例5.235.23】编程求】编程求FibonacciF

28、ibonacci数列的前数列的前n n项(项(3n303n30)。要求:每行打印)。要求:每行打印5 5个。个。 FibonacciFibonacci数列的第数列的第1 1项和第项和第2 2项为项为1 1,此后每项为其前两项之和。即,此后每项为其前两项之和。即FibonacciFibonacci数数 列为列为 1 1,1 1,2 2,3 3,5 5,8 8,。 5.8 程序举例程序举例 #include void main( ) int f1,f2,f; int n,i; printf(please input n(n=30): ); scanf(%d, printf(n); printf(t

29、he fibonaccin); f1=f2=1; printf(%-8d%-8d,f1,f2); for(i=3; i=n; i+) f=f1+f2; printf(“%-8d”,f); if(i%5=0) printf(“n”); /* 按照每行按照每行5个的格式输出个的格式输出 */ f1=f2, f2=f; printf(n); 【例【例5.245.24】编程输出】编程输出200200300300间的素数。间的素数。 5.8 程序举例程序举例 #include #include void main( ) int n,i, k; int flag,count=0; for(n=201; n

30、=299; n+=2) flag=1; /*每次判断前每次判断前, 都需使都需使flag=1*/ k=(int)sqrt(n); for(i=2; i=k; i+) if(n%i= =0) flag=0; break; if(flag) count+; printf(%5d,n); if(count%4= =0) printf(n); printf(n); 【例5.25】打印如下图形。 5.8 程序举例程序举例 * * * * * * * * * * * * * #include void main( ) int i,j; for(i=1; i4; i+) for(j=1; j=3-i; j+

31、) printf(); for(j=1; j=2*i-1; j+) printf(* ); putchar(n); for(i=1; i3; i+) for(j=1; j=i; j+) printf(); for(j=1; j=5-2*i; j+) printf(* ); putchar(n); 编写一个智力测验小游戏。由计算机给出一道编写一个智力测验小游戏。由计算机给出一道1 1100100的整数的加的整数的加 法,然后由用户输入答案,若回答正确,则结束游戏;否则由计算机给法,然后由用户输入答案,若回答正确,则结束游戏;否则由计算机给 出提示,告诉用户其答案偏大或偏小,直到用户答对为止。游戏

32、结束时出提示,告诉用户其答案偏大或偏小,直到用户答对为止。游戏结束时 ,由计算机给出用户回答出正确答案所用的次数。,由计算机给出用户回答出正确答案所用的次数。 分析:分析: 两个加数是由计算机给出的随机整数,两个加数是由计算机给出的随机整数,因此需使用头文件因此需使用头文件stdlib.hstdlib.h中中 的的rand( )rand( )函数。函数。rand( )rand( )函数的功能是:返回一个函数的功能是:返回一个0 03276732767之间的随机整之间的随机整 数。两个加数都可由表达式数。两个加数都可由表达式rand( ) %100+1rand( ) %100+1求得求得。 补充

33、:案例分析补充:案例分析 程序如下:程序如下: #include #include void main( ) int x,y,answer; int count; count=0; x=rand( )%100+1; y=rand( )%100+1; do printf(%3d+%3d = ,x,y); scanf(%d, count+; 补充:补充: 案例分析案例分析 if(answerx+y) printf(Wrong! Too High!n); if(answerx+y) printf(Wrong! Too low!n); while(answer!=x+y); printf(Right!

34、n); printf(Number of times: %dn,count); 程序第程序第1 1次运行结果如下:次运行结果如下: 42+ 68 = 100 Wrong 42+ 68 = 100 Wrong!Too lowToo low! 42+ 68 = 120 42+ 68 = 120 Wrong Wrong!Too highToo high! 42+ 68 = 110 42+ 68 = 110 Right Right! Number of times: 3 Number of times: 3 补充:补充: 案例分析案例分析 程序第程序第2 2次运行结果如下:次运行结果如下: 42+ 6

35、8 = 110 42+ 68 = 110 Right Right! Number of times: 1 Number of times: 1 通过这两次程序的执行可以看出,通过这两次程序的执行可以看出, 每次程序给出的随机数都是每次程序给出的随机数都是4242和和6868。 实际上,每次运行程序时所得到的随实际上,每次运行程序时所得到的随 机数都是机数都是4242和和6868,这是为什么?怎么,这是为什么?怎么 做才能使得每次执行程序时得到不同做才能使得每次执行程序时得到不同 的随机数序列?事实上,如果在程序的随机数序列?事实上,如果在程序 中仅使用中仅使用rand()rand()函数来求随

36、机数,那函数来求随机数,那 么每次执行程序时都只会得到相同的么每次执行程序时都只会得到相同的 随机数序列。而若想使得程序每次执随机数序列。而若想使得程序每次执 行时获得不同的行时获得不同的随机数序列随机数序列,则还需,则还需 使用另两个标准函数:头文件使用另两个标准函数:头文件stdlib.hstdlib.h 中的中的srand()srand()函数和头文件函数和头文件time.htime.h中的中的 time()time()函数函数加以辅助。加以辅助。 程序可作如下修改:程序可作如下修改: #include #include #include void main() int x,y,answ

37、er; int count; count=0; srand(unsigned)time(0); /* 使每次执行程序得到不同的随机数序列使每次执行程序得到不同的随机数序列*/ x=rand()%100+1; y=rand()%100+1; 补充:补充: 案例分析案例分析 do printf(%3d+%3d = ,x,y); scanf(%d, count+; if(answerx+y) printf(Wrong! Too High!n); if(answerx+y) printf(Wrong! Too low!n); while(answer!=x+y); printf(Right!n); p

38、rintf(Number of times: %dn,count); 修改后的程序第一次运行时得到的两个加数是修改后的程序第一次运行时得到的两个加数是3434和和7474,第二次运行时得,第二次运行时得 到的两个加数变为到的两个加数变为4848和和6565。 补充:补充: 案例分析案例分析 C C语言提供了语言提供了3 3种循环结构控制语句种循环结构控制语句whilewhile语句、语句、dowhiledowhile语句、语句、 forfor语句。它们各有特点,编程时应根据不同的情况选择最合语句。它们各有特点,编程时应根据不同的情况选择最合 适的语句,以便更好地实现程序的功能。适的语句,以便更

39、好地实现程序的功能。 (1 1) 3 3种循环语句都用来实现循环结构,一般情况下它们可以种循环语句都用来实现循环结构,一般情况下它们可以 相互替代。相互替代。 (2 2)whilewhile语句常用来实现语句常用来实现“当型循环结构当型循环结构”。执行时先判断。执行时先判断 循环条件,当循环条件成立时才执行循环体,否则结束循环循环条件,当循环条件成立时才执行循环体,否则结束循环 。循环体语句有可能一次也不执行。循环体语句有可能一次也不执行。 (3 3)do whiledo while语句常用来实现语句常用来实现“直到型循环结构直到型循环结构”。执行时。执行时 先执行循环体,再判断循环条件,当循

40、环条件成立时重复执先执行循环体,再判断循环条件,当循环条件成立时重复执 行循环体,直到循环条件不成立,结束循环。循环体语句至行循环体,直到循环条件不成立,结束循环。循环体语句至 少执行一次。少执行一次。 本章小结本章小结 (4 4)for for 语句通常用来实现语句通常用来实现“当型循环结构当型循环结构”。既可用于循环次数已知的情。既可用于循环次数已知的情 况,也可用于循环次数未知的情况。尤其适用于以一个循环变量从初始况,也可用于循环次数未知的情况。尤其适用于以一个循环变量从初始 值变化到最终值,且每次其值变化的增量(即步长)均相等的循环结构值变化到最终值,且每次其值变化的增量(即步长)均相

41、等的循环结构 中。此时一般情况可通过公式:中。此时一般情况可通过公式:( (最终值最终值- -初始值初始值)/ )/ 步长来判断循环体被步长来判断循环体被 执行的次数。执行的次数。forfor语句的应用最灵活,也最广泛,功能最强。它可以完全语句的应用最灵活,也最广泛,功能最强。它可以完全 替代替代whilewhile语句。语句。 (5 5)各种循环语句可以相互嵌套组成多重循环。循环之间可以并列但不能)各种循环语句可以相互嵌套组成多重循环。循环之间可以并列但不能 交叉。执行时每执行一次外层循环的循环体时,内层循环要完整地执行交叉。执行时每执行一次外层循环的循环体时,内层循环要完整地执行 一遍。一

42、遍。 (6 6)breakbreak语句用于提前语句用于提前结束当前循环结束当前循环的执行;的执行;conitnueconitnue语句用于提前语句用于提前结束结束 本次循环体本次循环体语句的执行。另外,在语句的执行。另外,在C C语言中,不仅语言中,不仅breakbreak语句和语句和continuecontinue语语 句具有提前结束语句或循环体的功能,头文件句具有提前结束语句或循环体的功能,头文件stdlib.hstdlib.h中的中的exit(0)exit(0)函数也具函数也具 有类似功能。有类似功能。 本章小结本章小结 (7)break语句、语句、continue语句及语句及exit

43、(0)函数之间的区别为:函数之间的区别为: break语句:结束整个循环语句,不再判断循环条件,转而执语句:结束整个循环语句,不再判断循环条件,转而执 行循环语句的下一条语句。行循环语句的下一条语句。break语句还可用于语句还可用于switch语句语句 中,用来强制结束中,用来强制结束switch语句。而语句。而continue语句并不能够用语句并不能够用 于于switch语句。语句。 continue语句:仅仅结束本次循环体语句的执行,跳过循环体语句:仅仅结束本次循环体语句的执行,跳过循环体 中尚未执行的其它循环体语句,继续执行程序。在中尚未执行的其它循环体语句,继续执行程序。在while

44、语语 句和句和dowhile语句中,程序将转至循环条件处,再次判断语句中,程序将转至循环条件处,再次判断 循环条件;在循环条件;在for语句中,程序将转至表达式语句中,程序将转至表达式3处进行求解。处进行求解。 exit(0)函数:结束整个程序的执行,其后所有的尚未执行的程函数:结束整个程序的执行,其后所有的尚未执行的程 序语句均不再执行。序语句均不再执行。exit(0)函数不仅能用于循环语句和函数不仅能用于循环语句和 switch语句中,还可根据需要在任何语句中使用。语句中,还可根据需要在任何语句中使用。 本章小结本章小结 1.(2012年年3月选择题第月选择题第22题)有以下程序段:题)有

45、以下程序段: int t=0; while(t=1) 以下叙述中正确的是(以下叙述中正确的是( )。)。 A) 循环条件表达式的值为循环条件表达式的值为0 B) 循环条件表达式的值为循环条件表达式的值为1 C) 循环条件表达式不合法循环条件表达式不合法 D) 以上说法都不对以上说法都不对 计算机等级考试二级真题解析计算机等级考试二级真题解析 【答案】【答案】 B B 2. (2011年年3月选择题第月选择题第26题)有以下程序段题)有以下程序段 #include void main() while( getchar( )!=n); 以下叙述中正确的是(以下叙述中正确的是( )。)。 A)此此w

46、hile 语句将无限循环语句将无限循环 B) getchar()不可以出现在不可以出现在while 语句的条件表达式中语句的条件表达式中 C)当执行此当执行此while 语句时,只有按回车键程序才能继续执行语句时,只有按回车键程序才能继续执行 D)当执行此当执行此while 语句时,按任意键程序就能继续执行语句时,按任意键程序就能继续执行 计算机等级考试二级真题解析计算机等级考试二级真题解析 【答案】【答案】 C C 3.(2009年年9月选择题第月选择题第21题)有以下程序题)有以下程序 #include void main() int n=2,k=0; while(k+ printf(%d

47、 %dn ,k, n); 程序运行后的输出结果是(程序运行后的输出结果是( )。)。 A) 0 2 B)1 3 C)5 7 D)1 2 计算机等级考试二级真题解析计算机等级考试二级真题解析 【答案】【答案】 D D 4. (2010年年3月选择题第月选择题第21题)有以下程序题)有以下程序 #include void main() int a=1, b=2; for(;a8;a+) b+=a;a+=2; printf(%d,%dn,a,b); 程序运行后的输出结果是(程序运行后的输出结果是( )。)。 A)9,18 B)8,11 C)7,11 D)10,14 计算机等级考试二级真题解析计算机等

48、级考试二级真题解析 【答案】【答案】 D D 5. (2009年年3月选择题第月选择题第20题)以下程序段中的变量已正确题)以下程序段中的变量已正确 定义定义 for(i=0;i4;i+,j+) for(k=1;k3;k+); printf(*); 程序段的输出结果是(程序段的输出结果是( )。)。 A)* B)* C)* D)* 计算机等级考试二级真题解析计算机等级考试二级真题解析 【答案】【答案】D 6. 6. (20112011年年3 3月选择题第月选择题第2020题)有以下程序段题)有以下程序段 int i,n;int i,n; for(i=0;i8;i+)for(i=0;i8;i+)

49、 n=rand( )%5; n=rand( )%5; switch (n) switch (n) case 1: case 1: case 3: case 3: printf(%dn,n); break;printf(%dn,n); break; case 2: case 2: case 4: case 4: printf(%dn,n); continue;printf(%dn,n); continue; case 0: case 0: exit(0);exit(0); printf(%dn,n); printf(%dn,n); 计算机等级考试二级真题解析计算机等级考试二级真题解析 以下关于程

50、序段执行情况的叙述,以下关于程序段执行情况的叙述, 正确的是(正确的是( )。)。 A)for A)for 循环语句固定执行循环语句固定执行8 8 次次 B) B)当产生的随机数当产生的随机数n n 为为4 4 时结束时结束 循环操作循环操作 C) C)当产生的随机数当产生的随机数n n 为为1 1 和和2 2 时不时不 做任何操作做任何操作 D) D)当产生的随机数当产生的随机数n n 为为0 0 时结束时结束 程序运行程序运行 【答案】【答案】D D 7. (2012年年3月填空题第月填空题第8题)下列程序的输出结果是(题)下列程序的输出结果是( )。)。 #include void main() int i; for(i=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论