第5章 循环程序设计.ppt_第1页
第5章 循环程序设计.ppt_第2页
第5章 循环程序设计.ppt_第3页
第5章 循环程序设计.ppt_第4页
第5章 循环程序设计.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 C语言程序设计,第 5 讲,第5章循环程序设计,掌握C语言中while循环的用法。 掌握C语言中do-while循环的用法。 掌握C语言中for循环的用法。 能对for语句和while语句进行正确的转换。 掌握并能熟练地运用循环的嵌套设计。,目标要求,第5章循环程序设计,while和do-while循环 for循环 循环的嵌套 break语句与continue语句 for循环与while循环的转换 典型例题评析 小结 课后作业,讲课提纲,第5章循环程序设计,5.2.1 while循环 5.2.2 do-while循环 5.2.3 while循环和do-while循环的比较,5.2 while

2、和do-while循环,第5章循环程序设计,5.3.1 for语句的一般形式 5.3.2 for语句的殊形式,5.3 for循环,第5章循环程序设计,5.5.1 break语句 5.5.2 continue语句,5.5 break语句与continue语句,第5章循环程序设计,while语句的格式: while(表达式) 语句(组) while语句的流程图,5.2.1 while循环,第5章循环程序设计,用法说明: 对于while语句的学习,应注意以下几点: 如果循环体包含1个以上的语句,即复合语句时,应该用大括弧括起来,否则while语句的循环体只有1个语句,将会出现算法上的错误。 在循环体

3、内必须有循环趋于结束的语句,否则将导致死循环。 在循环开始前,当循环条件不满足时,while语句中的循环体将1次都不执行。,5.2.1 while循环,第5章循环程序设计,do-while循环的格式: do 循环体语句 while(表达式);,5.2.2 do-while循环,第5章循环程序设计,do-while循环的执行流程,5.2.2 do-while循环,第5章循环程序设计,用法说明: 在使用do-while循环时应注意以下几个要点: 关键字“do”后无任何符号。 关键字“while”后的表达式要使用小括弧括起来,并且括弧外一定要添加分号“;”,否则将出现语法错误。 循环体中如果包含多条

4、语句,同样应该使用大括弧括起来作为一条复合语句,否则出现算法上的错误。 在循环体内也必须有使循环趋于结束的语句。,5.2.2 do-while循环,第5章循环程序设计,从形式上讲,while语句要比do-while语句简单些,while语句表达式的括弧外没有“;”,而do-while语句表达式括弧外则有“;”。 在一般情况下,用while循环和do-while循环处理同一问题时,若两者的循环体部分是一样的,它们的结果也是一样的。但是,如果while语句后面的表达式的值一开始就为假”时,两种循环的结果是不同的。,5.2.3 while循环和do-while循环的比较,第5章循环程序设计,for循

5、环的基本格式: for(表达式1;表达式2;表达式3) 语句,5.3.1 for语句的一般形式,第5章循环程序设计,for循环的执行流程图:,5.3.1 for语句的一般形式,第5章循环程序设计,用法说明。 在使用for循环时,必须注意以下要点: for语句的圆括弧后没有“;”如果在for语句的圆括弧后添加“;”虽然不会发生语法错误,但是此时的循环体将变为1个空语句,可能使程序不能获得正确的结果。 “表达式1”、“表达式2”和“表达式3”通常称为for循环的3个分量,均可以为任意表达式,相互之间使用“;”分开。for语句中的圆括弧内有且只有两个“;”,第3个表达式后没有“;”。 3个表达式的用

6、途各不相同:“表达式1”在循环前对循环控制变量进行初始化;“表达式2”用来判断循环条件是否成立;“表达式3”用来修改循环变量的值。 for语句中的循环体语句可以是一个单独的语句,也可以是一个复合语句。当是复合语句时,一定要用大括弧将其括起来,否则将会出现算法上的错误。 3个表达式中的某一个或几个可以省略,但是相应的分号必须保留,例如: for(; ;) 循环控制变量赋初值只进行1次,一旦循环体被执行,立即进行修改循环变量的操作。,5.3.1 for语句的一般形式,第5章循环程序设计,for语句的一般形式中的“表达式3”可以省略,此时分号同样不能省略。此外,还必须设法保证循环变量的增值。例如:

7、for(n=1;n10;n+) s=s+n; 等效于: for(n=1;n10;) s=s+n; n+; ,5.3.2 for语句的殊形式,第5章循环程序设计,for语句的一般形式中的“表达式1”和“表达式3”均可以省略,只保留“表达式2”和两个分号。此时既要在for语句之前给循环变量赋初值,又要设法保证循环变量的增值。例如: for(n=1;n10;n+) s=s+n; 等效于: n=1; for(;n10;) s=s+n; n+; ,5.3.2 for语句的殊形式,第5章循环程序设计,此外,“表达式2”也可省略,如果省略“表达式2”,不会造成语法上的错误。但是,如果循环体内没有循环趋于结束

8、的语句,程序将进入死循环。一般不提倡这种省略,尤其对于初学者更是如此。,5.3.2 for语句的殊形式,第5章循环程序设计,二重循环的结构: 由for语句构成的二重循环结构的格式为: for(表达式1;表达式2;表达式3) 语句1; for(表达式4;表达式5;表达式6) 语句2; 语句3; ,5.4 循环的嵌套,第5章循环程序设计,二重循环的执行顺序为: 以第1层for循环为入口,通过“表达式1”对循环控制变量赋初值,接着使用“表达式2”进行条件判断。若“表达式2”为“真”,则执行语句1、第2层for循环和语句3(注意:语句2是第2层for语句的循环体)。 当第2层for循环规定的循环次数全

9、部执行完后,执行语句3。至此,第1层for循环的第1次循环结束。接下来进行第1层for循环的下1次循环,一直到“表达式2”的值为“假”为止。,5.4 循环的嵌套,第5章循环程序设计,在使用二重循环时应注意以下几点: 语句1、第2层for循环和语句3以复合语句的形式作为第1层for循环的循环体。 语句1、第2层for循环和语句3是并行的,程序运行时按顺序执行。 语句1和语句3可以省略。当没有语句1和语句3时,可以省略大括弧。当有语句1或语句3时,必须要用大括弧将其括起来作为1个复合语句,否则,将会出现算法上的错误,5.4 循环的嵌套,第5章循环程序设计,使用格式: break; 用法说明: br

10、eak后面不跟任何表达式或语句,使用简单方便,其形式为: break; break语句只用在switch选择分支结构和循环结构中。,5.5.1 break语句,第5章循环程序设计,使用格式: continue; 在使用continue语句时注意以下要点: continue语句后面不跟任何表达式或语句,使用简单方便,其形式为:continue; continue语句只能在循环结构中使用,使用范围比break语句还窄。,5.5.2 continue语句,第5章循环程序设计,总结: 通过学习和对比,我们可以得出以下结论:程序执行到continue语句后只终止本次循环,程序会继续进行下1次循环,整个循

11、环并不一定会终止。而程序执行到break语句后将无条件地结束整个循环,程序转向循环结构后的下1条语句。,5.5.2 continue语句,第5章循环程序设计,将while循环转换为for循环。 while循环转换成for循环的步骤为: 在while语句的表达式的前后添上“;”。 将while语句前的给循环变量赋初值的语句变为for语句的“表达式1”。 将while语句中的给循环变量增值的语句变为for语句的“表达式3”。 将“while”变为“for”。 说明:for语句的使用灵活、形式多样,所以转换后的for语句形式可能有多种,但它们的功能都是相同的。,5.6 for循环与while循环的转

12、换,第5章循环程序设计,将for循环转换为while循环。 for循环转换成while循环的步骤为: 将“表达式1”放在for语句之前并使其成为1个赋值语句。 将“表达式3”放在for语句的循环体内,使其作为循环体的最后1个语句。 将“for”变为“while”。 去掉“表达式2”前后的“;”,将“表达式2”作为while语句的表达式。,5.6 for循环与while循环的转换,第5章循环程序设计,1.求1+2+3+-+100的值,试编程完成其功能。 #include void main() int i,s; s=0; i=1; while(i101) s=s+i; i+; printf(“s

13、=%dn”,s); ,5.7 典型例题评析,第5章循环程序设计,2.木马板凳三十三,百个腿腿地下翻。试编程求解:有多少条木马和有多少条板凳。 #include void main() int m,n; for(m=0;m34;m+) for(n=0;n26;n+) if(3*m+4*n=100) ,5.7 典型例题评析,第5章循环程序设计,3. 输出1020中所有的素数和能被3整除的数的个数,试编程完成其功能。 #include #include void main() int m,n,i,flag; n=0; for(m=10;m=20;m+) if(m%3=0) n+;/*对每一个m的值进

14、行是否能被3整除的判断的统计*/ flag=1; for(i=2;i= sqrt(m);i+) if(m%i=0) flag=0; /*当不是素数时立即对变量flag赋值0值*/ if(flag=1) printf(“%d ”,m);/*只有当flag的值为1即m为素数时才输出m*/ printf(“nn=%dn”,n); ,5.7 典型例题评析,第5章循环程序设计,4. 36块砖,36人抬,男搬4,女搬3,两个小孩抬一砖,要求一次搬完,问男、女、小孩各需若干。试编程完成其功能。#include #include void main() int w,m,c; for(m=0;m=9;m+) f

15、or(w=0;w=12;w+) c=36-m-w; if(4.0*m+3.0*w+0.5*c=36.0) printf(“m=%d w=%d c=%dn”,m,w,c); ,5.7 典型例题评析,第5章循环程序设计,或者: #include void main() int w,m,c; for(m=0;m=9;m+) for(w=0;w=12;w+) for(c=0;c=78;c+) if(4.0*m+3.0*w+0.5*c=36.0 ,5.7 典型例题评析,第5章循环程序设计,5.今有一楼梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步

16、跨7阶,最后正好到达楼顶。试编程计算楼梯的总阶数。 解一: #include void main() int lad; lad=7; while(lad%2!=1|lad%3!=2|lad%5!=4|lad%6!=5) lad=lad+7; printf(“lad=%dn”,lad); ,5.7 典型例题评析,第5章循环程序设计,解二: #include void main() int lad; for(lad=7; ;lad=lad+7) if(lad%2=1 ,5.7 典型例题评析,第5章循环程序设计,While循环是1种“当型”循环;而do-while语句是1种“直到型”循环。对于whi

17、le循环而言,只有当条件表达式的值为“真”时才执行循环体。对于do-while语句而言,先无条件地执行1次循环体再判断条件表达式的值,因此循环体至少被执行1次。 两种while循环的关系为:当两者的循环体相同,并且当第1次判断while后面的表达式时其值为“真”时,两种循环得到的结果相同。否则,二者得到的结果不相同。 for语句的形式较为复杂,有3个表达式和1个循环体语句。3个表达式均可省略,但必须在程序其他相应的位置(循环语句前、循环体内等位置)补充必要的赋值、增值等语句。,5.8 小结,第5章循环程序设计,对于循环体,如果循环体由多个语句构成,必须用大括弧括起来作为1个复合语句来处理,否则就会出现算法错误。在进行程序的调试时,特别要注意这点,因为大括弧的有无不会造成语法上的错误,程序编译时系统不会报错。 break语句和continue语句主要用于循环的流程控制,两者在用法上有显著差别。break语句用于结束整个循环

温馨提示

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

最新文档

评论

0/150

提交评论