最新周日补课循环结构幻灯片

上传人:枫** 文档编号:570132416 上传时间:2024-08-02 格式:PPT 页数:44 大小:1.34MB
返回 下载 相关 举报
最新周日补课循环结构幻灯片_第1页
第1页 / 共44页
最新周日补课循环结构幻灯片_第2页
第2页 / 共44页
最新周日补课循环结构幻灯片_第3页
第3页 / 共44页
最新周日补课循环结构幻灯片_第4页
第4页 / 共44页
最新周日补课循环结构幻灯片_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《最新周日补课循环结构幻灯片》由会员分享,可在线阅读,更多相关《最新周日补课循环结构幻灯片(44页珍藏版)》请在金锄头文库上搜索。

1、周日补课循环结构周日补课循环结构概述概述循环结构的本质循环结构的本质:将功能重复的代码以简化的形式表述出来将功能重复的代码以简化的形式表述出来 循环结构的基本作用:循环结构的基本作用: - -减少重复执行一项任务时需要的代码语句减少重复执行一项任务时需要的代码语句数量数量dowhile语句语句v一般形式:一般形式:do 循环体语句;循环体语句; while(表达式表达式);v执行流程执行流程:do循环体循环体expr假假(0)真真(非非0)whilev特点:先无条件执行循环体,后判断表达式特点:先无条件执行循环体,后判断表达式v说明:说明:l至少执行一次循环体至少执行一次循环体ldowhile

2、可转化成可转化成while结构结构expr循环体循环体假假(0)真真(非非0)循环体循环体While循环循环sum=0,i=1当当i=100Sum=sum+ii=i+1例例 用用dowhiledowhile循环求循环求1 1到到100100的累计和的累计和 #include int main() int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum); return 0;sum=0,i=1sum=sum+Ii=i+1 当i=100例例 whilewhile和和dowhiledowhile比较比较#include int main

3、() int i,sum=0; scanf(%d,&i); do sum+=i;i+; while(i=10); printf(%d,sum); return 0;#include int main() int i,sum=0; scanf(%d,&i); while(i=10) sum+=i;i+; printf(%d,sum); return 0;for语句语句v一般形式:一般形式:for(expr1 ; expr2 ; expr3) 循环体语句;循环体语句;v执行流程执行流程:expr2循环体循环体假假(0)真真(非非0)forexpr1expr3vfor语句一般应用形式语句一般应用形式

4、:for(循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值) 循环体语句;循环体语句; v说明:说明:lfor语句中语句中expr1, expr2 ,expr3 类型任意,都可省略,但类型任意,都可省略,但分号分号;不可省不可省l无限循环无限循环: for(;)lfor语句可以转换成语句可以转换成while结构结构expr1;while(expr2)循环体语句;循环体语句;expr3;例例 用用forfor循环求循环求11001100累加和累加和 #include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; print

5、f(%d,sum);例:例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 运行结果:运行结果:abcdefghij例:例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); 例:例:#include int main( ) int i=0; for(;i10;) putchar(a+(i+); return 0; 例:例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 循环的嵌套循环的嵌套v三种循环可互相嵌套三种循环

6、可互相嵌套, ,层数不限层数不限v外层循环可包含两个以上内循环外层循环可包含两个以上内循环, ,但不能相互交叉但不能相互交叉v嵌套循环的执行流程嵌套循环的执行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .v嵌套循环的跳转嵌套循环的跳转禁止:禁止:l从外层跳入内层从外层跳入内层l跳入同层的另一循环向上跳转跳入同层的另一循环向上跳转例例 循环嵌套,输出九九表循环嵌套,输出九九表123456789123456789

7、2468101214161836912151821242791827364554637281.ij#include int 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); return 0;i10printf假假(0)真真(非非0)i=1j+j=1j10真真(非非0)假假(0)i+for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);外循环外循环

8、内循环内循环 辅助控制语句辅助控制语句breakbreak语句语句功能:在循环语句和功能:在循环语句和switchswitch语句中语句中, ,终止并跳终止并跳出循环体或开关体出循环体或开关体说明:说明:breakbreak只能只能终止并跳出终止并跳出最近一层最近一层的结构的结构breakbreak不能用于循环语句和不能用于循环语句和switchswitch语句之语句之外的任何其它语句之中外的任何其它语句之中exprbreak;假假(0)真真(非非0)whiledobreak;.expr假假(0)真真(非非0)whileexpr2break;.假假(0)真真(非非0)forexpr1expr3

9、switchexpr语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase breakbreak举例举例1 1:输出圆面积,面积大于输出圆面积,面积大于100100时停止时停止#include#define PI 3.14159int main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); return 0;breakbreak举例举例2 2:小写字母转换成大写字母小写字母转换成大

10、写字母, ,直至输入非字母字符直至输入非字母字符#include int main() int i,j; char c; while(1) c=getchar(); if(c=a & c=100)break;for(i=10;i-) sum+=i; if (sum=0) break;continue语句语句v功能:结束本次循环,跳过功能:结束本次循环,跳过循环体中循环体中尚未执行的尚未执行的语句,进行下一次是否执行循环体的判断语句,进行下一次是否执行循环体的判断v仅用于循环语句中仅用于循环语句中exprcontinue;假假(0)真真(非非0)while真真(非非0)docontinue;.e

11、xpr假假(0)whileexpr2continue;.假假(0)真真(非非0)forexpr1expr3例例 求输入的十个整数中正数的个数及其平均值求输入的十个整数中正数的个数及其平均值#include int main() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d,&a);if(a=0) continue;num+;sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num); return 0;t=1,pi=0,

12、n=1.0,s=1当当|t| 1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi分子:分子:1 1,-1-1,1 1,-1-1分母:分母:1 1,3 3,5 5,7 7,.兔子问题:兔子问题: 有一对兔子,从出生后第有一对兔子,从出生后第3 3个月起每个个月起每个月都生一对兔子,小兔子长到第三个月后每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?的兔子总数为多少? 程序分析:程序分析: 兔子的规律为数列兔子的规律为数列 1,1,2,3,5,8,13,21. 1,1,2,3,5

13、,8,13,21. 例求例求Fibonacci数列:数列:1,1,2,3,5,8,的前的前40个数个数f1=1,f2=1for i=1 to 20输出输出f1,f2f1=f1+f2f2=f2+f1例例 判断判断m m是否素数是否素数 读入读入m k= m i=2 当当i km被被i整除整除真真假假用用break结束循环结束循环i=i+1i k+1真真假假输出输出:m”是素数是素数”输出输出:m”不不是素数是素数”猴子吃桃子问题:猴子吃桃子问题: 猴子第一天摘下若干桃子,当即吃了猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。以后每天早上一半,还不过瘾,又多吃了一个。以后每天早上都

14、吃了前一天的一半又多一个。到第十天的早上,都吃了前一天的一半又多一个。到第十天的早上,想吃的时候,发现只剩下一个桃子了。问第一天想吃的时候,发现只剩下一个桃子了。问第一天总共摘了多少个桃子?总共摘了多少个桃子?分析:分析: 这这个个问问题题是是一一个个递递推推问问题题,第第1010天天只只剩剩下下一一个个桃桃子子,第第9 9天天吃吃了了桃桃子子的的一一半半并并还还多多吃吃了了一一个个,即即第第9 9天天的的桃桃子子数数是是4 4个个,第第8 8天天的的桃桃子子数数为为1010个个依依次次类类推推,可可以以得得出出第第1 1天天的的桃桃子子数。数。 通式:通式: 前一天桃子数前一天桃子数=(=(

15、后一天桃子数后一天桃子数+1)X2+1)X2#includestdio.hmain()inti,n1,n2;n2=1;for(i=1;i=9;i+)n1=(n2+1)*2;n2=n1;printf(Thepeachesofthefirstdayis%d.n,n1);getchar();getchar();return0;数字组合问题:数字组合问题:有有1 1、2 2、3 3、4 4个数字,能组成多少个互不个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?相同且无重复数字的三位数?都是多少? 程序分析:程序分析:可填在百位、十位、个位的数可填在百位、十位、个位的数字都是字都是1 1、2

16、 2、3 3、4 4。组成所有的排列后再。组成所有的排列后再去掉不满足条件的排列。去掉不满足条件的排列。 水仙花数问题水仙花数问题打印出所有的打印出所有的“水仙花数水仙花数”,所谓,所谓“水仙水仙花数花数”是指一个三位数,其各位数字立方和等是指一个三位数,其各位数字立方和等于该数字本身。于该数字本身。例如:例如:153=1153=13 3+5+53 3+3+33 3开始开始fora=1to9forb=0to9forc=0to9输出输出dd=?xd=a*100+b*10+cX=a*a*a+b*b*b+c*c*c结束结束yesno#includeintmain()inta,b,c,d,x;for(

17、a=1;a=9;a+)/*百位百位*/for(b=0;b=9;b+)/*十位十位*/for(c=0;c=9;c+)/*个位个位*/d=a*100+b*10+c;x=a*a*a+b*b*b+c*c*c;if(d=x)printf(Daffodilsnumberis%dn,d);getchar();return0;用一重循环解决水仙花数用一重循环解决水仙花数: :用一重循环的循环控制变量用一重循环的循环控制变量: :表示三位数表示三位数i4=100999i4=100999 百位数百位数i1=i4/100i1=i4/100 十位数十位数i2=(i4%100)/10i2=(i4%100)/10 个位数

18、个位数i3=i4%10i3=i4%10 水仙花水仙花数数i i4 4=i=i1 1*i*i1 1*i*i1 1+i+i2 2*i*i2 2*i*i2 2+i+i3 3*i*i3 3*i*i3 3 #include int main()int a,b,c,d; for (d=100; d=999; d+) a=d%10; /*个位个位*/ b=(d%100)/10; /*十位十位*/ c=d/100; /*百位百位*/ if (d=a*a*a+b*b*b+c*c*c) printf(Daffodils number is %dn,d); getchar(); return 0; 求值问题求值问题

19、 10 2i 10 2i 编程计算算式编程计算算式 j j 的值的值 i=1 j=ii=1 j=i设计分析:设计分析: 这个程序需要双层循环,外层循环由这个程序需要双层循环,外层循环由j j来控制,总共循环来控制,总共循环1010次,内层循环由次,内层循环由i i来控来控制,共执行制,共执行2j-j+1=j+12j-j+1=j+1次。基本操作是计次。基本操作是计算累加和,因此,在程序执行时共需要三算累加和,因此,在程序执行时共需要三个变量,两个循环控制变量和一个累积和个变量,两个循环控制变量和一个累积和变量。变量。算法N-S图: sum=0,i=1i=10j=i,j=2*isum+=jj+i+;输出输出i若该题要求输出以下格式,则怎样编写程序?若该题要求输出以下格式,则怎样编写程序?Sum=0!0+1+2=33+2+3+4=1212+3+4+5+6=3030+4+5+6+7+8=6060+5+6+7+8+9+10=105105+6+7+8+9+10+11+12=168168+7+8+9+10+11+12+13+14=252252+8+9+10+11+12+13+14+15+16=360360+9+10+11+12+13+14+15+16+17+18=495495+10+11+12+13+14+15+16+17+18+19+20=660结束语结束语谢谢大家聆听!谢谢大家聆听!44

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号