C语言课件第五章循环结构程序设计_第1页
C语言课件第五章循环结构程序设计_第2页
C语言课件第五章循环结构程序设计_第3页
C语言课件第五章循环结构程序设计_第4页
C语言课件第五章循环结构程序设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、一、概述循环:同一程序段重复执行若干次循环:同一程序段重复执行若干次 实现循环的语句:实现循环的语句: goto goto 与与 if if 合用合用 while dowhile( ) while dowhile( ) for for 如:如: rep1: i+; rep1: i+; sum=sum+i; sum=sum+i; if i=100 goto rep1 if i=100 goto rep1 二、goto语句及其构成的循环一般形式:一般形式:goto goto 语句标号语句标号 说明:说明: (1 1)gotogoto语句使控制无条件转到标号所指定的语句处开语句使控制无条件转到标号所

2、指定的语句处开始往下执行;始往下执行;(2 2)语句标号必须)语句标号必须是标识符是标识符而不是常量。而不是常量。 如:如:goto abc goto abc 合法,合法, 而而goto 35 goto 35 则非法;则非法;(3 3)与循环语句配合使用时,)与循环语句配合使用时,可从循环体内跳到循环体可从循环体内跳到循环体外,而不能从循环体外跳到循环体内外,而不能从循环体外跳到循环体内; (4 4)gotogoto语句转移的方向可前可后;语句转移的方向可前可后; (5 5)与)与ifif语句配合使用时可构成循环语句配合使用时可构成循环 main( ) main( ) int i=1, sum

3、=0; int i=1, sum=0; if(i=100) if(i=100) sum=sum+i; sum=sum+i; i+; i+; goto loop; goto loop; p r i n t f ( “ s u m = % d p r i n t f ( “ s u m = % d n”,sum); n”,sum); 运行结果:运行结果: sum=5050sum=5050 三、while 语句形式:形式:while(while(表达式表达式) )语句语句 main( ) main( ) int int i=1,sum=0;i=1,sum=0; while(while(i=100i=

4、100) ) sum=sum+i; sum=sum+i; i+i+; ; printf (“sum=%dn”,sum); printf (“sum=%dn”,sum); 运行结果:运行结果: sum=5050sum=5050 三要素:三要素:1 1、注意、注意给出循环的初始条件给出循环的初始条件,如本例中,如本例中“sum=0“sum=0、i=1”i=1”。2 2、循环体包含、循环体包含一个以上的语句时一个以上的语句时,用大括号括起来,形,用大括号括起来,形成复合语句。成复合语句。3 3、循环体中必须有使循环趋于结束的语句,否则程序进、循环体中必须有使循环趋于结束的语句,否则程序进入入“死循环

5、死循环”(不结束)。(不结束)。问题的提出:(问题的提出:(1 1)什么情况下循环体一句也不执行?)什么情况下循环体一句也不执行? (2 2)什么情况下出现死循环)什么情况下出现死循环 (3 3)哪一句使循环趋于结束)哪一句使循环趋于结束 三要素:三要素:初始化、条件表达式、状态变化初始化、条件表达式、状态变化x=0;y=0;x=0;y=0;四、dowhile语句形式:形式: do do 语句语句 while( while(表达式表达式) ); 操作:先执行语句,再计算表达式,为真时,继续执行语操作:先执行语句,再计算表达式,为真时,继续执行语 句,为假时,退出循环。句,为假时,退出循环。ma

6、in( ) main( ) int i=1;sum=0; int i=1;sum=0; do do sum=sum+i; sum=sum+i; i+; i+; while(i=100); while(i=100); printf (“sum=%d n”,sum); printf (“sum=%d n”,sum); 运行结果:运行结果: sum=5050sum=5050 WhileWhile语句与语句与Do WhileDo While语句的比较语句的比较: 在一般情况下,用在一般情况下,用whilewhile和和do-whiledo-while语句解决同一问题语句解决同一问题时,若二者的循环体部

7、分是一样的,它们的结果也一样。时,若二者的循环体部分是一样的,它们的结果也一样。但但当当whilewhile后面的后面的“表达式表达式”一开始就为一开始就为“假假”时时,两种,两种循循环的结果不同。这是因为此时环的结果不同。这是因为此时whilewhile循环的循环不被执循环的循环不被执行,而行,而do-whiledo-while循环的循环体被执行一次。循环的循环体被执行一次。例例 求求i+(i+1)+(i+2)+.+10,其中,其中,i由键盘输入。(用由键盘输入。(用while和和do-while两种语句分别编程序)。两种语句分别编程序)。 do- whiledo- while循环程序循环程

8、序 main() main() int sum=0,i; int sum=0,i; scanf(%d,&i); scanf(%d,&i); do do sum = sum + i; sum = sum + i; i+; i+; while(i= 10); while(i= 10); printf(%d,sum); printf(%d,sum); whilewhile循环程序循环程序 main() main() int sum=0,i; int sum=0,i; scanf(%d,&i); scanf(%d,&i); while(i = 10) while(i = 10) sum = sum +

9、 i; sum = sum + i; i+; i+; printf(%d,sum); printf(%d,sum); do- whiledo- while循环程序循环程序 main() main() int sum=0,i; int sum=0,i; scanf(%d,&i); scanf(%d,&i); do do sum = sum + i; sum = sum + i; i+; i+; while(i= 10); while(i= 10); printf(%d,sum); printf(%d,sum); 五、for 语句forfor语句是使用最为灵活的一种循环语句语句是使用最为灵活的一种

10、循环语句 形式:形式: for (for (表达式表达式1 1;表达式;表达式2 2;表达式;表达式3) 3) 语句语句 其中:其中: 表达式表达式1 1:循环变量赋初值:循环变量赋初值 表达式表达式2 2:循环判断条件,为真时继续循环,为假时,:循环判断条件,为真时继续循环,为假时, 结束循环;结束循环; 表达式表达式3 3:循环变量的增量。:循环变量的增量。 执行过程,请见右图:执行过程,请见右图:例例 求求n (0n=100)n (0n=100) main( )main( )int i,int i,sum=0sum=0; ; for(for(i=1i=1; ; i=100i=100; ;

11、 i+i+) ) sum=sum+i; sum=sum+i; printf (“sum=%d n”, sum); printf (“sum=%d n”, sum); 运行结果:运行结果: sum=5050sum=5050 三要素:三要素:初始化初始化、条件表达式条件表达式、状态变化状态变化比较比较whilewhile中的三要素位置中的三要素位置几点说明:几点说明: ( (是不是真的省略了?是不是真的省略了?) )1.1.省表达式省表达式1 1,此前要对循环变量置初值,但,此前要对循环变量置初值,但“;”不能不能省省。 如:如: i=1; s=0;i=1; s=0; for(; i=100; i

12、+) s=s+i; for(; i100 for (i=1; ; i+) s=s+i;if i100 break;break; 3.3.省表达式省表达式3 3,要在循环体内有使循环变量增量的语句,要在循环体内有使循环变量增量的语句 如:如: for(i=1 ;for(i=1 ; i=100 ; ) s=s+i ; i=100 ; ) s=s+i ; i+;i+; 4.4.省表达式省表达式 1 1和和 3 3 ,使循环变量有初值,能使循环变量,使循环变量有初值,能使循环变量增量。如:增量。如: i=1; s=0;i=1; s=0; for( ; i=100 ; ) s=s+i; for( ; i

13、=100 ; ) s=s+i; i+;i+; 5.5.省表达式省表达式 1 1,2 2,3 3,如,如: : for( ; ; )for( ; ; ) 则相当于:则相当于:while( 1 ) while( 1 ) 循环无终止。即循环无终止。即无限循环无限循环。6.6.表达式表达式1 1与循环变量可以有关也可无关,与循环变量可以有关也可无关,也可以是逗号也可以是逗号表达式表达式。 如:如: for ( s=0 , i=1 for ( s=0 , i=1 ; ; i=100 i=100 ; ; i+ ) s=s+i; i+ ) s=s+i; for ( for ( i=0 , j=100i=0

14、, j=100 ; ; ij ij ; ; i+ , j-i+ , j-) k=k+i+j; ) k=k+i+j; 7 7、表达式表达式2 2可以是关系、逻辑、算术、字符表达式,非可以是关系、逻辑、算术、字符表达式,非0 0时,执行循环体,为时,执行循环体,为0 0时退出循环。时退出循环。 8 8、forfor语句的变形举例。语句的变形举例。 例例1 1、for(sum=0for(sum=0;i=100i=100;i+) sum = sum + ii+) sum = sum + i; 例例2 2、for(sum=0,i=1for(sum=0,i=1;i=100i=100;i+) sum = s

15、um + ii+) sum = sum + i; 例例3 3、for(i=0,j=100for(i=0,j=100;i=ji=j;i+,j-) k = i + ji+,j-) k = i + j; 例例4 4、for(i=0for(i=0;(c=getchar() != n(c=getchar() != n;i += c)i += c); 例例 #include “stdio.h”#include “stdio.h”main( ) main( ) int i ; char c; int i ; char c; for(i=0;(c=getchar()!=n;i+=for(i=0;(c=getc

16、har()!=n;i+=c) c) printf(“i=%d n”, i ); printf(“i=%d n”, i ); 输入:输入:a b c d a b c d 输出:输出: i=0 i=0 i=97 i=97 i=195 i=195 i=294i=294 六、循环的嵌套 循环嵌套:一个循环(称为循环嵌套:一个循环(称为“外循环外循环”)的循环体内包含)的循环体内包含另一个循环(称为另一个循环(称为“内循环内循环”)。内循环中还可以包含循)。内循环中还可以包含循环,形成多层循环。(循环嵌套的层数理论上无限制)环,形成多层循环。(循环嵌套的层数理论上无限制)三种循环(三种循环(whilew

17、hile循环、循环、do-whiledo-while循环、循环、forfor循环)可以循环)可以互相嵌套。互相嵌套。while()while() while()while() . dodo dodo . while();while(); while(); while(); 一个具有时、分、一个具有时、分、秒的闹钟如何用循秒的闹钟如何用循环表示?环表示?for(;)for(;) for(;)for(;) . while()while() dodo . while();while(); for(;)for(;) while()while() . dodo for(;)for(;) . while(

18、); while(); 多重循环的使用与单一循环完全相同,但应特别注意内、多重循环的使用与单一循环完全相同,但应特别注意内、外层循环条件的变化。外层循环条件的变化。 例。计算例。计算3 3组组1414累加求和。累加求和。main( ) main( ) int i,j,s=0; int i,j,s=0; for(i=1;i=3;i+) for(i=1;i=3;i+) for(j=1;j=4;j+) for(j=1;j 100area 100时结束程序的运行。时结束程序的运行。 main( ) main( ) int r ; float pi=3.14159, area; int r ; floa

19、t pi=3.14159, area; for( r=1 ; r =10 ; r+ ) for( r=1 ; r 100) break; if(area 100) break; printf( “r=%d , area=%5. 2f n”, r, area); printf( “r=%d , area=%5. 2f n”, r, area); 输出:输出: r=1, area=3.14 r=1, area=3.14 r=2, area=12.57 r=2, area=12.57 r=3, area=28.27 r=3, area=28.27 r=4, area=50.27 r=4, area=

20、50.27 r=5, area=78.85 r=5, area=78.85 * * 当当 r=6 r=6时,时, area=113.10 area=113.10 故此值没有被输出故此值没有被输出 * * 2 2、continuecontinue语句语句 一般形式:一般形式:continue; continue; 功能:跳过循环体中后面的语句,功能:跳过循环体中后面的语句,进入进入本循环结构本循环结构的下的下次循环次循环, 在在while while 和和 do while do while中立即转到表达式中立即转到表达式进行判断。进行判断。 在在forfor语句中,转到表达式语句中,转到表达式

21、3 3进行增量,再转到表达式进行增量,再转到表达式2 2进进行判断。行判断。 continue continue也属控制类语句,只能出现在也属控制类语句,只能出现在while, while, dowhile, fordowhile, for循环语句中。循环语句中。 例例 把把100 - 120100 - 120之间不能被之间不能被3 3整除的数输出。整除的数输出。 main( ) main( ) int n; int n; for(n=100; n=120; n+) for(n=100; n=3) (n=3) main() main() long int f1,f2; int i; long int f1,f2; int i; f1=1; f2=1; f1=1; f2=1; for(i=1; i=20; i+) for(i=1; i=20; i+) printf (“%12ld %12ld “,f1, f2); printf (“%12ld %12ld “,f1, f2); if( i%2 =0) printf(“n”); if( i%2 =0) printf(“n”); f1=f1+f2; f2=f2+f1; f1=f1+f2; f2=f2+f1; 例例 判判 m m 是否是素数是否是素数 #includ

温馨提示

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

评论

0/150

提交评论