资源描述:
《循环控制结构.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
第六章循环控制结构 本节内容1while循环结构2do-while循环结构3for循环结构4嵌套循环语句考点笔试说明机试说明要求考核率分值while循环结构记忆100%2-3分重点理解掌握do-while循环结构理解100%2-3分重点理解掌握for循环结构了解100%4-6分重点理解掌握嵌套循环语句理解100%3-5分重点理解掌握 一般格式:执行流程:表达式2循环体假(0)真(非0)for表达式1表达式3for(表达式1;表达式2;表达式3){循环体语句}for语句for(k=1;k<=4;k++) i=1i<=5sum=sum+iTruei=i+1False退出循环for循环控制结构for(i=1;i<=5;i++)sum=sum+i; 课堂练习voidmain(){ints=0,i;for(i=1;i<=5;i++)s=s+i;printf(“1+2+3+4+5=%d ”,s);}1+2+3+…+100把5改为100 voidmain(){ints=0,i;for(i=1;i<=100;i++)s=s+i;printf(“s=%d ”,s);}1+2+3+…+10011×2×3×…×100*思考题:1+2!+3!+4!+5! #includemain(){inti,j,sum=0,s;for(i=1;i<=5;i++){s=1;for(j=1;j<=i;j++)s=s*j;sum=sum+s;}printf("sum=%d ",sum);}求i的阶乘:i!求1+2!+3!+4!+5!之和i是在1到5之间任取一个数循环嵌套!! 循环嵌套是否看过《盗梦空间》电影?----谜团重重六层梦境,六度轮回第1层飞车枪战-街头飞车第2层真空搏斗-豪华的酒店(第1层面包车正在坠河)第3层雪地厮杀第4层情感纠葛--柯布和妻子梅尔建造的潜意识边缘第5层梦境边缘--唤醒齐藤,两人穿越回到现实第6层亦真亦幻--柯布在飞机上醒来,“只要陀螺不停,他就会在梦中保持清醒” 循环嵌套鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?百鸡问题鸡兔共笼解方程组 解决问题的一般步骤实际问题(百鸡)抽象、简化、假设确定变量建立数学模型求解模型(编程)cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100cocks-鸡公hens-母鸡chicks-小鸡 已知2000年我国的人口是12.66亿,如果在以后的5年内人口每年平均增长1.07%,问到2005年我国的人口是多少?P=12.66:R=0.0107P=P*(1+R)for(i=;i<=;i++)20012005已知2000年我国的人口是12.66亿,如果在以后每年平均增长1.07%,问多少年后我国的人口达到13亿?思考必须循环次数已知!程序的关键代码如下: while(){}p=p*(1+r);n=n+1;p=12.66,r=0.0107,n=0;已知2000年我国的人口是12.66亿,如果在以后每年平均增长1.07%,问多少年后我国的人口达到13亿?思考p<13 条件性循环While循环条件性循环Do…while循环 while语句1.while循环语句的形式while(表达式)循环语句先判断条件,后执行语句表达式语句零非零2.执行过程:跳出循环此处无; 例1:求i=1,sum=0i<=100?sum=sum+ii=i+1零非零main(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}注意:(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现.(2)在循环体中应有使循环趋向于结束的语句累加和sum变量需置初值0累乘积sum变量需置初值1while语句 1.do-while循环语句的形式do循环体while(条件表达式);先执行语句,后判断条件2.执行过程此处有;表达式语句零非零跳出循环do-while语句 表达式=0?语句零非零i<=100?sum=sum+ii=i+1i=1例2:用do-while型循环求:main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}do-while语句 【例5.3】while和do-while循环的比较。#include"stdio.h"voidmain(){intsum=0,i;scanf("%d",&i);while(i<=10){sum=sum+i;i++;}printf("sum=%d ",sum);}?#include"stdio.h"voidmain(){intsum=0,i;scanf("%d",&i);do{sum=sum+i;i++;}while(i<=10);printf("sum=%d ",sum);}运行结果:1↙sum=55再运行一次:11↙sum=0运行结果:1↙sum=55再运行一次:11↙sum=11结论:(1)do—while循环语句首先执行循环体,然后计算表达式并检查循环条件,所以循环体至少执行一次。(2)退出do—while循环的条件与退出while循环的条件相同do-while语句 6.3for语句——总结用上述三种循环语句求while语句:n=1;s=1;while(n<=100){s=s*n;n++;}n=1;s=1;do{s=s*n;n++;}while(n<=100);do-while语句:for(n=1,s=1;n<=100;n++)s=s*n;for语句: 6.3for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值){循环体语句}说明:for语句中任意一个表达式均可省,但分号“;”不可省!(1)省略“表达式1”,此时在for语句之前给循环变量赋初值。如for(;i<=100;i++)sum=sum+i;执行时,跳过“求解表达式1”这一步,其他不变。i=1;for(;i<=100;i++)sum=sum+i; for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值){循环体语句}说明:(2)省略表达式2:即不判断循环条件,认为表达式2始终为真。例如:for(i=1;;i++)sum=sum+i;它相当于:i=1;while(1){sum=sum+1;i++;} for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值){循环体语句}说明:(3)省略表达式3:此时程序设计者应另外设法保证循环能正常结束。如:for(i=1;i<=100;){sum=sum+i;i++;} for语句的使用格式灵活!!!!表达式类型任意,可省略,但分号“;”不可省当表达式2被省略时,需要在循环体中设置循环结束语句,否则构成死循环无限循环:for(;;)括号后边的表达式可以是任意有效的C语言表达式for(i=1;;i++){if(i>100)break;sum+=i;}6.3for语句——总结for(i=1;;i++)sum+=i;for(i=1;1;i++)sum+=i; break和continue语句1、break语句一般形式:break;功能:在switch语句中,结束case分支,跳出switch语句在循环语句,终止并跳出循环体说明:break只能终止并跳出最近一层的结构break只能用于循环语句和switch语句中 表达式……break;……假(0)真(非0)while表达式2……break;…...假(0)真(非0)for表达式1表达式3break和continue语句 26switch表达式语句组1break;语句组2break;语句组nbreak;语句组break;…...const1const2constndefaultcasebreak和continue语句 2、continue语句一般形式:continue;功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断说明:仅用于循环语句中continue语句仅结束本次循环。break语句则是结束整个循环过程。break和continue语句 真(非0)do……continue;…...表达式假(0)while表达式……continue;……假(0)真(非0)while表达式2……continue;…...假(0)真(非0)for表达式1表达式3break和continue语句 while循环(21)有以下程序【2010年9月】#includemain(){inty=10;while(y--);printf("y=%d ",y);}程序执行后的输出结果是A)y=0B)y=-1C)y=1D)while构成无限循环 while循环真题3:下列程序的输出结果是。[2007.9]#includemain(){intn=12345,d;while(n!=0){d=n%10;printf(''%d'',d);n/=10;}}答案:54321 dowhile循环真题2:下列程序的功能是:将输入的正整数按逆序输出。例如,若输入135则输出531。请填空。【2006.9】#includemain(){intn,s;scanf(''%d'',&n);do{s=n%10;printf(''%d'',s);;}while(n!=0);printf('' '');}答案:n=n/10 21、有以下程序#includemain(){ints=0,n;for(n=0;n<3;n++){switch(s){case0:case1:s+=1;case2:s+=2;break;case3:s+3;case4:s+=4;}printf(("%d ",s);}}程序运行后的结果是A1,2,4B1,3,6C3,10,14D3,6,10 真题5:有以下程序【2008.9】#includemain(){inti=5;do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);printf(" ");}程序的运行结果是A)*7B)*3*5C)*5D)*2*6break语句 continue语句真题:执有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf(''%d,'',x--);continue;}printf(''%d,'',--x);}}程序的运行结果是()。【2008.4】A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2, break和continue语句真题1:下列程序的输出结果是()。【2005.4】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)6 以下程序的输出结果是【2008.9】真题#includemain(){inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=0;j<=i;j++)sum+=i*j;}printf("%d ",sum);}答案:1 ThankYou!