控制结构循环控制.ppt

控制结构循环控制.ppt

ID:53028969

大小:2.00 MB

页数:65页

时间:2020-04-15

上传者:U-8436
控制结构循环控制.ppt_第1页
控制结构循环控制.ppt_第2页
控制结构循环控制.ppt_第3页
控制结构循环控制.ppt_第4页
控制结构循环控制.ppt_第5页
资源描述:

《控制结构循环控制.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1目标理解为什么使用循环结构熟练掌握while循环的使用熟练掌握do-while循环的使用理解while和do-while循环的区别熟练使用for循环理解break和continue语句的用法熟练使用嵌套循环 2盈盈为了考验令狐冲夺冠的决心,要他说一百遍“我能行!”printf("第1次说:我能行!");printf("第2次说:我能行!");……printf("第100次说:我能行!");100条盈盈要他说10000遍“我是最棒的!”,怎么办?为什么需要循环2-1 3为什么需要循环2-2printf("我是最棒的!");printf("我是最棒的!");printf("我是最棒的!");printf("我是最棒的!");printf("我是最棒的!");printf("我是最棒的!");……printf("我是最棒的!");inti=1;while(i<=100){printf("我能行!");i++;}i<=10000"我是最棒的!");没有使用循环结构使用while循环 4什么是循环生活中的循环打印50份试卷10000米赛跑旋转的车轮循环结构的特点循环结构循环条件循环操作锲而不舍地学习根据条件重复的做相同或相似的事情 5while循环(当型循环).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-80charanswer;printf("表演得怎么样?(y/n):");answer=getchar();while(answer!='y'){printf("早上5点开始练声! ");printf("上午练习钢琴! ");printf("下午到声乐老师家练习唱歌! ");printf("晚上练习舞蹈基本功! ");printf("表演得怎样?(y/n):");getchar();answer=getchar();}printf("圆满完成! ");循环条件循环操作比较两个char类型的值是否相等 求自然数1到100的和.p77-80解:1.分析问题1+2=33+3=66+4=1010+…=最终结果0+1=1第二个加数有规律:1,2,3…1234…013610而第一个加数都是前一个运算的结果重复做两个数的加法运算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); 9while循环常见问题3-1.p77-80//打印4次“欢迎同学”voidmain(){inti=0;while(i<4){printf(“欢迎同学");i++;}}永远都不会退出的循环称为死循环循环的次数原则上应该是有穷的,也就是说,循环要有出口,否则成为死循环循环一直执行,不会退出,哪里出错了? 10while循环常见问题3-2.p77-80/*打印4次“欢迎同学”*/voidmain(){inti=1;while(i<4){printf(“欢迎同学学员");i++;}}i<=4只打印了三次,哪里出错了?注意检查循环次数是否满足需求 11while循环常见问题3-3.p77-80/*打印4次“欢迎同学”*/voidmain(){inti=0;while(i>5){printf("欢迎欢迎同学");i++;}}注意:如果一开始条件就不满足,while循环一次都不执行i<5一次都没有打印,哪里出错了? 12[课堂练习]找出100以内的奇数。练习#includeintmain(){intsum=0,i=1;while(i<=100){sum=sum+i;i=i+2;}return0;} 132006年在校学生1万人,每年增长25%,请问按此增长速度,到哪一年在校学生人数将达到10万人?提示:1、循环条件和循环操作分别是什么?2、intyear=2006;doublestudents=10000;while…3、2007年在校学生数量=10000*(1+0.25)练习 14练习选择题。在while(x)语句中的x与下面的条件表达式等价的是________。x==0x==1x!=1x!=0D.X!=0 15练习有以下程序main(){inty=10;while(y--);printf(“y=%d ”,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.1f :,F,C);③;}return0;}F<=300C=5.0/9*(F-32)F=F+20 17do-while循环(直到型循环).p80-83如何用程序讲述下面的故事?苦练半年,眼看大赛在即,盈盈提议:彩排一次,如果很令人满意,以后就不用彩排了,否则每天都要彩排,直到现场表现让她满意为止!他能否用动听的歌声震撼盈盈,用美妙的钢琴声博得赞赏呢?……do{循环操作}while(循环条件);while(循环条件){循环操作}while循环先判断,再执行不适合描述此故事? 18什么是do-while循环.p80-83do{循环操作}while(循环条件);先执行一遍循环操作符合条件,循环继续执行;否则,循环退出特点:先执行,再判断循环操作循环条件真假 19怎样使用do-while循环.p80-83charanswer;do{printf("唱歌! ");printf("演奏肖邦钢琴曲! ");printf("可以了吗?(y/n):");answer=getchar();}while(answer!='y');printf("大功告成! ");循环条件先执行一遍循环操作 20练习有以下程序段intn,t=1,s=0;scanf(“%d”,&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是()A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数D 21练习2.若变量已正确定义,有以下程序段:i=0;doprintf(“%d,”,i);while(i++);printf(”%d ”,i);其输出结果是()A.0,0B.0,1C.1,1D.程序进入死循环B 22输入一行字符,分别统计字母、数字、和其它字符的个数。练习 23while循环和do-while循环的区别语法不同初始情况不满足循环条件时while循环一次都不会执行do-while循环不管任何情况都至少执行一次do{循环操作}while(循环条件);while(循环条件){循环操作}先判断,再执行先执行,再判断比较while和do-while 2424[注]通常情况while,do—while可互换,但以下情况例外#include“stdio.h”intmain(){n=101;while(n<100){printf(“n=%d ”,n);}return0;}#include“stdio.h”intmain(){n=101;do{printf(“n=%d ”,n);}while(n<100);return0;}结果分别是多少?比较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-86inti=0;while(i<100){printf("我最棒");i++;}for(inti=0;i<100;i++){printf("我最棒");}for比while更简洁while循环结构for循环结构 28for循环的语法和执行顺序什么是for循环.p83-86for(;;){;}条件为true循环体被执行for(inti=0;i<100;i++){printf("我最棒");}代码规范:格式对齐、代码的缩进表达式1表达式2表达式3循环操作参数初始化条件判断更新循环变量1243 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中可以声明多个同一类型的值并赋值,用“,”隔开 31for循环常见问题5-1.p83-86for(;i<10;i++){printf("这是%d",i);}inti=0;编译错误:变量i没有初始化for(<初始化循环变量>;<循环条件>;<修改循环变量的值>){<循环体语句>;}不能省略可省略表达式1省略,循环变量的初始值在for语句之前由赋值语句取得 32for循环常见问题5-2.p83-86for(inti=0;;i++){printf("这是%d",i);}编译正确,但是缺少循环条件,造成死循环for(inti=0;i<10;){printf("这是%d",i);}i++;省略表达式3,在循环体内应设法改变循环变量的值以结束循环编译通过,但是循环变量的值无变化,造成死循环 33for循环常见问题5-3.p83-86for(;;){printf("这是测试");}表达式全省略,无条件判断,循环变量无改变,应在循环体内设法结束循环,否则会造成死循环死循环 34for循环常见问题5-4.p83-86[总结]for语句3个表达式均可以省略,但”;”不能省1.省略初始化表达式。需在循环之外给循环变量赋值i=1;for(;i<=100;i++)sum+=i;2.省略增量表达式。循环体内改变循环控制变量,否则容易造成死循环for(i=1;i<=100;){sum+=i;++i;} 35for循环常见问题5-5.p83-863.省略所有三个表达式。此时应在循环体内相应位置i=1;for(;;){if(i<=100)sum+=i;elsebreak;//强制终止循环i++;}4.for中的表达式1、表达式3可为逗号表达式。for(i=0,j=1;jintmain(){inti,sum;for(i=1;i<=100;i++);sum=sum+i;printf(“%d”,sum);return0;}sum=0;(去掉分号)i+=2 37小结求1~100之间不能被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=%d ”,s);}t*10 40为什么需要break语句.p88-89inti=2;switch(i){case1:printf("星期一");break;case2:printf("星期二");break;}//其他语句遇到break,立即跳出switch语句回顾break用于switch语句描述4000米长跑比赛for(inti=0;i<10;i++){跑400米;}if(不能坚持){break;//退出比赛}第8圈,快累死了…我要退出… 41什么是break语句.p88-89break:改变程序控制流用于do-while、while、for中时,可跳出循环而执行循环后面的语句while(…){………………break;………………}跳出整个循环break通常在循环中与条件语句一起使用 42如何使用break语句.p88-89从键盘输入任意一个正整数,编程判断它是否是素(质)数。若是,输出”Yes”,否则输入”No”。依次判断该整数能否被从2到该整数的一半(或平方根)的整除,如都不能整除,则是素数 431~10之间的整数相加,得到累加值大于20的当前数1、使用循环进行累加,从1到102、判断累加值是否大于203、如果大于20,则跳出循环,并打印当前值小结 44为什么需要continue语句.p88-89循环录入C课程的学生成绩,统计分数大于等于80分的学生比例1、通过循环,获得分数大于等于80分的学生人数num2、判断:如果成绩<80,不执行num++,直接进入下一次循环 45什么是continue语句.p88-89continue:只能用在循环里continue作用:跳过循环体中剩余的语句而执行下一次循环while(…){………………continue;…………}继续下一次循环通常与条件语句一起使用,加速循环for(inti=0;i<10;i++){跑400米;if(!口渴){continue;//不喝水,继续跑}接过水壶,喝水;}示例 46练习【课堂练习】阅读题。下面程序的运行结果为__________。#includeintmain(){intn;for(n=1;n<5;n++){if(n%2){printf(“*”);}elsecontinue;printf(“#”);}printf(“@ ”);return0;}*#*#@ 471、使用循环进行累加,循环的范围是从1至102、判断当前数是否为偶数3、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加小结求1~10之间的所有偶数和 48小结说一说在循环中使用continue和break的区别?intsum=0;for(inti=0;i<5;i++){if(i==3){break;}sum=sum+i;}printf("sum=%d",sum);sum=3sum=7输出值是多少?如果将break替换成continue,输出值又为多少?替换后 49循环结构总结2-1到目前为止所学的循环结构有哪些?需要多次重复执行一个或多个任务的问题考虑使用循环来解决 50循环总结2-2inti=0;intsum=0;while(i<10){sum=sum+i;i++;}inti=0;intsum=0;do{sum=sum+i;i++;}while(i<10);intsum=0;for(inti=0;i<10;i++){sum=sum+i;}123412341234while和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-8853for(i=1;i<10;i++){while(j<10){printf(“%d,%d”,i,j);j++;}}内循环外循环 54循环嵌套.p86-8854循环嵌套——循环中再套循环。各种形式的循环均可以相互套用常用于矩阵运算、报表打印类问题使用多层循环应注意:1、内层循环必须完全包含在外层循环中,不得交叉。2、并列循环可以使用相同的循环变量,而嵌套时内、外循环不能使用相同的循环变量 55循环嵌套进阶.p86-88用*打印一个直角三角形图案循环嵌套:外层控制行数,内层打印每行的*图形特点:每行的*个数与行数相等 56练习有以下程序:#includemain(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf(”%d*%d=%d”,i,j,i*j);printf(” ”);}}程序运行后的输出结果是()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=9B 57练习有以下程序:#includemain(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(”%d ”,m);}程序的运行结果是()A.0B.1C.2D.3B 58流程控制进阶回顾:在循环结构中,continue和break怎样跳转?for(…){…………continue;…………}……for(…){…………break;…………}……跳出循环结构跳到下次循环在二重循环中会怎样呢? 59流程控制进阶——continue下面红色框中代码的作用是什么?intcount=0;for(i=0;i<3;i++){//提示输入成绩for(j=0;j<4;j++){printf("第%d个学生的成绩:",j+1);scanf("%d",&score);sum=sum+score;if(score<85){continue;}count++;}//计算平均分并输出}continue跳出本次循环,继续下一次循环统计成绩在85分以上的学生人数 60流程控制进阶for(…){for(…){…………continue;…………}……}for(…){for(…){…………break;…………}……}跳出本层循环,继续执行外层循环跳出本次循环,继续下一次循环break和continue用在二重循环中: 61练习有以下程序main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)break;x++;}x++;}printf(”x=%d ”,x);}程序执行后的输出结果是()A.x=4B.x=8C.x=6D.x=12C 62练习有以下程序:main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(“%d ”,b);}程序运行后的输出结果是()A.3B.4C.5D.6B 63练习以下叙述中正确的是()A.break语句只能用于switch语句体中B.continue语句的作用是:使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和switch语句体内D.在循环体内使用break语句和continue语句的作用相同C 64小结在控制台打印出如下图案:提示:使用二重循环 65小结求出所有的水仙花数:一个三位数,其中各位数的立方和恰好等于该数本身,如:153=13+53+33打印九九乘法表

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭