《循环控制》PPT课件.ppt

上传人:wuy****n92 文档编号:53998606 上传时间:2022-10-27 格式:PPT 页数:21 大小:428.50KB
返回 下载 相关 举报
《循环控制》PPT课件.ppt_第1页
第1页 / 共21页
《循环控制》PPT课件.ppt_第2页
第2页 / 共21页
点击查看更多>>
资源描述

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

1、第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤第六章第六章 循环控制循环控制第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤6.1循环结构循环结构程序经常会重复执行某些相同的操作,如:程序经常会重复执行某些相同的操作,如:求:求:s=1+2+3+4+100算法描述:算法描述:s=0;i=1;s+=i;i+;判断判断i是否小于等于是否小于等于100 如果如果i小于等于小于等于100,重复,重复;否则,结束。否则,结束。此类根据某个条件重复执行相同算法的结构,称为循环。此类根据某个条件重复执行相同算法的结构,称为循环。初始化部分。循环体。含有时条件趋循环体。含有时条件

2、趋假的语句。假的语句。循环的条件。循环的条件。循环应在有限次完循环应在有限次完成。成。C语言提供了三类实现循环的语句语言提供了三类实现循环的语句:while,dowhile,for第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤while循环(当型循环)循环(当型循环)格式:格式:while(expression)statement;表达式:值非表达式:值非0,表,表示满足条件;值为示满足条件;值为0代表不满足条件。代表不满足条件。语句(复合语句),重复语句(复合语句),重复执行部分(循环体)。执行部分(循环体)。流程:流程:e?yesstatement;no含有使条件含有使条件

3、趋假的语句。趋假的语句。举例:举例:求求s=1+2+3+4+100#includevoidmain(void)ints=0,i=1;while(i=100)s=s+i;/*s+=i;*/i+;printf(“s=%dn”,s);初始化部分初始化部分循环体循环体条件测试条件测试使条件趋假语句使条件趋假语句chp3ex5第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤dowhile循环(直到型循环)循环(直到型循环)格式:格式:dostatement;while(expression);流程:流程:statement;e?yesno含有使条件趋假的语句。含有使条件趋假的语句。whil

4、e循环与循环与do-while循环的区别:循环的区别:vwhile循环先判条件,后执行循环体;循环先判条件,后执行循环体;vdowhile循环先执行循环体,后判条件。循环先执行循环体,后判条件。举例:举例:求:求:30!#includevoidmain(void)floats=1.0;inti=1;dos*=i;i+;while(i=30);printf(“30!=%f”,s);初始化。初始化。循环体。循环体。测试条件。测试条件。使条件趋假。使条件趋假。chp3ex6思考题:思考题:用用do-while实现实现s=1+2+100。用。用while实现实现30!。!。第六章第六章 循环控制循环控

5、制Wudaixian主讲人:吴代贤for循环循环格式:格式:for(e1;e2;e3)statement;流程:流程:e1e2?yesstatement;e3no举例:举例:求:求:s=1+2+3+100#includevoidmain(void)ints,i;for(s=0,i=1;i=100;i+)s=s+i;printf(“s=%d”,s);使使e2趋假。趋假。在在for循环中,循环中,e1、e2、e3都可以省略!都可以省略!e1省略省略s=0,i=1;e3省略省略i+;初值表达式。测试表达式。增值表达式。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤循环应用的几个问题循

6、环应用的几个问题循环的嵌套循环的嵌套 概念:在一个循环的循环体内又包含一个完整的循环称为循环概念:在一个循环的循环体内又包含一个完整的循环称为循环的嵌套。的嵌套。打印打印9 9乘法表。乘法表。#includevoidmain(void)inti,j;for(i=1;i=9;i+)for(j=1;j=9;j+)printf(“%4d“,i*j);printf(“n“);外层循环内层循环说明:说明:内外层循环采用缩进形式。内外层循环采用缩进形式。while和和do-while和和for可以可以相互嵌套。相互嵌套。执行次数为内层次数和外存执行次数为内层次数和外存 次数的乘积。次数的乘积。chp3ex

7、7如何打印如何打印乘法表的乘法表的一半?一半?第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤循环的中断循环的中断(break)和继续和继续(continue)循环的中断:循环的中断:break语句语句概念:循环体中可以加分支,判断是否继续执行循环,概念:循环体中可以加分支,判断是否继续执行循环,break语句可以提前结束循环。语句可以提前结束循环。举例:求:举例:求:r=110的圆的面积,如圆面积大于的圆的面积,如圆面积大于100则中断。则中断。for(r=1;r100)break;printf(“n%f“,area);满足条件,则退出循环。满足条件,则退出循环。继续循环:继续

8、循环:continue语句语句continue语句的作用是跳过本次循环剩余的循环体内容,执行语句的作用是跳过本次循环剩余的循环体内容,执行下次循环。下次循环。举例:求举例:求1100内的偶数和。内的偶数和。s=0;for(n=1;n=100;n+)if(n%2!=0)continue;s+=n;满足条件,跳过循满足条件,跳过循环体,继续循环。环体,继续循环。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤无限循环和空循环无限循环和空循环条件为恒真的循环条件为恒真的循环无限循环无限循环while(1)dowhile(1);for(;)靠条件控制的靠条件控制的break语句退出循环。

9、语句退出循环。例:程序等待直到输入字母例:程序等待直到输入字母A。for(;)ch=getchar();if(ch=A)break;循环体为空语句的循环循环体为空语句的循环空循环空循环for(i=1;i=MAX;t+);作用:程序延时。作用:程序延时。空语句空语句第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤goto语句语句格式:格式:gotoLabel/*Label:同一函数内语句前的标号。同一函数内语句前的标号。*/作用:转移到标号对应的语句上继续执行。作用:转移到标号对应的语句上继续执行。loop:if(i=100)sum=sum+i;i+;gotoloop;第六章第六章

10、 循环控制循环控制Wudaixian主讲人:吴代贤循环和分支相互嵌套循环和分支相互嵌套输入输入10个自然数统计其中偶数的个数及偶数值和。个自然数统计其中偶数的个数及偶数值和。算法框图:算法框图:start定义变量定义变量初始化初始化循环?循环?yes输入输入偶数?偶数?yes统计累加统计累加nono输出结果输出结果end#includevoidmain(void)inti,ix,iCount=0,iSum=0;for(i=1;i=10;i+)scanf(“%dn”,&ix);if(ix%2=0)iSum+=ix;iCount+;printf(“Num=%dnSum=%d”,iCount,iSu

11、m);循循环环结结构构分分支支结结构构输入负数?输入负数?doif(ix=0)printf(“dateerror”);while(ix=0);算法的健壮性算法的健壮性注意:结构应完整的包含和被包含。注意:结构应完整的包含和被包含。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤举例:举例:求求100到到200之间的所有素数(只能被之间的所有素数(只能被1和自身整除的数)。和自身整除的数)。对于自然数对于自然数n,判断其是否为素数有以下三种方法:,判断其是否为素数有以下三种方法:判断判断n是否能被从是否能被从2到到n-1范围内的数整除;范围内的数整除;判断判断n是否能被从是否能被从

12、2到到(int)(n/2)范围的数整除;范围的数整除;判断判断n是否能被从是否能被从2到到(int)sqrt(n)范围的数整除;范围的数整除;程序设计中标志技术的使用程序设计中标志技术的使用在程序设计中,经常要记录一些状态,作为判断的条件。因此在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。需要在程序中设置一些标志,通常标志是整型变量。如:设置变量如:设置变量iFlag用于记录是否是素数,用于记录是否是素数,iFlag=1是素数;是素数;iFlag=0不是素数。不是素数。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤判断某自然

13、数判断某自然数n是否是素数的算法是否是素数的算法s=sqrt(n);iFlag=1;i从从2循循环环到到sn%i=0yesiFlag=0;break;no继续循环继续循环直到退出直到退出iFlag=0?第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤程序如下:程序如下:#include#includevoidmain(void)intn,j,s,iFlag;for(n=101;n200;n+=2)s=sqrt(n);iFlag=1;for(j=2;j=s;j+)if(n%j=0)iFlag=0;break;if(iFlag)printf(“n%d”,n);0不是素数;不是素数;1

14、是素数。是素数。枚枚举举所所有有数数构构造造,测测试试条条件件假定假定n是素数。是素数。如果如果n能被能被2到到s的任的任意数整除,设标志退出循意数整除,设标志退出循环。环。如果如果n是素数,输出是素数,输出n。chp3ex8第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤求水仙花数(条件:三位数的个、十、百位的方和等于该求水仙花数(条件:三位数的个、十、百位的方和等于该数。数。153=13+53+33)。)。n为枚举变量,枚举初值为枚举变量,枚举初值100,枚举终值,枚举终值999。构造条件:取出构造条件:取出n的个、十、百位数。的个、十、百位数。测试是否满足条件,满足条件输出

15、测试是否满足条件,满足条件输出n。#includevoidmain(void)intn,a,b,c;for(n=100;n=999;n+)a=n/100;b=n%100/10;c=n%10;if(a*a*a+b*b*b+c*c*c=n)printf(“n%d”,n);枚枚举举所所有有三三位位数数构构造造条条件件测试条件测试条件取取n的百位的百位a、十位、十位b、个位、个位c。chp3ex9第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤思考题:思考题:36人一次搬人一次搬36块砖,男搬块砖,男搬4,女搬,女搬2,两个小孩抬一块。要一,两个小孩抬一块。要一次搬完。问:男、女、小孩要

16、多少?次搬完。问:男、女、小孩要多少?“百鸡百钱百鸡百钱”问题:问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?找出找出1000以内的完数,所谓完数是指该数的各因子之和等于以内的完数,所谓完数是指该数的各因子之和等于该数,如该数,如6=1+2+3。证明证明6到到200以内的数,符合哥德巴赫猜想(一个大于以内的数,符合哥德巴赫猜想(一个大于6的偶的偶数,可以分解成两个质数之和)。数,可以分解成两个质数之和)。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤举例

17、举例求求ex=1+x+x2/2!+xn/n!前前n+1项之和。项之和。迭代次数迭代次数i012n迭代公式迭代公式t=t*x/i迭代初值迭代初值exp=1,t=1,(i=1n)#includevoidmain(void)floatexp,x,t;inti,n;scanf(“%f,%d”,&x,&n);t=1.0;exp=1.0;for(i=1;i=n;i+)t*=x/i;exp+=t;printf(“n%f15.6”,exp)迭代初值。迭代初值。迭代公式。迭代公式。迭迭代代过过程程附加条件:附加条件:当当|t|10-5,结束运算。结束运算。if(fabs(t)1e-5)break;chp3exa

18、第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤用梯形法求定积分用梯形法求定积分(0,0)yxf(x)ab面积面积hx将将a,b分为分为n等份,等份,h=(b-a)/n;求求n个梯形面积之和,第个梯形面积之和,第i小面积小面积x=x+hf1=f(x)下底下底s=s+(f0+f1)*h/2f0=f1迭代迭代x初值为初值为as初值为初值为0f0初值为初值为f(a)次数为次数为n迭代求积分的方法迭代求积分的方法第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤程序如下:#includevoidmain(void)floata,b,f0,f1,h,x,s=0.0;intn,i

19、;scanf(“%f,%f,%d”,&a,&b,&n);h=(b-a)/h;x=a;f0=x*x+12.0*x+4.0;for(i=0;in;i+)x=x+h;f1=x*x+12.0*x+4.0;s=s+(f0+f1)*h/2.0;f0=f1;printf(“%f”,s);chp3exb迭代初值。迭代循环第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤求求s=a+aa+aaa+aaaa。0a10共共n项,最后一项有项,最后一项有n个个a。如求如求s=2+22+222+2222+222222n、a从键盘输入。从键盘输入。迭代次数:迭代次数:i=1n迭代初值:迭代初值:s=0.0,t

20、=a 迭代公式:迭代公式:t=t*10+a#includevoidmain(void)floats,t;inti,a,n;doscanf(“%d,%d”,&a,&n);if(a9)printf(“nDataInputError!nInputagain:”);while(a9);for(s=0.0,t=a,i=1;i=n;i+)s+=t;t=t*10+a;printf(“ns=%f”,s);第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤xyf(x)x1f1=f(x1)x2f2=f(x2)算法分析:算法分析:输入输入x1、x2,并求出,并求出f1、f2。如果如果f1*f2大于大于0

21、,有可能在此,有可能在此区间内没有根,重新输入。区间内没有根,重新输入。否则,将区间二分否则,将区间二分x=(x1+x2)/2计算出计算出f=f(x)xf判断判断f与与f1是否同号是否同号如果同号:如果同号:x1=x,f1=f否否则:则:x2=x,f2=fx1f1f1f2判断判断fabs(x1-x2)是否小于某个规定的精度是否小于某个规定的精度(如如10-6):如果小于精度:求出根,退出到如果小于精度:求出根,退出到。否否则:继续则:继续。输出根。输出根。二分法求方程二分法求方程f(x)=x3-6x-1=0,在,在0,5区间的根。区间的根。第六章第六章 循环控制循环控制Wudaixian主讲人:吴代贤二分法求方程根程序二分法求方程根程序#include#includevoidmain(void)floatx1,x2,x,f1,f2,f;scanf(“%f,%f”,&x1,&x2);f1=x1*x1*x1-6.0*x1-1;f2=x2*x2*x2-6.0*x2-1;dox=(x1+x2)/2;f=x*x*x-6.0*x-1;if(f*f1=0)f1=f;x1=x;elsef2=f;x2=x;while(fabs(x1-x2)=1e-6);printf(“Rootis:%f”,(x1+x2)/2);chp3exd迭代初值。二分迭代循环迭代条件。

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

当前位置:首页 > 教育专区 > 初中资料

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

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