第六章循环控制优秀PPT.ppt

上传人:石*** 文档编号:74450871 上传时间:2023-02-26 格式:PPT 页数:31 大小:2.16MB
返回 下载 相关 举报
第六章循环控制优秀PPT.ppt_第1页
第1页 / 共31页
第六章循环控制优秀PPT.ppt_第2页
第2页 / 共31页
点击查看更多>>
资源描述

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

1、第六章循环控制第一页,本课件共有31页6.1 6.1 概述概述程序经常会重复执行某些相同的操作,如:程序经常会重复执行某些相同的操作,如:求:求:s=1+2+3+4+100算法描述:算法描述:s=0;i=1;s+=i;i+;判断判断i是否小于等于是否小于等于100 如果如果i小于等于小于等于100,重复,重复;否则,结束。否则,结束。此类根据某个条件重复执行相同算法的结构,称为循环。此类根据某个条件重复执行相同算法的结构,称为循环。初始化部分。循环体。循环体。循环的条件循环的条件:循环应在有限次完成。循环应在有限次完成。C 语言提供了三类实现循环的语句语言提供了三类实现循环的语句:while,

2、do while,for 第二页,本课件共有31页6.2 6.2 gotogoto语句语句goto语句语句格式:格式:goto Label /*Label:同一函数内语句前的标号。同一函数内语句前的标号。*/作用:转移到标号对应的语句上继续执行。无条件转向语句作用:转移到标号对应的语句上继续执行。无条件转向语句.loop:if (i=100)sum=sum+i;i+;goto loop;语语句句标标号号的的命命名名规规则则:与与变变量量名名相相同同,即即由由字字母母、数数字字和和下下划划线线组组成成,其其第一个字符必须为字母或下划线。不能用整数来作标号。例如:第一个字符必须为字母或下划线。不能

3、用整数来作标号。例如:goto labeL1;goto l23;这样写对吗?这样写对吗?第三页,本课件共有31页6.2 6.2 gotogoto语句语句注意注意:结结构构化化程程序序设设计计方方法法主主张张限限制制使使用用goto语语句句,因因为为滥滥用用goto语语句句将将使使程程序序流流程程无无规规律律、可可读读性性差差。但但也也不不是是绝绝对对禁禁止止使使用用goto语语句句。一一般般来来说说,可以有两种用途:可以有两种用途:与与if语句一起构成循环结构;语句一起构成循环结构;if()goto kk;从从循循环环体体中中跳跳转转到到循循环环体体外外,但但在在C语语言言中中可可以以用用br

4、eak语语句句和和continue语语句句跳跳出出本本层层循循环环和和结结束束本本次次循循环环。goto语语句句的的使使用用机机会会已已大大大大减减少少,只只是是需需要要从从多多层层循循环环的的内内层层循循环环跳跳到到外外层层循循环环外外时时才才用用到到goto语语句句。但但是是这这种种用用法法不不符符合合结结构构化化原原则则,一一般般不不宜宜采采用用,只只有在不得已时才使用有在不得已时才使用。第四页,本课件共有31页6.2 6.2 gotogoto语句语句举例举例:用用 if 和和 goto 语句构成循环,求语句构成循环,求1+2+3+100main()/*test1.c*/int i,su

5、m=0;i=1;ll:if(i=100)sum=sum+i;i+;goto ll;printf(sum=%d,sum);第五页,本课件共有31页6.3 6.3 whilewhile语句语句while 循环(当型循环)循环(当型循环)格式:格式:while(expression)statement;表达式:值非表达式:值非0,表示,表示满足条件;值为满足条件;值为0代表不满足条件。代表不满足条件。语句(复合语句),重复执语句(复合语句),重复执行部分(循环体)。行部分(循环体)。流程:流程:e?yesstatement;no第六页,本课件共有31页举例:举例:求求1+2+3+100#includ

6、e /*test2.c*/void main(void)int s=0,i=1;while(i=100)s=s+i;/*s+=i;*/i+;printf(“s=%d n”,s);初始化部分初始化部分循环体循环体条件测试条件测试6.3 6.3 whilewhile语句语句i=1i=100Sum=sum+ii=i+10非非0 注意注意:1、循环体如果包含一个以上的语句,应该用花括弧循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。如果不加花括弧,则括起来,以复合语句形式出现。如果不加花括弧,则while语句的范围只语句的范围只到到while后面第一个分号处。后面第一个分号处。2

7、、在循环体中应有使循环趋向结束的语句、在循环体中应有使循环趋向结束的语句.第七页,本课件共有31页6.4 6.4 do-whiledo-while语句语句格式:格式:do statement;while(expression);流程:流程:statement;e?yesno含有使条件趋假的语句。含有使条件趋假的语句。while循环与循环与do-while循环的区别:循环的区别:vwhile循环先判条件,后执行循环体;循环先判条件,后执行循环体;vdo while循环先执行循环体,后判条件。循环先执行循环体,后判条件。第八页,本课件共有31页6.4 6.4 do-whiledo-while语句语

8、句举例:举例:求:求:30!#include void main(void)float s=1.0;int i=1;do s*=i;i+;while(i=30);printf(“30!=%f”,s);初始化。初始化。循环体。循环体。测试条件。测试条件。?思考题:思考题:1.用用do-while实现实现s=1+2+100 2.用用while实现实现30!。!。使条件趋假。使条件趋假。第九页,本课件共有31页6.4 6.4 do-whiledo-while语句语句举例:举例:while和和do一一while循环的比较循环的比较 1)main()()/*test3.c*/2)main()()/*te

9、st4.c*/int sum0,i;int sum=0,i;scanf(”d”,i););scanf(”d”,&i););while(i10)do sum=sum十十i;sumsum十十i;i+;i+;while(i=10);printf(“%d”,sum);printf(“%d”,sum);Sum=0别别忘了忘了第十页,本课件共有31页6.5 6.5 for for 语句语句 for循环循环格式:格式:for(e1;e2;e3)statement;流程:流程:e1e2?yesstatement;e3no使使e2趋假。趋假。初值表达式。测试表达式。增值表达式。(1)(1)先求解表达式先求解表达

10、式1 1;(2)求解表达式求解表达式2,若其值为真(非,若其值为真(非0),则执行),则执行for语句中指定的语句中指定的内嵌语句内嵌语句,然后执行下面第(,然后执行下面第(3)步,若为假()步,若为假(0),则结束循环,转到第(),则结束循环,转到第(5)步。)步。(3(3)若若表表达达式式为为真真,在在执执行行指指定定的的语语句句后后,求求解解表表达式达式3 3。(4(4)转转回上面第(回上面第(2 2)步)步骤继续执骤继续执行。行。(5(5)执行)执行FORFOR语句下面的一个语句。语句下面的一个语句。forfor语句的形式如下:语句的形式如下:for(循环变量赋初值;循环条件;(循环变

11、量赋初值;循环条件;循环变量增值)语句循环变量增值)语句 第十一页,本课件共有31页6.5 6.5 for for 语句语句for(e1;e2;e3)在在for循环中,循环中,e1、e2、e3都可以省略!都可以省略!1.for语句中语句中表达式表达式1可以省略可以省略,其后的分号不能省略。执行时,跳过,其后的分号不能省略。执行时,跳过“求解表达式求解表达式1”这一步,其它不变。这一步,其它不变。2如果如果表达式表达式2省略省略,即不判断循环条件,循环无终止地进行下去。也就,即不判断循环条件,循环无终止地进行下去。也就是认为表达式是认为表达式2始终为真。始终为真。for for (i il l;

12、i+i+)sumsumsum+I sum+I 它相当于:它相当于:i i1;while1;while(1 1)sumsumsum+isum+i;i+i+;求解表达式求解表达式1语句语句求解表达式求解表达式33 3表达式表达式3 3也可以省略也可以省略,但此,但此时时程序程序设计设计者者应应另外另外设设法保法保证证循循环环能正常能正常结结束。如:束。如:forfor(sumsum0 0,i i1 1;i i100;)sum100;)sumsumsum十十1;1;i+;i+;4 4可以可以省略表达式省略表达式1 1和表达式和表达式3 3,只有表达式,只有表达式2 2,即只给循环条件。,即只给循环条

13、件。第十二页,本课件共有31页6.5 6.5 for for 语句语句如如:(省略表达式省略表达式1 1和表达式和表达式3 3)forfor(;(;i i100100;);)sumsumsum+isum+i;i+i+;相当于相当于:while while(i=100i=100)sum sumsumsumi i;i+i+;5 5三个表达式都可省略三个表达式都可省略,如,如:for for (;)(;)语语句句相当于相当于:while while (1 1)语语句句即不即不设设初初值值,不判断条件(,不判断条件(认为认为表达式表达式2 2为为真),循真),循环变环变量不增量不增值值.。无无终终止地

14、止地执执行循行循环环体。体。第十三页,本课件共有31页6.5 6.5 for for 语句语句 6 6表表达达式式1 1可可以以是是设设置置循循环环变变量量初初值值的的赋赋值值表表达达式式,也也可可以以是是与与循循环环变变量无关的其它表达式。量无关的其它表达式。如如:for for (sumsum0 0;i i100100;i i)sumsumsumsumi i;表达式表达式3 3也也类类似似,如:如:for(sum=0;i=100;k+)for(sum=0;i=100;k+)表表达达式式1 1和和表表达达式式3 3可可以以是是一一个个简简单单的的表表这这式式,也也可可以以是是包包含含一一个个

15、以以上上的的简单简单表达式,中表达式,中间间用逗号用逗号间间隔。隔。如:如:for(sum=0,i=1;i=100;i+)sum=sum+i;for(sum=0,i=1;i=100;i+)sum=sum+i;或或 for(i=0,j=100;i=j;i+,j-)k=i+j;for(i=0,j=100;i=j;i+,j-)k=i+j;7.7.表表达达式式2 2一一般般是是关关系系表表达达式式或或逻逻辑辑表表达达式式 ,但但也也可可以以是是数数值值表表达式或字符表达式,只要其达式或字符表达式,只要其值为值为非零就非零就执执行循行循环环体。体。如:如:for(;(c=getchar()!=n;)fo

16、r(;(c=getchar()!=n;)printf(“%c”,c);printf(“%c”,c);第十四页,本课件共有31页6.5 6.5 for for 语句语句举例:举例:求:求:s=1+2+3+100#include void main(void)int s,i;for(s=0,i=1;i=100;i+)s=s+i;printf(“s=%d”,s);在在for循环中,循环中,e1、e2、e3都可以省略!都可以省略!e1省略省略s=0,i=1;e3省略省略i+;第十五页,本课件共有31页 概念:在一个循环的循环体内又包含一个完整的循环称为循环概念:在一个循环的循环体内又包含一个完整的循环

17、称为循环的嵌套。的嵌套。打印打印9 9乘法表。乘法表。#include /*test5.c*/void main(void)int i,j;for (i=1;i=9;i+)for (j=1;j?)break;printf(“s=%d”,s);满足条件,则退出循环。满足条件,则退出循环。6.7 6.7 循环的中断循环的中断(break)和继续和继续(continue)void main(void)/*test14.c*/int s=0,i=1;for(;)s=s+i;i+;if(i?)break;printf(“s=%d”,s);用用goto语句如语句如何实现?何实现?第十七页,本课件共有31页

18、举例:求:举例:求: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;满足条件,跳过循环满足条件,跳过循环体,继续循环。体,继续循环。6.

19、7 6.7 循环的中断循环的中断(break)和继续和继续(continue)如果不使用如果不使用continue语句语句,如何如何来实现来实现?第十八页,本课件共有31页条件为恒真的循环条件为恒真的循环无限循环无限循环while(1)do while(1);for(;)靠条件控制的靠条件控制的break语句退出循环。语句退出循环。例:程序等待直到输入字母例:程序等待直到输入字母A。for(;)ch=getchar();if(ch=A)break;循环体为空语句的循环循环体为空语句的循环空循环空循环for(i=1;i=MAX;t+);作用:程序延时。作用:程序延时。空语句空语句6.7 6.7

20、循环的中断循环的中断(break)和继续和继续(continue)无限循环和空循环无限循环和空循环第十九页,本课件共有31页输入输入10个自然数统计其中偶数的个数及偶数值和个自然数统计其中偶数的个数及偶数值和。算法框图:算法框图:start定义变量定义变量初始化初始化循环?循环?yes输入输入偶数?偶数?yes统计累加统计累加nono输出结果输出结果end#include void main(void)int i,ix,iCount=0,iSum=0;for(i=1;i=10;i+)scanf(“%dn”,&ix);if(ix%2=0)iSum+=ix;iCount+;printf(“Num=

21、%dnSum=%d”,iCount,iSum);循循环环结结构构分分支支结结构构输入负数?输入负数?do if(ix=0)printf(“date error”);while(ix=0);算法的健壮性算法的健壮性6.8 循环和分支相互嵌套循环和分支相互嵌套第二十页,本课件共有31页求求100到到200之间的所有素数(只能被之间的所有素数(只能被1和自身整除的数)。和自身整除的数)。对于自然数对于自然数n,判断其是否为素数有以下三种方法:,判断其是否为素数有以下三种方法:判断判断n是否能被从是否能被从2到到n-1范围内的数整除;范围内的数整除;判断判断n是否能被从是否能被从2到到(int)(n/

22、2)范围的数整除;范围的数整除;判断判断n是否能被从是否能被从2到到(int)sqrt(n)范围的数整除;范围的数整除;在程序设计中,经常要记录一些状态,作为判断的条件。因此在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。需要在程序中设置一些标志,通常标志是整型变量。程序设计中标志技术的使用程序设计中标志技术的使用:如:设置变量如:设置变量iFlag用于记录是否世素数,用于记录是否世素数,iFlag=1是素数;是素数;iFlag=0不是素数。不是素数。比较一下各种方法的优越性比较一下各种方法的优越性?6.9 程序举例程序举例第二十一页,本课件

23、共有31页s=sqrt(n);iFlag=1;i从从2循循环环到到sn%i=0iFlag=0;break;继续循环继续循环直到退出直到退出iFlag=0?判断某自然数判断某自然数n是否是素数的算法是否是素数的算法第二十二页,本课件共有31页#include /*test7.c*/#include void main(void)int n,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是素数。是素数

24、。枚枚举举所所有有数数构构造造,测测试试条条件件假定假定n是素数。是素数。如果如果n能被能被2到到s的任意的任意数整除,设标志退出循环。数整除,设标志退出循环。如果如果n是素数,输出是素数,输出n。程序如下:程序如下:第二十三页,本课件共有31页n为枚举变量,枚举初值为枚举变量,枚举初值 100,枚举终值,枚举终值999。测试是否满足条件,满足条件输出测试是否满足条件,满足条件输出n。#include void main(void)int n,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)pr

25、intf(“n%d”,n);枚枚举举所所有有三三位位数数构构造造条条件件测试条件测试条件取取n的百位的百位a、十位、十位b、个位、个位c。求水仙花数(条件:三位数的个、十、百位的立方和等于该数。求水仙花数(条件:三位数的个、十、百位的立方和等于该数。153=13+53+33)。)。第二十四页,本课件共有31页 36人一次搬人一次搬36块砖,男搬块砖,男搬4,女搬,女搬2,两个小孩抬一块。要一,两个小孩抬一块。要一次搬完。问:男、女、小孩要多少?次搬完。问:男、女、小孩要多少?(要求输出所有的方案要求输出所有的方案)思考题:思考题:第二十五页,本课件共有31页3.求求ex=1+x+x 2/2!+

26、x n/n!前前n+1项之和。项之和。迭代次数迭代次数i:0 1 2 n 迭代公式迭代公式 t=t*x/i迭代初值迭代初值 exp=1,t=1,(i=1n)#include void main(void)float exp,x,t;int i,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%f”,exp);迭代初值。迭代初值。迭代公式。迭代公式。迭迭代代过过程程附加条件:附加条件:当当|t|10-5,结束运算。结束运算。if(fabs(t)1e-5)break;第二十六页,本课件共有31页(

27、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/2 f0=f1 迭代迭代x 初值为初值为a s初值为初值为0f0 初值为初值为f(a)次数为次数为n4.用梯形法求定积分用梯形法求定积分第二十七页,本课件共有31页#include /*test10.c*/void main(void)float a,b,f0,f1,h,x,s=0.0;int n,i;scanf(“%f,%f,%d”,&a,&b,&n);h=

28、(b-a)/n;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);迭代初值。迭代循环程序如下:程序如下:第二十八页,本课件共有31页迭代次数:迭代次数:i=1n 迭代初值:迭代初值:s=0.0,t=a 迭代公式:迭代公式:t=t*10+a#include void main(void)float s,t;int i,a,n;do scanf(“%d,%d”,&a,&n);if(a9)printf(“nData Input Error!nInput

29、again:”);while(a9);for(s=0.0,t=a,i=1;i=n;i+)s+=t;t=t*10+a;printf(“ns=%f”,s);5.求求s=a+aa+aaa+aaaa。0a10 共共n项,最后一项有项,最后一项有n个个a.如求如求s=2+22+222+2222+222222 n、a从键盘输入。从键盘输入。第二十九页,本课件共有31页xyf(x)x1f1=f(x1)x2f2=f(x2)算法分析:算法分析:输入输入x1、x2,并求出,并求出f1、f2。如果如果f1*f2大于大于0,有可能在此,有可能在此区间内没有根,重新输入。区间内没有根,重新输入。否则,将区间二分否则,将

30、区间二分x=(x1+x2)/2计算出计算出f=f(x)xf 判断判断f与与f1是否同号是否同号如果同号:如果同号:x1=x,f1=f否否 则:则:x2=x,f2=fx1f1f1f2判断判断fabs(x1-x2)是否小于某个规定的精度是否小于某个规定的精度(如如10-6):如果小于精度:求出根,退出到如果小于精度:求出根,退出到。否否 则:继续则:继续。输出根。输出根。6.二分法求方程二分法求方程f(x)=x3-6x-1=0,在,在0,5区间区间第三十页,本课件共有31页#include#include void main(void)float x1,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;do x=(x1+x2)/2;f=x*x*x-6.0*x-1;if(f*f1=0)f1=f;x1=x;else f2=f;x2=x;while(fabs(x1-x2)=1e-6);printf(“Root is:%f”,(x1+x2)/2);迭代初值。二分迭代循环迭代条件。二分法求方程根程序二分法求方程根程序 f(x)=x3-6x-1=0第三十一页,本课件共有31页

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

当前位置:首页 > 生活休闲 > 资格考试

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

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