C语言程序设计(5循环结构)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计(5循环结构)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 循环 结构 课件
- 资源描述:
-
1、C语言程序设计语言程序设计第五章第五章 循循 环环 结结 构构whilefordo-while循环是指使用一定条件对同一个程序段重复执行若干次。循环结构又称重复结构,可以完成重复性、规律性的操作。gotogoto 语句o一般格式:ogoto 语句标号语句标号 o由if goto 构成循环o例4-1:omain()oint x=0,y=0;ostar:if(x=3)oy=x+1;o x=x+1;ogoto star;printf(“%d”,y);分析输出结果。v一般形式:while()v执行流程:while语句循环体:被重复执行的部分表达式循环体假(0)真(非0)whilev 特点:先判断表达式
2、,后执行循环体v 说明:l 循环体有可能一次也不执行l 循环体可为任意类型语句l 下列情况,可退出while循环u 条件表达式不成立(为零)u 循环体内遇break,return,goto while语句特点和说明while()o例4-2:omain()oo int count=1;o while(count5)o o printf(”good morning!n”);o count+;o ogood morning!good morning!good morning!good morning!#includemain()int n=9;while(n6)n-;printf(“%d”,n);8
3、76main()int n=9;while(n6)n-;printf(“%dn”,n);6例例4-3:用用while循环求循环求sum=1+2+3+100#include main()int sum=0;int i=1;while(i=100)sum+=i;i+;printf(“sum=%d,sum);循环初值循环终值循环变量增值循环条件循环体如何求sum=1*2*3*100?【例【例5-13】猴子吃桃问题。】猴子吃桃问题。猴子第一天摘下若干桃子,当即吃掉一半,还不过瘾,又多吃了一猴子第一天摘下若干桃子,当即吃掉一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后
4、每个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃掉前一天剩下的一半零一个。到第天早上都吃掉前一天剩下的一半零一个。到第1010天早上再想吃时,天早上再想吃时,就只剩一个桃子了。问第一天共摘了多少个桃子?就只剩一个桃子了。问第一天共摘了多少个桃子?迭代法迭代法设第设第n天为天为xn个,第个,第n+1天为天为xn+1则:则:xn+1=xn/2-1可得递推公式:可得递推公式:xn=(xn+1+1)*2 1n9 x10=1 n=10即:即:x10=1 x9=(x10+1)*2=4 x8=(x9+1)*2=10 x1=(x2+1)*2=1534算法分析:算法分析:倒推倒推#incl
5、ude main()int p2=1,p1;intn=9;while(n0)p1=2*(p2+1);p2=p1;n-;printf(“the total is%dn”,p1);#include main()int n=0;long t=1;printf(“n n!n”);while(n8)n+;t*=n;printf(%d%ld n,n,t);运行结果:n n!1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 求n!(n=18)do-while语句v一般形式:do while();v执行流程:do循环体expr假(0)真(非0)while“;”不能少exp
6、r循环体假(0)真(非0)循环体while循环v 特点:先执行循环体,后判断表达式v 说明:l 至少执行一次循环体l dowhile可转化成while结构dowhile语句特点和说明do while();omain()o int x=3;o doo o printf(“%d”,x-=2);o while(x=0);o1-1x=x-2;printf(“%d”,x);求1+2+3+100#include main()int sum=0,i;i=1;do sum=sum+i;i+;while(i=100);printf(”sum=%dn”,sum);#include main()int sum=0;
7、int i=1;while(i=100)sum=sum+i;i+;printf(“sum=%d,sum);main()int i=1,s=0;while(i1)s=s+i;i=i+1;printf(s=%dn,s);s=0main()int i=1,s=0;do s=s+i;i=i+1;while(i1);printf(s=%dn,s);s=1do-while与与while的区别的区别v 一般形式:for(表达1;表达式2;表达式3)v 执行流程:expr2循环体假(0)真(非0)forexpr1expr3for语句v 一般应用形式:for(初始化表达式;条件表达式;修正表达式)v 说明:l
8、for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省l for语句可以转换成while结构表达式1;while(表达式2)表达式3;for语句for(for(表达表达1;1;表达式表达式2;2;表达式表达式3)3)形式:形式:#includemain()int i=0;for(i=0;i10;i+)putchar(a+i);运行结果:abcdefghij形式:形式:#includemain()int i=0;for(;i10;i+)putchar(a+i);形式:形式:#includemain()int i=0;for(;i10;)putchar(a+(i+);形
9、式:形式:#includemain()int i=0;for(;i10;putchar(a+i),i+);例:for语句形式的多样性omain()oint i;o for(i=0;i10;i+)o i+;o printf(“%d”,i);o omain()int i;for(i=1;i5;i+);printf(“%d”,i);513579空语句求1+2+3+100main()int sum=0,i;for(i=1;i=100;i+)sum=sum+i;printf(”sum=%dn”,sum);几种循环的比较oowhile(表达式)o 语句;oodo 语句while(表达式);循环控制条件循环
10、控制条件循环条件初始化循环条件初始化循环修改条件循环修改条件也可在也可在forfor前前也可在循环体内也可在循环体内for(表达式1;表达式2;表达式3)语句 几种循环的比较123循环体的执行:先判断条件,循先判断条件,循环体可能一次也环体可能一次也不执行。不执行。while(表达式表达式)语句语句;后判断条件,后判断条件,循环体至少执循环体至少执行一次行一次.do 语句语句while(表达式表达式);for循环功能强,循环功能强,两者界限不清,两者界限不清,使用较随意。使用较随意。for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句界限不清界限不清界限不清界限不清小结小结v 循环
11、控制有两种方法:循环控制有两种方法:计数法计数法和和标志法标志法。能确定循环次数时,采用计数法,用能确定循环次数时,采用计数法,用for语句比较清晰;语句比较清晰;不能确定循环次数时,采用标志法,设法找出循环终不能确定循环次数时,采用标志法,设法找出循环终止条件,用止条件,用while或或do-while语句来实现。语句来实现。v 用用while与与do-while语句能实现的程序,用语句能实现的程序,用for语句未必可以语句未必可以实现。实现。v while语句是先判断后执行,语句是先判断后执行,do-while语句是先执行后判断。语句是先执行后判断。在循环体至少执行一次的情况下两者等价。在
12、循环体至少执行一次的情况下两者等价。#include main()int i,s;s=0;i=1;while(i=100)s=s+i;i+;printf(s=%dn,s);计算计算s=1+2+3+100s=1+2+3+100#include main()int i,s;s=0;i=1;do s=s+i;i+;while(i=100);printf(s=%dn,s);#include main()int i,s=0;for(i=1;i=100;i+)s=s+i;printf(s=%dn,s);i=1;i=1;for(;i=100;)for(;i=100;)s=s+i;s=s+i;i+;i+;om
13、ain()o int i;o for(i=1;i=0);去掉分号,结果是?例例:求:求Fibonacci数列第数列第40项。又叫项。又叫兔子繁殖问题(兔子繁殖问题(Fibonacci提出的)提出的)main()int n,m;long f1=1,f2=1,f3;printf(“%ld%ld”,f1,f2);for(m=3;m=40;m+)f3=f1+f2;f1=f2;f2=f3;printf(“%d”,f3);p r i n t f(“n”);设有一对新生兔子,从第设有一对新生兔子,从第3个月开始,每个月都生一对兔子。按此个月开始,每个月都生一对兔子。按此规律,若所有兔子都不死,问一年后共有多
14、少对兔子?规律,若所有兔子都不死,问一年后共有多少对兔子?迭代法迭代法算法分析:算法分析:月月:1 2 3 4 5 6 7 8:1 2 3 4 5 6 7 8 1 1-1 11 11 11 11 11-11-1 1 1 1 1-1 1 1 11 1-1 1 1 1 1 11 11 1-1 1 1 1 1 1-1 1 1 11 11 11 11 1 1 1 1 1-1 1 1 11 11 1 1 1兔兔:1 1 2 3 5 8 13 21f1 f21 1 f3=f1+f2 2 f1 f2 f3=f1+f2 3 f1 f2 f3=f1+f2 5 f1 f2 f3=初始条件初始条件终止条件终止条件迭
15、代公式迭代公式思考:思考:f1=f2和和f2=f3能否对换能否对换位置?不位置?不例例:打印出所有的水仙花数。一个打印出所有的水仙花数。一个3位数,其各位数字的位数,其各位数字的立方和等于它本身。立方和等于它本身。分析:百位数i=m/100;十位数:j=m/10%10;个位数k=m%10;判断m=i3+j3+k3main()int i,j,k,m;for(m=100;m1000;m+)i=m/100;j=m/10%10;k=m%10;if(m=i*i*i+j*j*j+k*k*k)printf(%5d,m);穷举法穷举法计数法计数法统计从键盘输入一行字符的个数.omain()oo int cou
展开阅读全文