第5章 循环结构47613.ppt

上传人:hyn****60 文档编号:70984219 上传时间:2023-01-31 格式:PPT 页数:57 大小:250KB
返回 下载 相关 举报
第5章 循环结构47613.ppt_第1页
第1页 / 共57页
第5章 循环结构47613.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《第5章 循环结构47613.ppt》由会员分享,可在线阅读,更多相关《第5章 循环结构47613.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第 5 5 章章 循环结构循环结构循环:重复执行一段过程(语句)。循环:重复执行一段过程(语句)。其中重复执行的过程为其中重复执行的过程为循环体循环体。C中实现循环的三种语句中实现循环的三种语句:whiledo-whilefor循环循环:三种基本结构之一:三种基本结构之一形式:形式:while(表达式表达式)循环体循环体其中:其中:1)表达式表达式可是任意表达式可是任意表达式;2)循环体可以有任何语句)循环体可以有任何语句;3)当循环体为两条以上语句时,)当循环体为两条以上语句时,用用写成复合语句写成复合语句1.while语句语句执行功能:执行功能:while表达式表达式结束循环结束循环非非

2、0循环体循环体while语句语句0#includevoidmain()inti,n=6,f=1;i=1;while(i=n)f=f*i;i+;循环体循环体printf(“%dn!=%dn”,n,f);while语句语句运行结果运行结果:6!=720例题:求例题:求 n n!(当!(当n n为为6 6)#includevoidmain()inti,n=6,f=1;i=1;while(i+n)f=f*i;循环体循环体printf(“%d!=%dn”,n,f);以上求以上求n!的程序也可以写成以下的程序也可以写成以下:#includevoidmain()inti=1,n,f=1;scanf(“%d”

3、,&n);输入nwhile(in)f=f*i;i+;循环体循环体printf(“%d!=%dn”,n,f);求求n!,n可以是任意值可以是任意值注意;注意;1.循环体循环体2句以上时,用句以上时,用括起来,否则括起来,否则成为死循环。成为死循环。2.while(i=n)后没有后没有“;”号号,否则是死循环。否则是死循环。3.当开始条件就不成立,循环体可能一次也不执当开始条件就不成立,循环体可能一次也不执行。行。while语句语句形式:形式:do循环体循环体while(表达式表达式);其中:表达式和循环体的要求与其中:表达式和循环体的要求与while相同。相同。do-while(表达式表达式)最

4、后有最后有“;”号。号。2.do-while语句语句功能:功能:do-while语句语句表达式表达式结束循环结束循环0非非0循环体循环体do执行过程执行过程:先执行循环体,再判先执行循环体,再判断条件断条件(表达式表达式)是否满是否满足,若表达式为非足,若表达式为非0,再,再执行一遍循环体,再判执行一遍循环体,再判断,如此循环,直到表断,如此循环,直到表达式为达式为0,结束循环。,结束循环。例题:求例题:求n!(n是任意正整数值,若输入错,重新输入)是任意正整数值,若输入错,重新输入)#includevoidmain()inti,n,f=1;do printf(“输入一个正整数输入一个正整数:

5、”);scanf(“%d”,&n);while(n=0);/重新输入重新输入 i=1;dof*=i;i+;while(i=n);printf(“n!=%d”,f);do-while语句语句#includevoidmain()inti,n,f=1;scanf(“%d”,&n);i=1;dof*=i;while(i+n);printf(“n!=%d”,f);以上求以上求n!程序写成以下形式程序写成以下形式:vwhile为先为先判断后执行。循环体可能判断后执行。循环体可能一一次不作;次不作;vdo-while先执行,后判断。先执行,后判断。循环体至少执行一次。循环体至少执行一次。while与与do-

6、while比较:比较:例题例题:统计输入的字符个数统计输入的字符个数.#includevoidmain()charc1;intn=0;while(c1=getchar()!=n)n+;printf(“n=%dn”,n);while或或do-while例题:例题:#include void main()int a,r1,r2;scanf(“%d”,&a);do r1=a%10;a/=10;r2=a%10;while(a!=0&r1=r2);if(a!=0)printf(”no n”);else printf(”yes n”);例题:判断一个整数的各位数字是否都相同,例题:判断一个整数的各位数字是

7、否都相同,相同则显示相同则显示“yes“,否则显示否则显示”no”。形式:形式:for(e1;e2;e3)循环体循环体其中:其中:e1,e2,e3为表达式。为表达式。一般一般e1为赋值式;为赋值式;e2为关系或逻辑式,作为判断循环是否结束条件;为关系或逻辑式,作为判断循环是否结束条件;e3为增、减量。为增、减量。3.for语句语句执行功能:执行功能:判断判断e2结束循环结束循环0非非0循环体循环体计算计算e1计算计算e3forfor语句语句for(e1;e2;e3)循环体循环体例:求例:求i(i=1,2,3,.100)#includevoidmain()inti,sum=0;for(i=1;i

8、=100;i+)sum+=i;printf(“sum=%dn”,sum);for语句语句i=1;for(;i=100;i+)Sum+=i;省省e1for(i=1;i100)break;for语句使用说明:语句使用说明:q其中的其中的e1和和e3可以使用逗号运算符。可以使用逗号运算符。例:例:for(i=1,j=10;ij;i+,j-)printf(“%d%dn”,i,j);输出:输出:11029384756for语句使用说明:语句使用说明:qfor(e1;e2;e3)后边若有后边若有“;”则循环体为空语则循环体为空语句。句。例如例如:charc1;intn=0;for(;(c1=getchar

9、()!=n;n+);省略省略e1for语句使用说明:语句使用说明:循环语句中包括循环语句中包括if语句语句:例题:分别输出例题:分别输出100以内奇数的和与偶数的和以内奇数的和与偶数的和#include void main()int i,sum1,sum2;for(i=1,sum1=sum2=0;i100;i+)if(i%2)sum1+=i;else sum2+=i;printf(“sum1=%d sum2=%dn”,sum1,sum2);例题:求例题:求e的近似值公式:的近似值公式:(当当n=10时满足要求时满足要求)for语句例题:语句例题:#include void main()floa

10、t e=1.0;int n=1,i;for(i=1;i11;i+)n=n*i;求求n!e=e+1.0/n;printf(“e=%fn”,e);for语句例题:语句例题:结果:结果:e=2.718223注意注意:循环体为二条以上语问时,用循环体为二条以上语问时,用.括起来,否则只执行括起来,否则只执行for(e1;e2;e3)后边后边的一条语句。的一条语句。for语句例题:语句例题:用用while、do-while和和for实现同一循环实现同一循环#include void main()int i=1,sum=0;do sum+=i;i+;while(i=100);printf(“sum=%dn

11、”,sum);#include void main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(“sum=%dn”,sum);#include void main()int i=1,sum=0;for(;i=100;i+)sum+=i;printf(“sum=%dn”,sum);#include void main()int i=5;do printf(“%d”,i);i=i-2;while(i!=0);#include void main()int i=5;while(i!=0);printf(“%d”,i);i=i-2;#include void

12、 main()int i;for(i=5;i!=0;i=i-2)printf(“%d”,i);以下均为设计错误而造成死循环以下均为设计错误而造成死循环以下均为设计错误而造成死循环以下均为设计错误而造成死循环(无限循环)(无限循环):嵌套嵌套:在一个循环的循环体内又出现另一:在一个循环的循环体内又出现另一个循环时,称为循环的嵌套。个循环时,称为循环的嵌套。三种循环语句可以互相嵌套。三种循环语句可以互相嵌套。4.循环的嵌套:循环的嵌套:while(e1)dowhile(e);for(e1;e2;e3)while(e)for(a1;a2;a3)二二重重循循环环二二重重循循环环4.循环嵌套的形式:循环

13、嵌套的形式:for(e1;e2;e3)for(n1;n2;n3)for(m1;m2;m3).三三重重循循环环4.循环嵌套的形式:循环嵌套的形式:每当外层循环执每当外层循环执行一次时,内层行一次时,内层循环执行一遍,循环执行一遍,.如此进行,如此进行,直到外层执行完。直到外层执行完。多重循环执行:多重循环执行:uu二重以上循环称为多重循环二重以上循环称为多重循环;uu无论那种嵌套,内层必须完全套在外层的内部。无论那种嵌套,内层必须完全套在外层的内部。uu内外层循环的控制变量名不能相同,内外层循环的控制变量名不能相同,如下例的如下例的I、j、k。4.循环嵌套说明循环嵌套说明例如例如:for(i=1

14、;i=5;i+)for(j=0;j10;j+)for(k=1;k6;k+)语句语句1语句语句2语句语句3.语句语句1执行执行5105=250次次语句语句2执行执行50次次语句语句3执行执行5次次4.循环嵌套说明循环嵌套说明#includemain()inti,j;for(i=1;i10;i+)printf(“%4d”,i);for(i=1;i10;i+)for(j=1;j=i;j+)printf(“%4d”,i*j);printf(“n”);讨论以下程序输出内容:讨论以下程序输出内容:1 2 3 4 5 6 7 8 9 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6

15、 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81程序运行结果:程序运行结果:分析以下程序运行结果分析以下程序运行结果#include void main()int i,j;for(i=1;i10;i+)j=0;while(+j=10-i)printf(“%4d”,i*j);printf(“n);1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 3 6 9 12 15 18 21 4 8 12 16 20 24 5 10 15 20 25 6 12 1

16、8 24 7 14 21 8 16 9 程序运行结果:程序运行结果:#includevoidmain()intm,n,i;longs=0;for(m=1;m=10;m+)n=i=1;while(i=m)n*=i;i+;s+=n;printf(“1+2!+3!+.+10!=%ldn”,s);求:求:1+2!+3!+4!+.+10!见书上例题见书上例题例例10 例例14 例例15 例例18 例例19 例例20break语句形式语句形式:break;作用:作用:switch循环语句中使用循环语句中使用功能:与循环配合使用,终止正进行的功能:与循环配合使用,终止正进行的循环,循环,跳出循环体跳出循环体

17、,执行循环体,执行循环体后的语句。后的语句。4)辅助语句:辅助语句:(break和和continue)#includevoidmain()inti=2,n;scanf(“%d“,&n);while(in)if(n%i=0)break;i+;if(i=n)printf(“是素数是素数”);elseprintf(“不是素数不是素数n”);例:例:判断某数判断某数n是否为素数。是否为素数。第一次执行:第一次执行:输入:输入:17输出:是素数输出:是素数第二次执行:第二次执行:输入:输入:21输出:不是素数输出:不是素数continue语句形式:语句形式:continue;作用:只用于循环体内作用:只

18、用于循环体内.中断本次循环体的执行,中断本次循环体的执行,立即执行下一次循环体。立即执行下一次循环体。辅助语句:辅助语句:for(i=0;i10;i+).If(条件条件)continue;.#includevoidmain()inti;for(i=1;i5)5)个整数的和个整数的和#include void main()int n,s=0,i,x;kk:printf(“输入整数输入整数n(n5):”);scanf(“%d”,&n);if(n6)goto kk;for(i=1;i=n;i+)printf(“输入输入整数整数x:”);scanf(“%d”,&x);s+=x;printf(“和和=%

19、dn”,s);使用说明:使用说明:1)结构化程序设计限制使用)结构化程序设计限制使用goto.2)break语句在嵌套循环中只能跳出语句在嵌套循环中只能跳出本层循环。而使用本层循环。而使用goto可以从内层跳出到可以从内层跳出到最外层,但不提倡。破坏结构化原则。最外层,但不提倡。破坏结构化原则。例题例题:输入一行字符,分别统计其中字母、输入一行字符,分别统计其中字母、数字和其它字符的个数。数字和其它字符的个数。循环应用循环应用#includevoidmain()intan,sn,tn;charch;an=sn=tn=0;while(ch=getchar()!=n)if(ch=a&ch=A&ch

20、=0&ch=9)sn+;elsetn+;printf(“letter=%dn”,an);printf(“digital=%dn”,sn);printf(“other=%dn”,sn);执行程序当输入:执行程序当输入:sd45&*jjfg43kfk+xD8wEr$!输出:输出:letter=14digital=5other=6例题例题:求数列:求数列:0,1,1,2,3,5,8,13,21,34,前前40个数。个数。其中:第一、二两个数为其中:第一、二两个数为0、1,以后,以后每个数是前两个数之和。每个数是前两个数之和。循环应用循环应用#includevoidmain()intf1=0,f2=1

21、,i;printf(“%d%d”,f1,f2);for(i=3;i=21;i+)f1=f1+f2;f2=f1+f2;printf(“%d%d”,f1,f2);if(i+1)%2=0)printf(“n”);输出结果:输出结果:01123581321345589144233377610用下列公式计算用下列公式计算的值的值:精度要求精度要求10-6 例题:例题:循环应用循环应用#include#include Void main()int s;float n,t,pi;t=1;n=1.0;pi=0;s=1;while(fabs(t)1e-6)pi=pi+t;n+=2;s=-s;t=s/n;pi=p

22、i*4;printf(“pi=%10.6fn”,pi);求求:例:例:编程输出右边图案:编程输出右边图案:1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 89 9 9 9 9 9 9 9 9#include void main()int i,j;for(i=1;i10;i+)for(j=1;j=12-i;j+)printf(“);/输出每行前的空输出每行前的空格格 for(j=1;j=i;j+)/输出各行值输出各行值 printf(“%4d”,i);printf(“n”);/换行换行 例例:求两个正整数

23、的最大公约数。求两个正整数的最大公约数。#include void main()int m,n,r,m1,n1;printf(“输入两个正整数:输入两个正整数:”);scanf(“%d%d”,&m,&n);m1=m,n1=n;r=m1%n1;while(r)m1=n1;n1=r;r=m1%n1;printf(“%d和和%d的的最大公约数最大公约数=%dn”,m,n,n1);作业:作业:.编程序求 当最后一项1e-6时停止计算,输出s和n的值 2.编程序输出200以内同时能被和整除的那些数 3.编程序任意输入10个实数,求这10个数的和及平均值并输出 4.求sum=a+aa+aaa+aaaaa (其中a是1-9中的任意一位数)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁