控制结构循环控制PPT课件_第1页
控制结构循环控制PPT课件_第2页
控制结构循环控制PPT课件_第3页
控制结构循环控制PPT课件_第4页
控制结构循环控制PPT课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1,目标,理解为什么使用循环结构熟练掌握while循环的使用熟练掌握do-while循环的使用理解while和do-while循环的区别熟练使用for循环理解break和continue语句的用法熟练使用嵌套循环,2,盈盈为了考验令狐冲夺冠的决心,要他说一百遍“我能行!”,printf(第1次说:我能行!);printf(第2次说:我能行!);printf(第100次说:我能行!);,100条,盈盈要他说10000遍“我是最棒的!”,怎么办?,为什么需要循环2-1,3,为什么需要循环2-2,printf(我是最棒的!);printf(我是最棒的!);printf(我是最棒的!);printf(我是最棒的!);printf(我是最棒的!);printf(我是最棒的!);printf(我是最棒的!);,inti=1;while(i=100)printf(我能行!);i+;,i=10000,我是最棒的!);,没有使用循环结构,使用while循环,4,什么是循环,生活中的循环,打印50份试卷,10000米赛跑,旋转的车轮,循环结构的特点,锲而不舍地学习,根据条件重复的做相同或相似的事情,5,while循环(当型循环).p77-80,特点:先判断,再执行,while(循环条件)循环操作,符合条件,循环继续执行;否则,循环退出,循环中被重复执行的操作,inti=1;while(i=30)printf(我能行!);i+;,编码规范:缩进、换行,6,如何用程序描述下面这个故事呢?,为了备战,令狐冲锲而不舍地练习,盈盈严格把关“盈盈,怎么样,可以了吗?”“不行,高音部分唱得还不是很好,钢琴还要继续练啊!”没有听到“很棒”的评价,看来革命尚未成功,令狐冲并不气馁:早上5点练声,上午练钢琴,下午到声乐老师家练习唱歌,晚上练习舞蹈基本功。,循环条件,循环操作,使用while循环的步骤1、分析循环条件和循环操作2、套用while语法写出代码3、检查循环是否能够退出,怎样使用while循环3-1.p77-80,7,怎样使用while循环3-2.p77-80,charanswer;printf(表演得怎么样?(y/n):);answer=getchar();while(answer!=y)printf(早上5点开始练声!n);printf(上午练习钢琴!n);printf(下午到声乐老师家练习唱歌!n);printf(晚上练习舞蹈基本功!n);printf(表演得怎样?(y/n):);getchar();answer=getchar();printf(圆满完成!n);,循环条件,循环操作,比较两个char类型的值是否相等,8,求自然数1到100的和.p77-80,解:1.分析问题,1+2=3,3+3=6,6+4=10,10+=最终结果,0+1=1,1,2,3,4,0,1,3,6,10,而第一个加数都是前一个运算的结果,重复做两个数的加法运算,step1:设两个加数变量sum=0,i=1;step2:当i=100时重复(循环)做sum+i其中sum=前一个sum+ii=前一个i+1;step3:输出循环后的结果,intsum=0,i=1;,while(i=100),sum=sum+i;i=i+1;,printf(“和=%d”,sum);,9,while循环常见问题3-1.p77-80,/打印4次“欢迎同学”voidmain()inti=0;while(i4)printf(“欢迎同学);i+;,永远都不会退出的循环称为死循环循环的次数原则上应该是有穷的,也就是说,循环要有出口,否则成为死循环,循环一直执行,不会退出,哪里出错了?,10,while循环常见问题3-2.p77-80,/*打印4次“欢迎同学”*/voidmain()inti=1;while(i4)printf(“欢迎同学学员);i+;,i5)printf(欢迎欢迎同学);i+;,注意:如果一开始条件就不满足,while循环一次都不执行,i5,一次都没有打印,哪里出错了?,12,课堂练习找出100以内的奇数。,练习,13,2006年在校学生1万人,每年增长25%,请问按此增长速度,到哪一年在校学生人数将达到10万人?,提示:1、循环条件和循环操作分别是什么?2、intyear=2006;doublestudents=10000;while3、2007年在校学生数量=10000*(1+0.25),练习,14,练习,选择题。在while(x)语句中的x与下面的条件表达式等价的是_。x=0 x=1x!=1x!=0,D.X!=0,15,练习,有以下程序main()inty=10;while(y-);printf(“y=%dn”,y);程序执行后的输出结果是()A.y=0B.y=-1C.y=1D.while构成无限循环,B.y=-1,16,练习,【课堂练习】华氏和摄氏温度的转换公式为C=5/9*(F-32),其中C表示摄氏温度,F表示华氏温度。要求从华氏0度到华氏300度,每隔20度输出一个华氏温度所对应的摄氏温度值。#includeintmain()floatF=0,C;while()_;printf(“4.0ft%6.1fn:,F,C);return0;,F=300,C=5.0/9*(F-32),F=F+20,17,do-while循环(直到型循环).p80-83,如何用程序讲述下面的故事?,苦练半年,眼看大赛在即,盈盈提议:彩排一次,如果很令人满意,以后就不用彩排了,否则每天都要彩排,直到现场表现让她满意为止!他能否用动听的歌声震撼盈盈,用美妙的钢琴声博得赞赏呢?,do循环操作while(循环条件);,while(循环条件)循环操作,while循环先判断,再执行不适合描述此故事,?,18,什么是do-while循环.p80-83,do循环操作while(循环条件);,先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出,特点:先执行,再判断,19,怎样使用do-while循环.p80-83,charanswer;doprintf(唱歌!n);printf(演奏肖邦钢琴曲!n);printf(可以了吗?(y/n):);answer=getchar();while(answer!=y);printf(大功告成!n);,循环条件,先执行一遍循环操作,20,练习,有以下程序段intn,t=1,s=0;scanf(“%d”,为使此程序段不陷入死循环,从键盘输入的数据应该是()A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数,D,21,练习,2.若变量已正确定义,有以下程序段:i=0;doprintf(“%d,”,i);while(i+);printf(”%dn”,i);其输出结果是()A.0,0B.0,1C.1,1D.程序进入死循环,B,22,输入一行字符,分别统计字母、数字、和其它字符的个数。,练习,23,while循环和do-while循环的区别语法不同初始情况不满足循环条件时while循环一次都不会执行do-while循环不管任何情况都至少执行一次,do循环操作while(循环条件);,while(循环条件)循环操作,先判断,再执行,先执行,再判断,比较while和do-while,24,24,注通常情况while,dowhile可互换,但以下情况例外,比较while和do-while,25,练习,代码填空:实现整数反转,#includevoidmain()intval=12345;intr_digit;printf(反转后的整数是:);while(_)_;_;_;,while(val!=0)r_digit=val%10;printf(“%d”,r_digit);val=val/10;,26,为什么使用for循环2-1.p83-86,回顾问题1:令狐冲说一百遍“我最棒”回顾问题2:根据人数和成绩,计算平均成绩,解决:使用while循环,共同点:确定的循环次数,更优解决:for循环结构,27,为什么使用for循环2-2.p83-86,inti=0;while(i100)printf(我最棒);i+;,for(inti=0;i100;i+)printf(我最棒);,for比while更简洁,while循环结构,for循环结构,28,for循环的语法和执行顺序,什么是for循环.p83-86,for(;);,条件为true,循环体被执行,for(inti=0;i100;i+)printf(我最棒);,代码规范:格式对齐、代码的缩进,表达式1,表达式2,表达式3,循环操作,参数初始化,条件判断,更新循环变量,1,2,4,3,29,如何使用for循环.p83-86,循环录入某学生第一期的5门课成绩,计算平均分,循环次数:5循环条件:循环的次数不足5,继续循环循环操作:录入成绩,计算成绩之和,使用for循环结构的步骤1、分析循环条件和循环操作2、套用for语法写出代码3、检查循环是否能够退出,结合问题1,30,如何使用for循环.p83-86,输出如图所示加法表,for(i=0,j=val;i=val;i+,j-)printf(“%d+%d=%d“,i,j,i+j);,1、循环初始化:i=0;j=输入值2、循环条件:i=输入值3、循环操作:计算i+j4、循环变量的改变:i+,j-,表达式3可以是用“,”隔开的多个表达式,运算顺序从左到右,表达式1中可以声明多个同一类型的值并赋值,用“,”隔开,31,for循环常见问题5-1.p83-86,for(;i10;i+)printf(这是%d,i);,inti=0;,编译错误:变量i没有初始化,for(;);,不能省略,可省略,表达式1省略,循环变量的初始值在for语句之前由赋值语句取得,32,for循环常见问题5-2.p83-86,for(inti=0;i+)printf(这是%d,i);,编译正确,但是缺少循环条件,造成死循环,for(inti=0;i10;)printf(这是%d,i);,i+;,省略表达式3,在循环体内应设法改变循环变量的值以结束循环,编译通过,但是循环变量的值无变化,造成死循环,33,for循环常见问题5-3.p83-86,for(;)printf(这是测试);,表达式全省略,无条件判断,循环变量无改变,应在循环体内设法结束循环,否则会造成死循环,死循环,34,for循环常见问题5-4.p83-86,总结for语句3个表达式均可以省略,但”;”不能省1.省略初始化表达式。需在循环之外给循环变量赋值i=1;for(;i=100;i+)sum+=i;2.省略增量表达式。循环体内改变循环控制变量,否则容易造成死循环for(i=1;i=100;)sum+=i;+i;,35,for循环常见问题5-5.p83-86,3.省略所有三个表达式。此时应在循环体内相应位置i=1;for(;)if(i=100)sum+=i;elsebreak;/强制终止循环i+;4.for中的表达式1、表达式3可为逗号表达式。for(i=0,j=1;jn,36,练习,【课堂练习】改错题。阅读下面的程序,求1100的奇数和,指出其中的错误,并改正。#includeintmain()inti,sum;for(i=1;i=100;i+);sum=sum+i;printf(“%d”,sum);return0;,sum=0;,(去掉分号),i+=2,37,小结,求1100之间不能被3整除的数之和(使用for循环结构),38,百万富翁和陌生人,陌生人,每天十万元,百万富翁第一天一分钱,第二天二分钱,每天是前一天的两倍。求30天后双方互给多少钱,练习,39,练习,以下程序的功能是计算:s=1+12+123+1234+12345.请填空.main()intt=0,s=0,i;for(i=1;i=5;i+)t=i+();s=s+t;printf(“s=%dn”,s);,t*10,40,为什么需要break语句.p88-89,inti=2;switch(i)case1:printf(星期一);break;case2:printf(星期二);break;/其他语句,遇到break,立即跳出switch语句,回顾break用于switch语句,描述4000米长跑比赛,for(inti=0;i10;i+)跑400米;,if(不能坚持)break;/退出比赛,第8圈,快累死了我要退出,41,什么是break语句.p88-89,break:改变程序控制流用于do-while、while、for中时,可跳出循环而执行循环后面的语句,while()break;,跳出整个循环,break通常在循环中与条件语句一起使用,42,如何使用break语句.p88-89,从键盘输入任意一个正整数,编程判断它是否是素(质)数。若是,输出”Yes”,否则输入”No”。,依次判断该整数能否被从2到该整数的一半(或平方根)的整除,如都不能整除,则是素数,43,110之间的整数相加,得到累加值大于20的当前数,1、使用循环进行累加,从1到102、判断累加值是否大于203、如果大于20,则跳出循环,并打印当前值,小结,44,为什么需要continue语句.p88-89,循环录入C课程的学生成绩,统计分数大于等于80分的学生比例,1、通过循环,获得分数大于等于80分的学生人数num2、判断:如果成绩80,不执行num+,直接进入下一次循环,45,什么是continue语句.p88-89,continue:只能用在循环里continue作用:跳过循环体中剩余的语句而执行下一次循环,while()continue;,继续下一次循环,通常与条件语句一起使用,加速循环,for(inti=0;i10;i+)跑400米;if(!口渴)continue;/不喝水,继续跑接过水壶,喝水;,示例,46,练习,【课堂练习】阅读题。下面程序的运行结果为_。#includeintmain()intn;for(n=1;n5;n+)if(n%2)printf(“*”);elsecontinue;printf(“#”);printf(“n”);return0;,*#*#,47,1、使用循环进行累加,循环的范围是从1至102、判断当前数是否为偶数3、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加,小结,求110之间的所有偶数和,48,小结,说一说在循环中使用continue和break的区别?,intsum=0;for(inti=0;i5;i+)if(i=3)break;sum=sum+i;printf(sum=%d,sum);,sum=3,sum=7,输出值是多少?如果将break替换成continue,输出值又为多少?,替换后,49,循环结构总结2-1,到目前为止所学的循环结构有哪些?,需要多次重复执行一个或多个任务的问题考虑使用循环来解决,50,循环总结2-2,inti=0;intsum=0;while(i10)sum=sum+i;i+;,inti=0;intsum=0;dosum=sum+i;i+;while(i10);,intsum=0;for(inti=0;i10;i+)sum=sum+i;,1,2,3,4,1,2,3,4,1,2,3,4,while和for相同,先进行判断,后执行循环体内容do-while是先执行,后判断,至少执行一次,指出各种循环结构的执行顺序,51,控制流语句小结,顺序结构:语句顺序执行分支结构:语句在满足条件下执行if,if-else,if-elseif-else,switch循环结构:语句在满足条件下循环执行多次while,do-while,for跳转语句break,continue,52,循环嵌套.p86-88,某次程序大赛,3个班级各4名学生参赛,计算每个班参赛学员的平均分,共3个班级,循环3次计算每个班的平均分每班4名学员,循环4次累加总分,需要使用二重循环实现,for、while、do-while语句可以相互嵌套,53,循环嵌套.p86-88,53,for(i=1;i10;i+)while(j10)printf(“%d,%d”,i,j);j+;,内循环,外循环,54,循环嵌套.p86-88,54,循环嵌套循环中再套循环。各种形式的循环均可以相互套用常用于矩阵运算、报表打印类问题,使用多层循环应注意:1、内层循环必须完全包含在外层循环中,不得交叉。2、并列循环可以使用相同的循环变量,而嵌套时内、外循环不能使用相同的循环变量,55,循环嵌套进阶.p86-88,用*打印一个直角三角形图案,循环嵌套:外层控制行数,内层打印每行的*图形特点:每行的*个数与行数相等,56,练习,有以下程序:#includemain()inti,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(”%d*%d=%d”,i,j,i*j);printf(”n”);程序运行后的输出结果是()A.1*1=11*2=21*3=3B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9C.1*1=1D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9,B,57,练习,有以下程序:#includemain()inti,j,m=55;for(i=1;i=3;i+)for(j=3;j=i;j+)m=m%j;printf(”%dn”,m);程序的运行结果是()A.0B.1C.2D.3,B,58,流程控制进阶,回顾:在循环结构中,conti

温馨提示

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

评论

0/150

提交评论