C语言程序设计06章循环结构程序设计.ppt

上传人:za****8 文档编号:13189319 上传时间:2020-06-06 格式:PPT 页数:32 大小:231KB
返回 下载 相关 举报
C语言程序设计06章循环结构程序设计.ppt_第1页
第1页 / 共32页
C语言程序设计06章循环结构程序设计.ppt_第2页
第2页 / 共32页
C语言程序设计06章循环结构程序设计.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
1,第六章循环结构程序设计,6.1概述循环结构主要有:(1)用goto语句和if语句构成循环;(2)用while语句;(3)用do-while语句;(4)用for语句。,2,6.2goto语句以及用goto语句构成循环goto语句为无条件转向语句,它的一般形式为:goto语句标号;(1)语句标号用标识符表示。标识符的命名规则和变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线,不能用整数来作标号;(2)goto语句通常有两种用途:1.与if语句一起构成循环结构;2.从循环体中跳转到循环体外;(3)goto语句的使用不符合结构化程序的原则,一般尽量不用,除非万不得已。,3,例6.1用if语句和goto语句构成循环,求main()inti,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;gotoloop;printf(“%d”,sum);,4,6.3while语句,一般形式:while(表达式)内嵌语句特点:先判断表达式,当它为真(非0)时,再执行内嵌语句;若为假(0),则不执行内嵌语句。这样的循环结构我们称为“当型”循环结构。流程图:,表达式,内嵌语句,非0,0,5,例6.2求main()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“%d”,sum);,说明:1)如果循环体不只包含一条语句,则应用花括号括起来形成一个复合语句。2)在循环体中应有使循环趋于结束的语句,避免出现死循环。在本例中,设置循环条件为i=100,然后有i+使循环趋于结束,这样就不会出现死循环。,6,main()intn=0;while(n+=1)printf(“%dn”,n);printf(“%dn”,n);运行结果:,说明:(补充内容)3)用作循环条件的表达式可以是各种类型的表达式或数值类型。如:while(1)、while(2)、while(a)等。4)小心循环变量的“边界值”,注意循环次数。对条件表达式的计算次数要比循环体的执行次数多一次。如右例:,7,main()inti,sum=0;i=1;while(i=100);sum=sum+i;i+;printf(“%d”,sum);则程序将出现“死”循环,无法得到正确结果。,此分号使while的循环体为空,说明:5)不要在while(表达式)后加分号。如例6.2若误写成:,8,6.4do-while语句,一般形式:do循环体语句while(表达式);,循环体语句,表达式,非0,0,流程图:,9,例6.3用do-while语句求main()inti,sum=0;i=1;dosum=sum+i;i+;while(i=100);/*别忘了,这里有分号*/printf(“%d”,sum);,10,讨论:while语句与do-while语句之间的异同点1)对同一问题可以用while语句处理,也可以用do-while语句处理。do-while结构和while结构可以相互转换。我们可以认为do-while结构是由一个复合语句(while结构的循环体)加一个while结构构成。比如:,dosum=sum+i;i+;while(i=100);,sum=sum+i;i+;while(i=100)sum=sum+i;i+;,11,2)在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,则它们的结果也一样。但是,对于while后面的表达式一开始就为0值时,两种循环结构的执行结果是不同的。对于while语句,循环体可能一次也不执行;而do-while语句,循环体至少要执行一次。对于while语句,循环体的执行次数要比循环条件的判断次数少一次;而do-while语句,循环体的执行次数和循环条件的判断次数是相同的。,12,6.5for语句,一般形式:for(表达式1;表达式2;表达式3)语句,for(表达式1;表达式2;表达式3)语句,执行过程:,13,求解表达式1,求解表达式2,真,语句,求解表达式3,假,for语句的下一语句,流程图:,14,例:for(i=1;i=100;i+)sum=sum+i;,i=1,i=100,真,sum=sum+i,i+,假,15,说明:(1)表达式1可以省略,此时应在for语句之前给循环变量赋初值(设定循环初始条件)。比如:for(i=1;i=100)break;,16,(3)表达式3可以省略,但此时应另外设法修改循环变量,保证循环能正常结束。比如:for(i=1;i100)break;,17,(5)表达式1、2、3都可以为任何表达式。比如:表达式1和表达式3可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。例1:for(i=1,sum=0;i=100;i+)sum=sum+i;,例2:for(i=0;(c=getchar()!=n;i+);/*分号不能少*/请问:此语句的作用是什么?,此语句的作用是不断读入字符,并统计所输入字符的个数,直到输入一个“换行符”为止。,18,请问:inti,j,k=0;for(i=1,j=100;i=j;i+,j-)k=i+j;printf(“%d,%d,%d”,i,j,k);输出结果是什么?循环体可以被执行多少次?,19,例如:inti,j,k=0;for(i=0,j=100;i=j;i+,j-)k+=i+j;printf(“%d,%d,%d”,i,j,k);输出结果是什么?循环体可以被执行多少次?,20,讨论:for语句与while语句之间的异同点1)for语句简单、方便,使用灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以取代while语句。在使用上,for语句更灵活,功能更强。2)for语句和while语句之间是可以相互转换的。当省略for语句的表达式1、3,而只给出表达式2时,就等同于一个while语句。比如:,for(;i=100;)sum=sum+i;i+;,while(i=100)sum=sum+i;i+;,21,6.6循环的嵌套,C语言中,允许三种循环结构(while循环、do-while循环和for循环)相互嵌套和进行多层嵌套。例如:for(i=0;i10;i+)for(j=0;j10;j+)for(k=0;k10;k+)printf(“i=%d,j=%d,k=%dn”,i,j,k);此程序运行后,屏幕上将输出多少行信息?这些信息分别是什么?,22,6.7四种循环结构之间的比较(前已提及),6.8break语句和continue语句,6.8.1break语句一般形式:break;作用:只能用于循环结构和switch结构,使执行流程从相应结构中跳出,程序继续往后执行。,例:for(r=1;r100)break;printf(“%f”,area);,23,6.8.2continue语句一般形式:continue;作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环体的判断。contiune语句和break语句的区别是:contiune语句只是结束本次循环,即跳过本次循环体中下面尚未执行的部分;而break语句是终止整个循环,即退出循环结构。详细的流程图分析,可参见教科书P115之图6.10和图6.11.例如:,24,例6.5输出100200之间的不能被3整除的所有数;main()intn;for(n=100;n1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(“pi=%10.6fn”,pi);,注意几点:1、s和n可同时定义为int或者float型吗?为什么?(P116.c)2、若将n、t、pi定义为double型,精度提高到1e8,会有什么效果?(P116_2.c),27,例6.7求Fibonacci数列的前40个数。Fibonacci数列通式为:,例如,前面几项分别为:1,1,2,3,5,8,13,这是一个古典的数学问题,比较简单。在P116117和P124均有论述。请同学们掌握。,N-S流程图为:,28,源程序为:,main()longintf1,f2;inti;f1=1;f2=1;for(i=1;i=a,例6.9求100-200间的全部素数。(算法同例6.8),这里为什么要这样写,请看附录IASCII码表。,32,第六章循环控制小结,6.1概述6.2goto语句以及用goto语句构成循环6.3while语句6.4do-while语句6.5for语句6.6循环的嵌套6.7几种循环的比较6.8break和continue语句6.9程序举例,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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