第六章循环控制_第1页
第六章循环控制_第2页
第六章循环控制_第3页
第六章循环控制_第4页
第六章循环控制_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、相同算法的结构,称为循环。初始化部分。循环体。含有时条件趋循环体。含有时条件趋假的语句。假的语句。 循环的条件。循环的条件。循环应在有限次完循环应在有限次完成。成。 c语言提供了三类实现循环的语句语言提供了三类实现循环的语句:while,dowhile,for第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤while循环(当型循环)循环(当型循环)格式:格式:while(expression)statement;表达式:值非表达式:值非0,表,表示满足条件;值为示满足条件;值为0代表不满足条件。代表不满足条件。语句(复合语句),重复语句(复合语

3、句),重复执行部分(循环体)。执行部分(循环体)。流程:流程:e?yesstatement;no含有使条件含有使条件趋假的语句。趋假的语句。举例:举例:求求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第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤dowhile循环(直到型循环)循环(直到型循环)格式:格式:dos

4、tatement;while(expression);流程:流程:statement;e?yesno含有使条件趋假的语句。含有使条件趋假的语句。while循环与循环与do-while循环的区别:循环的区别:vwhile循环先判条件,后执行循环体;循环先判条件,后执行循环体;vdowhile循环先执行循环体,后判条件。循环先执行循环体,后判条件。举例:举例: 求:求:30!#includevoidmain(void)floats=1.0;inti=1;dos*=i;i+;while(i=30);printf(“30!=%f”,s);初始化。初始化。循环体。循环体。测试条件。测试条件。使条件趋假。

5、使条件趋假。chp3ex6思考题:思考题:用用do-while实现实现s=1+2+100。用。用while实现实现30!。!。第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤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、e

6、3都可以省略!都可以省略!e1省略省略s=0,i=1;e3省略省略i+;初值表达式。测试表达式。增值表达式。第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤循环应用的几个问题循环应用的几个问题循环的嵌套循环的嵌套 概念:在一个循环的循环体内又包含一个完整的循环称为循环概念:在一个循环的循环体内又包含一个完整的循环称为循环的嵌套。的嵌套。 打印打印9 9乘法表。乘法表。#includevoidmain(void)inti,j;for(i=1;i=9;i+)for(j=1;j=9;j+)printf(“%4d“,i*j);printf(“n“);外

7、层循环内层循环说明:说明: 内外层循环采用缩进形式。内外层循环采用缩进形式。while和和do-while和和for可以可以相互嵌套。相互嵌套。 执行次数为内层次数和外存执行次数为内层次数和外存 次数的乘积。次数的乘积。 chp3ex7如何打印如何打印乘法表的乘法表的一半?一半?第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤循环的中断循环的中断(break)和继续和继续(continue)循环的中断:循环的中断:break语句语句概念:循环体中可以加分支,判断是否继续执行循环,概念:循环体中可以加分支,判断是否继续执行循环,break语句可以

8、提前结束循环。语句可以提前结束循环。举例:求:举例:求:r=110的圆的面积,如圆面积大于的圆的面积,如圆面积大于100则中断。则中断。for(r=1;r100)break;printf(“n%f“,area);满足条件,则退出循环。满足条件,则退出循环。继续循环:继续循环:continue语句语句continue语句的作用是跳过本次循环剩余的循环体内容,执行语句的作用是跳过本次循环剩余的循环体内容,执行下次循环。下次循环。举例:求举例:求1100内的偶数和。内的偶数和。s=0;for(n=1;n=100;n+)if(n%2!=0)continue;s+=n;满足条件,跳过循满足条件,跳过循环

9、体,继续循环。环体,继续循环。第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤无限循环和空循环无限循环和空循环条件为恒真的循环条件为恒真的循环无限循环无限循环while(1)dowhile(1);for(;)靠条件控制的靠条件控制的break语句退出循环。语句退出循环。例:程序等待直到输入字母例:程序等待直到输入字母a。for(;)ch=getchar();if(ch=a)break;循环体为空语句的循环循环体为空语句的循环空循环空循环for(i=1;i=max;t+);作用:程序延时。作用:程序延时。空语句空语句第六章第六章 循环控制循环控制

10、wudaixianwudaixianwudaixian主讲人:吴代贤goto语句语句格式:格式:gotolabel/*label:同一函数内语句前的标号。同一函数内语句前的标号。*/作用:转移到标号对应的语句上继续执行。作用:转移到标号对应的语句上继续执行。loop:if(i=100)sum=sum+i;i+;gotoloop;第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤循环和分支相互嵌套循环和分支相互嵌套输入输入10个自然数统计其中偶数的个数及偶数值和。个自然数统计其中偶数的个数及偶数值和。算法框图:算法框图:start定义变量定义变量初

11、始化初始化循环?循环?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,isum);循环结构循环结构分支结构分支结构输入负数?输入负数?doif(ix=0)printf(“dateerror”);while(ix=0);算法的健壮性算法的健壮性注意:结构应完整的包含和被包含。注意:结构应完整

12、的包含和被包含。第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤举例:举例:求求100到到200之间的所有素数(只能被之间的所有素数(只能被1和自身整除的数)。和自身整除的数)。对于自然数对于自然数n,判断其是否为素数有以下三种方法:,判断其是否为素数有以下三种方法:判断判断n是否能被从是否能被从2到到n-1范围内的数整除;范围内的数整除;判断判断n是否能被从是否能被从2到到(int)(n/2)范围的数整除;范围的数整除;判断判断n是否能被从是否能被从2到到(int)sqrt(n)范围的数整除;范围的数整除;程序设计中标志技术的使用程序设计中标

13、志技术的使用在程序设计中,经常要记录一些状态,作为判断的条件。因此在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。需要在程序中设置一些标志,通常标志是整型变量。如:设置变量如:设置变量iflag用于记录是否是素数,用于记录是否是素数,iflag=1是素数;是素数;iflag=0不是素数。不是素数。第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤判断某自然数判断某自然数n是否是素数的算法是否是素数的算法s=sqrt(n);iflag=1;i从从2循环到循环到sn%i=0yesiflag=0;br

14、eak;no继续循环继续循环直到退出直到退出iflag=0?第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤程序如下:程序如下:#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是素数。是素数。枚举所有数枚举所有数构造,测试条件构造,测试条件假定假定n是素数。是素数。如果如果n能被能

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

16、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第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤思考题:思考题:36人一次搬人一次搬36块砖,男搬块砖,男搬4,女搬,女搬2,两个小孩抬一块。要一,两个小孩抬一块。要一次搬完。问:男、女、小孩要多少?次搬完。问:男、女、小孩要

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

18、吴代贤举例举例求求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)

19、break;chp3exa第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤用梯形法求定积分用梯形法求定积分412)412(dxxx(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迭代求积分的方法迭代求积分的方法第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:

20、吴代贤程序如下:#includevoidmain(void)floata,b,f0,f1,h,x,s=0.0;intn,i;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迭代初值。迭代循环第六章第六章 循环控制循环控制wudaixianwudaixianwudaixian主讲人:吴代贤求求s=a+aa+aaa+aaaa。0a10共共n

21、项,最后一项有项,最后一项有n个个a。如求如求s=2+22+222+2222+222222n、a从键盘输入。从键盘输入。迭代次数:迭代次数:i=1n迭代初值:迭代初值:s=0.0,t=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);第六章第六章 循环控制循环控制wudaixianw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论