C程序设计06循环控制.ppt

上传人:牧羊曲112 文档编号:5426144 上传时间:2023-07-05 格式:PPT 页数:35 大小:244.49KB
返回 下载 相关 举报
C程序设计06循环控制.ppt_第1页
第1页 / 共35页
C程序设计06循环控制.ppt_第2页
第2页 / 共35页
C程序设计06循环控制.ppt_第3页
第3页 / 共35页
C程序设计06循环控制.ppt_第4页
第4页 / 共35页
C程序设计06循环控制.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《C程序设计06循环控制.ppt》由会员分享,可在线阅读,更多相关《C程序设计06循环控制.ppt(35页珍藏版)》请在三一办公上搜索。

1、第六章 循环控制,6.1 概述,前面已介绍了顺序结构,选择结构,本章介绍循环结构。,如:,sum=1+2+3+100;,实际问题:一组重复执行的语句。,利用循环结构解决。,C语言用四种形式循环,2.while 语句,3.do while 语句,4.for语句,1.if语句与 goto语句,6.2 goto语句及与if语句构成循环,1.goto语句,2.与if构成循环.,例:求,形式:goto 标号;,功能:无条件转向标号处。,标号:用标识符命名。,main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(%d,sum);

2、,运行结果如下:5050,main()int sum=0,i=0;loop:sum=sum+i;i+;if(i=100)goto loop;printf(sum=%d,sum);,本例相当于当型循环,若改为直到型:,6.3 while语句,为了使程序的结构化功能强,应尽量少用 goto语句。,1.形式:while(表达式)语句,2.执行过程:先判断表达式的值。若0.则执行其后面的语句,否则while执行完毕。,专门的当型循环语句while语句,3.流程图:,将上述例子用while语句写出 while(i=100)sum+=i;i+;,语句中应有使表达式=0的语句。否则会出现无限循环死循环。,注

3、:while后面的语句一般为复合语句,即:加,6.4 do while语句,一种专门的“直到型”循环语句。,2.执行过程:先执行语句,再判表达式的值,若0,再执行语句,否则结束循环,3.流程:,1.形式:do语句while(表达式);,main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(%d,sum);,程序如下:,注意:while语句与dowhile语句的区别:当第一次执行时,若表达式=0时,则while语句与do while有所不同,do while 执行一次后面的语句,而while不执行。,6.5 for语句,1.形式,首先

4、计算表达式1,接着执行表达式2,若表达式2的值0,则执行语句,接着计算表达式3,再判断表达式2的值。依此重复下去,直到表达式2的值=0(假)。,一种形式更为灵活的循环语句。,2.执行过程,for(表达式1;表达式2;表达式3)语句,3.流程:,用for语句写出上述例子,for用while代替的流程 表达式1;while(表达式2)语句 表达式3;,for(i=1;i=100;i+)sum+=i;,for语句完全可以用while代替,但for直观、简单、方便,4.for语句的几种特例,例:任意输入两个整数a,b,求,main()int i,j,a,b,sum;printf(please inpu

5、t two number!n);scanf(a=%d,b=%d,可以省略表达式1,但须保留分号;这时在for之前就得赋值给循环变量;,表达式2一般不可省略,否则为无限循环,相当于:while(1)sum=sum+i;i+;,例:for(i=1;i+)sum=sum+i;,相当于条件永真、永不为0,若用while表示,表达式3亦可省略,但在循环体中须有语句修改循环变量;以使表达式2在某一时刻为0而正常结束循环。,例:for(sum=0,i=1;i=100;)sum=sum+i;i+;,若同时省略表达式1,表达式3,则相当于while(表达式2)语句。,相当于 while(i=100)sum+=i

6、;i+;,例:for(;i=100;)sum+=i;i+;,三个表达式均省略 即for(;)语句则相当于while(1)语句.,表达式1、表达式3可以是逗号表达式,以使循环变量值在修改时可以对其它变量赋值。,如 for(sum=0,i=1;i=100;i+,i+)相当于 sum=0;for(i=1;i=100;i=i+2),表达式2可以是关系表达式,也可以是数值表达式或字符表达式。只要值0.即执行循环体.,例:for(i=0;(c=getchar()!=n;i+=c);,6.6 循环的嵌套,与其它语言一样,当循环体中又包含了另一个完整的循环语句时嵌套。C有三种循环语句,均可以相互嵌套:,whi

7、le()while(),for(;)while()do while();,均为正确的嵌套,但:,while()while(),for(;)for(;),会理解为正确的形式。但要注意语句的包含关系。,6.7 几种循环的比较,对于同一问题,四种循环可相互替代。但不提倡用goto.for循环功能强于while,dowhile.但若不是明显地给出循环变量初终值(或修改条件),则应用while 或do while.以增强程序的结构化和可读性。要防止无限循环死循环。循环过程中,为了结束本次循环或跳出整个循环。分别要用到continue和break语句。,6.8 break语句和continue语句,问题:

8、计算圆的面积r2,半径取1,2,3,4,当面积100时结束。,#define PI 3.14159main()for(r=1;r100)break;printf(%f,area);,6.8.1 break语句,从结构化程序要求出发,用break,退出循环,进入for语句的下一条语句。,注:break只能用于循环语句和switch语句。,continue语句,main()int n;for(n=100;n200;n+)if(n%3!=0)printf(%d,n);,问题:编写程序,打印100200中不能被3整除的数。,main()int n;for(n=100;n=200;n+)if(n%3=0

9、)continue;printf(%d,n);,continue语句起了结束本次循环的作用。,换一种方式:,6.9 程序举例,例1:用/4=1-1/3+1/5-1/7+公式求的近似值,直到最后一项的绝对值小于10-6为止。,程序如下,#include main()int s;float n,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(pi=%10.6fn,pi);,例2:求 Fibonacci数例:1,1,2,3,5,8,前40个数。,规律:F1=1,F2=1 Fn=Fn1+

10、Fn2(n2),程序要点:,每输出4个数时换行。,f1=f1+f2;f2=f1+f2;交替的结果正好为一序列,程序如下:,main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld%12ld,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;,运行结果为:,153423315971094675025514229352457824157817,18553772584177111211393832040570288739088169,2138961041812865719641813462

11、69922746563245986,321144987676546368317811217830914930352102334155,判一个数m是否为素数的方法:,每打印10个数,换一次行。,当用2,3,的整数去除它时均不能除,尽,则为素数。,例2.求100200的素数.,程序如下:#include main()int m,k,i,n=0;for(m=101;m=k+1)printf(%dt,m);n=n+1;,101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199,运行结果如下:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号