第06章循环控制.ppt

上传人:夺命阿水 文档编号:679606 上传时间:2023-10-11 格式:PPT 页数:32 大小:686KB
返回 下载 相关 举报
第06章循环控制.ppt_第1页
第1页 / 共32页
第06章循环控制.ppt_第2页
第2页 / 共32页
第06章循环控制.ppt_第3页
第3页 / 共32页
第06章循环控制.ppt_第4页
第4页 / 共32页
第06章循环控制.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第06章循环控制.ppt》由会员分享,可在线阅读,更多相关《第06章循环控制.ppt(32页珍藏版)》请在课桌文档上搜索。

1、第六章 循环控制,循环结构是一种重要的程序结构,它与顺序结构、分支结构一起构成三大基本结构。,循环是相似重复,重复是完成工作的重要方法:实例1.考试后老师要对考试情况进行汇总,计算出全班N个学生的平均分。实例2.到超市购物完毕发现小票上写着共计22件 实例3.听说某某书写得非常精彩,冲到书店按分类找到书架,循环的共同点:重复发生前通常需要做一些准备工作。被重复的操作是“相似”的而不是“相同”的(3)重复一定有终止的时候。,对重复操作进行控制,条件判断,条件判断,操 作,操 作,C语言中提供了三种循环控制语句:for语句、while语句和dowhile语句,前两个是“先判断后循环”的模式,后一个

2、是“先循环后判断”的模式。,概述C语言可实现循环的语句:用goto 和 if 构成循环while 语句do while 语句for 语句goto语句及用goto构成循环goto语句一般格式:,goto 语句标号;.标号:语句;,功能:无条件转移语句说明:不能用整数作标号标号只能出现在goto所在函数内,且唯一标号只能加在可执行语句前面限制使用goto语句,求1100的累计和。根据已有的知识,可以用“1+2+100”来求解,但显然很繁琐。现在换个思路来考虑:首先设置一个累计器sum,其初值为0,利用sum+=n来计算(n依次取1、2、100),只要解决以下3个问题即可:(1)将n的初值置为1;(

3、2)每执行1次“sum+=n”后,n增1;(3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来实现,以简化、并规范循环结构程序设计。在语言中,可用以下语句实现循环:(1)用for语句。(2)用do-while语句。(3)用while语句。(4)用GOTO 语句,例 用if 和goto语句构成循环,求,/*ch5_1.c*/#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;pri

4、ntf(%d,sum);,sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050,例 从键盘输入一组数据,以0结束输入,求数据和,/*ch5_11.c*/#include main()int number,sum=0;read_loop:scanf(%d,while语句一般形式:,while(表达式)循环体语句;,执行流程:,特点:先判断表达式,后执行循环体说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;,例 用whi

5、le循环求,/*ch5_2.c*/#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);,例 显示110的平方,/*ch5_21.c*/#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;,运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100,dowhile语句一般形式:,do 循环体语句;while(表达式);,执行流程:,特点:先执行循环体,后判断表达式

6、说明:至少执行一次循环体dowhile可转化成while结构,例 用dowhile循环求,/*ch5_3.c*/#include main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);,例 while和dowhile比较,/*ch5_4.c*/#include main()int i,sum=0;scanf(%d,main()int i,sum=0;scanf(%d,for语句一般形式:,for(expr1;expr2;expr3)循环体语句;,执行流程:,for语句一般应用形式:,for(循环变量赋初值;循环条件;循环变

7、量增值)循环体语句;,说明:for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省无限循环:for(;)for语句可以转换成while结构,expr1;while(expr2)循环体语句;expr3;,【例6.7】编写程序,用“辗转相除法”求两个正整数的最大公约数。分析:“辗转相除法”求最大公约数基于数学上的知识:对于两个正整数a和b,记gcd(a,b)表示a与b的最大公约数,若a除以b的余数是正整数c,则gcd(a,b)=gcd(b,c)。与普通的短除法求最大公约数相比,辗转相除法可以更快地求得结果。例如,用辗转相除法求gcd(3324,1044)的具体过程:,3

8、3241044=3192这说明3324与1044的最大公约数就等于1044与192的最大公约数。求1044与192的最大公约数可以再次利用辗转相除法,并把这一过程重复下去,直到求得的余数为0。1044 192=584 192 84=224 84 24=312 24 12=20 最后一次的除数12就是所求结果,即gcd(3324,1044)=12,#include main()int a,b,c;printf(Input two integers(0):);scanf(%d%d,(1)循环体中a=b的操作和b=c的操作能否颠倒次序?(2)能不能把程序中的后两个printf合并到一起,写在whil

9、e循环的后面?(3)从键盘输入的两个数前大后小是正常情况,如果前小后大程序还能求出正确结果吗?(4)在例6.7中并没有对键盘输入两个整数的正确性进行判断,如果输入数据有问题,比如输入的是负数或零,程序可能出现异常结果。你能否为该程序加上判断功能?,循环的嵌套三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程,(1)while()while().,(2)do do while();.while();,(3)while()do while();.,(4)for(;)do while();while().,嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向

10、上跳转,例 循环嵌套,输出九九表,/*ch5_5.c*/#include main()int i,j;for(i=1;i10;i+)printf(%4d,i);printf(n-n);for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,为了使循环控制更加灵活,语言提供了break语句和continue语句。1一般格式:break;continue;2功能(1)break:强行结束循环,转向执行循环语句的下一条语句。(2)

11、continue:对于for循环,跳过循环体其余语句,转向循环变量增量表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。3break和continue语句对循环控制的影响如图5-4所示。4说明(1)break能用于循环语句和switch语句中,continue只能用于循环语句中。(2)循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。,break语句与continue语句,例 break举例:输出圆面积,面积大于100时停止,#define PI 3.14159main()int r;float area;for

12、(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);,continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,例 求输入的十个整数中正数的个数及其平均值,/*ch5_12.c*/#include main()int i,num=0,a;float sum=0;for(i=1;i=10;i+)scanf(%d,程序举例,分子:1,-1,1,-1分母:1,3,5,7,.,例 求Fibonacci数列:1,1,2,3,5,8,的前40个数,例 判断m是否素数,例:编程序sushu.c,求100-200之间所的的素数。,#include math.h#include stdio.hmain()int m,k,i,n=0;for(m=101;m=k+1)printf(%d,m);n+;if(n%10=0)printf(n);printf(n);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号