第5章+循环控制结构程序设计PPT课件02

上传人:y****3 文档编号:26641568 上传时间:2021-08-12 格式:PPT 页数:36 大小:1.47MB
返回 下载 相关 举报
第5章+循环控制结构程序设计PPT课件02_第1页
第1页 / 共36页
第5章+循环控制结构程序设计PPT课件02_第2页
第2页 / 共36页
第5章+循环控制结构程序设计PPT课件02_第3页
第3页 / 共36页
点击查看更多>>
资源描述
2021-7-21 1 第5章 循环结构程序设计C语言程序设计基础教程 2021-7-21 2 2021-7-21 3 循环结构是结构化程序设计的基本结构之一,它的特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。语言提供了多种实现循环的语句,可以组成各种不同形式的循环结构。 用while语句 用do-while语句 用for语句 2021-7-21 4 while语句可以用来实现“当型”循环结构。 1)格式: while(表达式)语句 2)执行过程其特点是:先判断表达式,后执行语句。5.1 while语句 2021-7-21 5 【例5-1】用while语句求1100的累计和。 #includestdio.h main() int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(%dn,sum); 程序运行结果如下:50505.1 while语句 2021-7-21 6 使用while语句应注意以下几点: (1) while循环结构的特点是“先判断,后执行”。如果表达式的值一开始为“假”,则循环体一次也不执行。 (2) while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环。 (3) 为使循环能够正确开始运行,需要对循环控制变量初始化。 (4) 循环体中,如果包含一个以上的语句,则应用花括号括起来,构成复合语句,否则while语句的范围只到while后面第1个分号处。 (5) 循环体内中应有使循环趋向于结束的 语句。 5.1 while语句 2021-7-21 7 【例5-2】从键盘输入30个学生的成绩,对其进行处理;如果成绩及格,则输出“Passed”,否则输出“Failed”。 #includestdio.h main() int n=1; float score; while (n=60.0) printf(Passedn); else printf(Failedn); n+; 5.1 while语句 2021-7-21 9 dowhile语句可以用来实现“直到型”循环结构。 1)格式: do语句 while(表达式); 2)执行过程 这个循环与while循环的区别在于,它先执行后判断,因此,do-while循环至少要执行一次循环体。而while循环是先判断后执行,如果条件不满足,则循环体语句一次也不执行。5.2 dowhile语句 2021-7-21 10 【例5-3】用do-while语句求1100的累计和。 #includestdio.h main() int i=1,sum=0; do sum=sum+i; i+; while(i=100) ; printf(%dn,sum); 程序运行结果如下:50505.2 dowhile语句 2021-7-21 11 使用do-while语句应注意以下几点: (1) do是C语言的关键字,必须与while联合使用。 (2) 在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面必须加分号,它表示do-while语句的结束,否则将产生语法错误。 (3) while后面一对圆括号中的表达式,可以是C语言中任意合法的表达式。由它控制循环是否执行。 (4) 和while语句一样,在使用do-while语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。 (5) 要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。 (6) 按照语法规则,在do和while之间的循环体只能是一条可执行语句。若循环体内需要多个语句,应该用花括号括起来,组成复合语句。 5.2 dowhile语句 2021-7-21 12 【例5-4】将输入的一串字符显示在屏幕上,遇到空格时停止。 #includestdio.h main() char c; printf(nPlease input a string:); do c=getchar(); putchar(c); while(c!= );程序运行结果如下:Please input a string:Homework in the schoolHomework5.2 dowhile语句 2021-7-21 13 【例5-5】while语句和do-while语句的比较。 main( ) int s=0,n; scanf(%d, while(n= 10) s = s + n; n+; printf(%d,s); main( ) int s=0,n; scanf(%d, do s = s + n; n+; while(n10时,两者结果不同。这是因为此时对while循环来说,一次也不执行循环体(表达式“i=100”为假),而对do-while循环语句来说,则要执行一次循环体。可以得到结论:当while后面的表达式的第1次的值为“真”时,两种循环得到的结果相同,否则,两者结果不相同(指两者具有相同的循环体的情况)。5.2 dowhile语句 2021-7-21 15 for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合用于已知循环次数的情况。 1)格式: for(表达式1;表达式2;表达式3)语句 2)执行过程 5.3 for语句 2021-7-21 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); 程序运行结果如下:50505.3 for语句 2021-7-21 17 使用for语句应注意以下几点: (1) for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺少,但“;”不能缺少。 (2) 省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。 (3) 省略了“表达式2(循环条件)”,则不做其他处理时便成为死循环。 (4) 省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在循环体中加入修改循环控制变量的语句。5.3 for语句 2021-7-21 18 使用for语句应注意以下几点: (5) 省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。 (6) 3个表达式都可以省略。 (7) 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。 (8) 表达式1和表达式3可以是简单表达式,也可以是逗号表达式。 (9) 表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。5.3 for语句 2021-7-21 19 【例5-7】输出1001000之间同时能被4和6同时整除的数及其和。 #includestdio.h main() float s=0; int i; for(i=100;i=1000;i+) if(i%4=0 printf(%5d,i); printf(s=%fn,s);5.3 for语句 2021-7-21 20 【例5-8】在3100之间所有3的倍数中,找出个位数为2的数。 #includestdio.h main() int i=0; for(i=3;i=100;i+) if(i%3=0 printf(n); 5.3 for语句程序运行结果如下:12 42 72 2021-7-21 21 【例5-9】一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高? #includestdio.h main() float sn=100.0,hn=sn/2; int n; for(n=2;n= 0;n+)5.3 for语句 2021-7-21 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 tenth is 0.097656 meter 2021-7-21 23 5.4 循 环 嵌 套一个循环的循环体中有另一个循环称为循环嵌套。这种嵌套过程可以有很多重。一个循环外面仅包围一层循环称为二重循环;一个循环外面包围两层循环称为三重循环;一个循环外面包围多层循环称为多重循环。循环嵌套的层数理论上无限制。 2021-7-21 24 在使用循环嵌套时应注意以下几点: (1) 在嵌套的各层循环中,应使用复合语句(即用一对花括号将循环体语句括起来),以保证逻辑上的正确性; (2) 内层和外层循环控制变量不应同名,以免造成混乱; (3) 嵌套循环最好采用右缩进格式书写,以保证层次的清晰性; (4) 循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环。循环嵌套执行时,先由外层循环进入内层循环,并在内层循环终止之后接着执行外层循环,再由外层循环进入内层循环。当外层循环全部终止时,程序结束。5.4 循 环 嵌 套 2021-7-21 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= 11*2= 2 2*2=41*3= 3 2*3=6 3*3=91*4= 4 2*4=8 3*4=12 4*4=16 5.4 循 环 嵌 套 2021-7-21 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语句跳出循环,用continue语句结束本次循环(break语句和continue语句见节) 。 2021-7-21 27 5.6 break语句和continue语句 5.6.1 break语句当break语句用于while、do-while、for循环语句中时,可使程序终止循环而执行循环后面的语句。 1)格式: if(表达式)break; 2)执行过程: while(表达式1) if(表达式2)break; 2021-7-21 28 【例5-14】读入5个正整数并且显示它们。当程序读入的数据为负数时,程序立即终止。 #includestdio.h main() int i,n; for(i=1;i=5;i+) printf(please enter n:); scanf(%d, if(n0) break; printf(n=%dn,n); printf(Program is over!n); 5.6 break语句和continue语句程序运行结果如下:please enter n:10n=10Please enter n:-10Program is over! 2021-7-21 29 使用break语句应注意以下几点: (1) break语句只能用于循环结构或switch选择结构中。如果在程序中有下列语句: if() break;则此时的if语句一定位于循环体中或switch语句中,break语句跳出的也不是if语句,而是跳出包含此if语句的循环体或switch语句。 (2) 由于循环语句的循环体部分还可以使用循环语句,这样,循环语句就可以嵌套使用。在循环语句嵌套使用的情况下,break语句只能跳出(或终止)包含它的最近一层的循环体,而不能同时跳出(或终止)多层循环。5.6 break语句和continue语句 2021-7-21 30 5.6.2 continue语句 continue语句与break语句不同,当在循环体中遇到continue语句时,程序将跳过continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。 1)格式: if(表达式) continue; 2)执行过程: while(表达式1) if(表达式2)continue; 5.6 break语句和continue语句 2021-7-21 31 【例5-16】求输入的10个整数中正数的个数及其平均值。 #includestdio.h main() int i,a,num=0; float sum=0; for(i=0;i10;i+) scanf(%d, if(a=0) continue; num+; sum+=a; printf(%d plus integers sum:%.0fn,num,sum); printf(average value:%.2fn,sum/num); 5.6 break语句和continue语句 2021-7-21 32 使用continue语句应注意以下几点: (1) continue语句只能用于while、do-while、for构成的循环结构中,常与if条件语句一起使用,用来加速循环。 (2) 在嵌套循环的情况下,continue语句只对包含它的最内层的循环体起作用。 continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。5.6 break语句和continue语句 2021-7-21 33 【例5-18】从键盘输入一个大于1的任意正整数,编程判断它是否是素数,若是素数,输出“Yes!”,否则输出“No!”。 #includestdio.h #includemath.h main() int m,i,k; printf(please enter a number: ); scanf(%d, k=sqrt(m); 2021-7-21 34 for(i=2;ik) printf(Yes!n); else printf(No!n); 2021-7-21 35 【例5-20】编写程序用辗转相除法求解两个整数的最大公约数。 #includestdio.h main() int a,b,r; scanf(%d%d, printf(ngcd%d,%d=,a,b); r=a%b; while(r!=0) a=b; b=r; r=a%b; printf(%d,b);程序运行结果如下:24 10gcd24,10=2 2021-7-21 36 课后作业教材习题5 第XXXX题。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!