《循环结构程序设计》PPT课件.ppt

上传人:牧羊曲112 文档编号:5508021 上传时间:2023-07-15 格式:PPT 页数:39 大小:236.99KB
返回 下载 相关 举报
《循环结构程序设计》PPT课件.ppt_第1页
第1页 / 共39页
《循环结构程序设计》PPT课件.ppt_第2页
第2页 / 共39页
《循环结构程序设计》PPT课件.ppt_第3页
第3页 / 共39页
《循环结构程序设计》PPT课件.ppt_第4页
第4页 / 共39页
《循环结构程序设计》PPT课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《《循环结构程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环结构程序设计》PPT课件.ppt(39页珍藏版)》请在三一办公上搜索。

1、第五章 循环结构程序设计,主讲:田志刚联系电话,5.1循环的概念,计算机解题过程中,经常遇到要编制循环结构,即大量问题均 离不开循环结构,(有人说:没有循环结构等于没有计算机)如求:1+2+3+.+100 求:sinx=x-x3/3!+x5/5!-x7/7!+几乎所有数学函数均需展开成多项式,求其近似值,均离不开循环结构.,循环结构,5.2循环结构的实现,5.2.1 while 语句构成当型循环 格式:while(表达式)语句 例 求1+2+3+-+100的值(教材例子5.1)#include void main()int i=1,sum=0;/*准备部分*/while(i=100)/*控制部

2、分*/sum=sum+i;/*工作部分*/i=i+1;/*修改部分*/printf(sum=%d n,sum);printf(i=%d n,i);/退出循环时候i的数值,5.2.1 do.while 语句构成直到型循环 格式:do 语句 while(表达式)例 求1+2+3+-+100的值(教材例子5.1)#include void main()int i=1,sum=0;/*准备部分*/do sum=sum+i;/*工作部分*/i=i+1;/*修改部分*/while(i=100);/*控制部分*/printf(sum=%d n,sum);printf(i=%d n,i);/退出循环时候i的数

3、值,while 与 do while区别,void main()void main()int sum=0,i;int sum=0,i;scanf(%d,而右边程序执行一次,循环语句注意事项,循环体如果包括一个以上的语句需要加循环体中应该有可以使循环趋于结束的语句注意初始条件的值循环可以提前预知循环次数(例5.1、5.2),有时也无法判断循环次数(例5.4、5.5),需要选取好控制部分。,例:用 0.1mm 厚纸对折,问对折多少次后,其厚度超过地球直径(12742公里),#include void main()int n=1;float ans;/*n 对折次数,ans ans=1e-7;存放对

4、折后的厚度*/while(ans=12742)n=n+1;ans=ans*2;printf(n=%d,ans=%f n,n,ans);运行结果:n=37,ans=13743.895347,例:计算T=1+1/2+1/3+1/n(教材5.6),#include void main()float t=0,a;int i=1,n;scanf(%d,逗号运算符及其表达式,逗号运算符:,逗号表达式格式:,计算逗号表达式值是按自左至右的顺序,先计算的值,再计算的值,.而逗号表达式值是最后一个的值.示例:a=1,b=2,c=3,d=a+b 表达式值为3,关于逗号表达式的说明,1.其优先级最低,结合性是自左至

5、右2.注意逗号表达式构成的语句和非逗号表达式构成的语句区别。a=1;b=2;和a=1,b=2;3.,#include void main()int a,b,c,d;a=(c=100,d=200,c+d);/注意有无括号的区别 b=(c=d=0,c+50);/注意有无括号的区别 printf(%d,%d,%d,%dn,a,b,c,d);运行结果:300,50,0,0,for语句构成循环,格式:for(;)语句表达式1称为初值表达式表达式2称为控制表达式表达式3称为步增表达式-均是C的任何一种表达式,利用for语句改写例5.1(1),#include void main()int I,sum=0;

6、for(i=1;i=100;i+)sum+=i;printf(sum=%dn,sum);运行结果:sum=5050,利用for语句改写例5.1(2),#include void main()int i,sum;for(i=1,sum=0;i=100;i+)sum+=i;printf(sum=%dn,sum);,利用for语句改写例5.1(3),#include void main()int i,sum;for(i=1,sum=0;i=100;sum+=i,i+);printf(sum=%dn,sum);,关于for语句说明,1.for语句使用灵活是功能最为强大的循环语句。它可以构成当型或直到型

7、循环。2.for语句中任何一个表达式均可省略。3.例如上例省略表达式1i=1,sum=0;for(;i=100;sum+=i,i+);4.例如上例省略表达式3 for(i=1,sum=0;i=100;)sum+=i,i+;,关于for语句说明,4.省略表达式2 for(i=1;i+)等价于 for(i=1;1;i+)构成一个判断条件永远为真的循环,这样的循环是不会结束的,称为死循环,为了防止死循环的发生,要采用别的方式退出循环。5.for的后面循环体语句可有可无,可以是一个语句;可以是 多个语句,但要用 括起来。6.for中表达式都可以省略,但括号以及分号不可以省略。,5.3循环的嵌套,在一个

8、循环结构中的循环体中又出现了另外一个循环结构,称之为循环的嵌套。while()/外循环.for(;)/内循环,内、外层循环可由任何循环语句构成,for(;)dowhile()for(;)while()循环只可以嵌套不可以交叉。,例:打印输出九九乘法表(教材例5.8),#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=9;j+)printf(%d*%d=%d,i,j,i*j);printf(n);,例求1!+3!+5!+7!教材例5.9,#include void main()int jc,k,m;float sum=0.0;for(m=1

9、;m=7;m=m+2)jc=1;for(k=1;k=m;k+)jc=jc*k;sum=sum+jc;printf(sum=%fn,sum);,例求1!+3!+5!+7!(改写),#include void main()int jc,k,m;float sum=0.0;jc=1;for(m=1;m=7;m=m+2)sum=sum+jc;jc=jc*(m+1)*(m+2);printf(sum=%fn,sum);,5.4break和continue,break-退出switch语句或循环(提供一种非正常出口)continue-提早结束本次循环,而不是终止循环.while(表达式1)if(表达式2)

10、continue;if(表达式3)break;,break和continue示例,#include void main()int k,sum=0;for(k=1;k200)break;printf(sum=%d,sum);,break和continue示例,void main()int i;for(i=1;i6;i+)if(i%21)printf(#);continue;printf(*);,循环综合示例(求解两个数字的最大公约数和最小公倍数),#include void main()int a,b,c,m,n;scanf(%d%d,求:A,B,使 AB-BA=45 成立,#include v

11、oid main()int a,b,k,ans=45;for(a=1;a10;a+)for(b=0;b10;b+)k=(10*a+b)-(b*10+a);if(k=ans)printf(a=%d,b=%d n,a,b);,例:判断数字是否为素数,判断数字m为质数方法:m 除以 2m-1(按定义),之间每个整数都除不尽m 除以 2 m/2,之间每个整数都除不尽m 除以 2 m的平方根,之间每个整数都除不尽,#include#inclue void main()int i,j,m,c=0;for(i=3;i=m+1)printf(%d,i);c=c+1;printf(n c=%d n,c);,例:

12、输出斐波那契数列前40项F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2),#include void main()long int f1=1,f2=1,f3;int i=3;printf(%10ldn,f1);printf(%10ldn,f2);while(i=40)f3=f1+f2;printf(%10ld n,f3);i+;f1=f2;f2=f3;,例:输出斐波那契数列前40项F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2),#include void main()long int f1=1,f2=1;int i=1;while(i=20)printf(%1

13、0ld%10ld n,f1,f2);f1=f1+f2;f2=f1+f2;i=i+1;,例.教材习题5.7,#include void main()int i,j,k,n;for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(%d,n);printf(n);,求定积分 不是用解析法求准确值,而是用近似法(等效矩形法、等效梯形法、辛普生公式(Sipson),#include#include void main()int i,n;double a,b,h,s=0,f,x;scanf

14、(%lf,%lf,%d,等效梯形法:,#include#include void main()int i,n;double a,b,h,s,f;scanf(%lf,%lf,%d,方程求根:当无法用解析法,只可用近似法,求根的近似值f(x)=x3-x-1 在区间(1,1.5)内有实根 精确到 10-5,#include#include void main()double a=1,b=1.5,x0,y,y0;while(abs(a-b)1e-5)x0=(a+b)/2;y=a*a*a-a-1;y0=x0*x0*x0-x0-1;if(y*y0 0)a=x0;else b=x0;printf(x=%lf n a);,牛顿迭代法 x(n+1)=x(n)f(xn)/f(xn),#include#include void main()double x0,y0,x1,y1;x1=1.5;do x0=x1;y0=x0*x0*x0-x0-1;y1=3*x0*x0-1;x1=x0-y0/y1;while(fabs(x1-x0)1e-5);printf(x=%f n,x0);,作业,课后习题第8题课后习题第9题,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号