第5章+循环控制结构程序设计_第1页
第5章+循环控制结构程序设计_第2页
第5章+循环控制结构程序设计_第3页
第5章+循环控制结构程序设计_第4页
第5章+循环控制结构程序设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/10/29,1,第5章 循环结构程序设计,C语言程序设计基础教程,2020/10/29,2,5.1 while语句 5.2 dowhile语句 5.3 for语句 5.4 循环的嵌套 5.5 几种循环的比较 5.6 break和continue语句 5.7 程序举例,2020/10/29,3,循环结构是结构化程序设计的基本结构之一,它的特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。语言提供了多种实现循环的语句,可以组成各种不同形式的循环结构。 用while语句 用do-while语句 用for语句,2020/10/

2、29,4,while语句可以用来实现“当型”循环结构。 1)格式: while(表达式)语句 2)执行过程 其特点是:先判断表达式,后执行语句。,5.1 while语句,2020/10/29,5,【例5-1】用while语句求1100的累计和。 #includestdio.h main() int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(%dn,sum); ,程序运行结果如下: 5050,5.1 while语句,2020/10/29,6,使用while语句应注意以下几点: (1) while循环结构的特点是“先判断,后执行”。如果表达式的值一

3、开始为“假”,则循环体一次也不执行。 (2) while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环。 (3) 为使循环能够正确开始运行,需要对循环控制变量初始化。 (4) 循环体中,如果包含一个以上的语句,则应用花括号括起来,构成复合语句,否则while语句的范围只到while后面第1个分号处。 (5) 循环体内中应有使循环趋向于结束的语句。,5.1 while语句,2020/10/29,7,【例5-2】从键盘输入30个学生的成绩,对其进行处理;如果成绩及格,则输出“Passed”,否则输出“Failed”。 #includestdio.h main()

4、 int n=1; float score; while (n=30),5.1 while语句,2020/10/29,8, printf(enter a score:n); scanf(%f, ,5.1 while语句,2020/10/29,9,dowhile语句可以用来实现“直到型”循环结构。 1)格式: do 语句 while(表达式); 2)执行过程 这个循环与while循环的区别在于,它先执行后判断,因此,do-while循环至少要执行一次循环体。而while循环是先判断后执行,如果条件不满足,则循环体语句一次也不执行。,5.2 dowhile语句,2020/10/29,10,【例5-

5、3】用do-while语句求1100的累计和。 #includestdio.h main() int i=1,sum=0; do sum=sum+i; i+; while(i=100) ; printf(%dn,sum); ,程序运行结果如下: 5050,5.2 dowhile语句,2020/10/29,11,使用do-while语句应注意以下几点: (1) do是C语言的关键字,必须与while联合使用。 (2) 在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面必须加分号,它表示do-while语句的结束,否则将产生语法错误。 (3) while后面

6、一对圆括号中的表达式,可以是C语言中任意合法的表达式。由它控制循环是否执行。 (4) 和while语句一样,在使用do-while语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。 (5) 要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。 (6) 按照语法规则,在do和while之间的循环体只能是一条可执行语句。若循环体内需要多个语句,应该用花括号括起来,组成复合语句。,5.2 dowhile语句,2020/10/29,12,【例5-4】将输入的一串字符显示在屏幕上,遇到空格时停止。 #includestdio.h main() ch

7、ar c; printf(nPlease input a string:); do c=getchar(); putchar(c); while(c!= );,程序运行结果如下: Please input a string:Homework in the school Homework,5.2 dowhile语句,2020/10/29,13,【例5-5】while语句和do-while语句的比较。 main( ) int s=0,n; scanf(%d, ,main( ) int s=0,n; scanf(%d, ,输入: 1 结果: 55 输入: 11 结果: 0,输入: 1 结果: 55

8、输入: 11 结果: 11,2020/10/29,14,当输入i的值小于或等于10时,两者得到的结果相同。而当i10时,两者结果不同。这是因为此时对while循环来说,一次也不执行循环体(表达式“i=100”为假),而对do-while循环语句来说,则要执行一次循环体。可以得到结论:当while后面的表达式的第1次的值为“真”时,两种循环得到的结果相同,否则,两者结果不相同(指两者具有相同的循环体的情况)。,5.2 dowhile语句,2020/10/29,15,for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合用于已知循环次数的情况。 1)格式: for(表达式1;表达式2;表

9、达式3)语句 2)执行过程,5.3 for语句,2020/10/29,16,【例5-6】用for语句求1100的累计和。 #includestdio.h main() int s=0,n=1; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); ,程序运行结果如下: 5050,5.3 for语句,2020/10/29,17,使用for语句应注意以下几点: (1) for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺少,但“;”不能缺少。 (2) 省略了“表达式1(循环变量赋初值)”,表示不对循环

10、控制变量赋初值。 (3) 省略了“表达式2(循环条件)”,则不做其他处理时便成为死循环。 (4) 省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在循环体中加入修改循环控制变量的语句。,5.3 for语句,2020/10/29,18,使用for语句应注意以下几点: (5) 省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。 (6) 3个表达式都可以省略。 (7) 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。 (8) 表达式1和表达式3可以是简单表达式,也可以是逗号表达式。 (9) 表达式2一般是关系表达式或逻辑表达式,但也可是数值表

11、达式或字符表达式,只要其值非零,就执行循环体。,5.3 for语句,2020/10/29,19,【例5-7】输出1001000之间同时能被4和6同时整除的数及其和。 #includestdio.h main() float s=0; int i; for(i=100;i=1000;i+) if(i%4=0,5.3 for语句,2020/10/29,20,【例5-8】在3100之间所有3的倍数中,找出个位数为2的数。 #includestdio.h main() int i=0; for(i=3;i=100;i+) if(i%3=0 ,5.3 for语句,程序运行结果如下: 12 42 72,2

12、020/10/29,21,【例5-9】一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高? #includestdio.h main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+),5.3 for语句,2020/10/29,22, sn=sn+2*hn; hn=hn/2; printf(the total of road is %fn,sn); printf(the tenth is %f metern,hn); ,5.3 for语句,程序运行结果如下: the total

13、 of road is 299.609375 the tenth is 0.097656 meter,2020/10/29,23,5.4 循环嵌套,一个循环的循环体中有另一个循环称为循环嵌套。这种嵌套过程可以有很多重。 一个循环外面仅包围一层循环称为二重循环;一个循环外面包围两层循环称为三重循环; 一个循环外面包围多层循环称为多重循环。 循环嵌套的层数理论上无限制。,2020/10/29,24,在使用循环嵌套时应注意以下几点: (1) 在嵌套的各层循环中,应使用复合语句(即用一对花括号将循环体语句括起来),以保证逻辑上的正确性; (2) 内层和外层循环控制变量不应同名,以免造成混乱; (3)

14、嵌套循环最好采用右缩进格式书写,以保证层次的清晰性; (4) 循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环。 循环嵌套执行时,先由外层循环进入内层循环,并在内层循环终止之后接着执行外层循环,再由外层循环进入内层循环。当外层循环全部终止时,程序结束。,5.4 循环嵌套,2020/10/29,25,【例5-11】打印九九乘法口诀表。 #includestdio.h main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); ,程序运行结果如下: 1*1= 1 1*2= 2

15、 2*2=4 1*3= 3 2*3=6 3*3=9 1*4= 4 2*4=8 3*4=12 4*4=16 ,5.4 循环嵌套,2020/10/29,26,5.5 几种循环的比较,几种循环的比较如下: (1) 3种循环都可以用来处理同一个问题,一般可以互相代替。 (2) while和do-while循环,循环体中应包括使循环趋于结束的语句。for语句功能最强。 (3) 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。 (4) while循环、do-while循环和for循环,可以用break

16、语句跳出循环,用continue语句结束本次循环(break语句和continue语句见5.6节)。,2020/10/29,27,5.6 break语句和continue语句, 5.6.1 break语句 当break语句用于while、do-while、for循环语句中时,可使程序终止循环而执行循环后面的语句。 1)格式: if(表达式)break; 2)执行过程: while(表达式1) if(表达式2)break; ,2020/10/29,28,【例5-14】读入5个正整数并且显示它们。当程序读入的数据为负数时,程序立即终止。 #includestdio.h main() int i,n

17、; for(i=1;i=5;i+) printf(please enter n:); scanf(%d, ,5.6 break语句和continue语句,程序运行结果如下: please enter n:10 n=10 Please enter n:-10 Program is over!,2020/10/29,29,使用break语句应注意以下几点: (1) break语句只能用于循环结构或switch选择结构中。如果在程序中有下列语句: if() break; 则此时的if语句一定位于循环体中或switch语句中,break语句跳出的也不是if语句,而是跳出包含此if语句的循环体或swit

18、ch语句。 (2) 由于循环语句的循环体部分还可以使用循环语句,这样,循环语句就可以嵌套使用。在循环语句嵌套使用的情况下,break语句只能跳出(或终止)包含它的最近一层的循环体,而不能同时跳出(或终止)多层循环。,5.6 break语句和continue语句,2020/10/29,30, 5.6.2 continue语句 continue语句与break语句不同,当在循环体中遇到continue语句时,程序将跳过continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。 1)格式: if(表达式) continue; 2)执行过程: while(表达式1) if(表达式2)continue; ,5.6 break语句和continue语句,2020/10/29,31,【例5-16】求输入的10个整数中正数的个数及其平均值。 #includestdio.h main() int i,a,num=0; float sum=0; for(i=0;i10;i+) scanf(%d,5.6 break语句和continue语句,2020/10/29,32,使用continue语句应注意以下几

温馨提示

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

评论

0/150

提交评论