第4章 控制结构(循环结构)

上传人:沈*** 文档编号:243820552 上传时间:2024-09-30 格式:PPT 页数:31 大小:312.50KB
返回 下载 相关 举报
第4章 控制结构(循环结构)_第1页
第1页 / 共31页
第4章 控制结构(循环结构)_第2页
第2页 / 共31页
第4章 控制结构(循环结构)_第3页
第3页 / 共31页
点击查看更多>>
资源描述
C,程序设计,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,魏英 ,tutor_,7952616,第,4,章 控制结构(循环结构),教学内容,掌握三条语句两种循环的实现形式,理解循环三要素,熟悉循环结构程序设计思路,教学重点,两种循环的实现形式,教学难点,循环嵌套,循环结构程序设计,循环概述,用途,解决一些需要,重复多次,才能完成的问题,每一次在做,相同,操作或与上一次,有联系,的相似操作,分类,循环条件,循环体,0,当型,循环,非0,入口,出口,非0,循环体,循环条件,0,直到型循环,入口,出口,while,语句,功能:实现当型循环,形式:,while(,表达式,),循环体语句,执行:,先判断,后执行,表达式,循环体语句,0,非0,例,4-11,求,n!,P101,i=0):”);,scanf(“%d”,&n,);,t=1.0;i=1;,while(i=10,-6,pi=pi+t,t=,下一项,非0,0,pi=pi*4,输出,pi,结束,找,规律,项:,1,、,-1/3,、,1/5,、,-1/7,找递推,公式,找本项与下一项,之间的关系,每一项都是一个,分式,分子,都是,1,分母,是,n+2,,,n,代表前一项分母,下一项,与本项,符号,相反,n=n+2,sign=-sign,t=sign/n,n=1,sign=1,源程序,#include,main(),float pi,t,n;,int,sign=1;,pi=0.0;n=1.0;t=1.0;,while(fabs(t,)=1e-6),pi=pi+t;,n=n+2;,sign=-sign;,t=sign/n;,pi=pi*4;,printf(“pi,=%fn”,pi);,循环条件,,t,为循环变量,循环变量初始化,改变循环变量的值,do-while,语句,功能:实现直到型循环,形式,do,循环体语句,while(,表达式,),;,执行:,先执行,后判断,非0,循环体语句,表达式,0,当型循环可能一次也不执行,直到型循环至少执行一次,do-while,语句应用举例,例,4-13,:,计算,sin(x),P102,定义变量,输入数据,处理数据,输出结果,x,sin(x)=x-x,3,/3!+x,5,/5!-x,7,/7!+,sin(x),累加问题,循环实现,当型循环,直到型循环,直到最后一项的绝对值小于,1e-7,循环条件,循环变量初始化,循环体,(,改变循环变量,),fabs(t,)=1e-7,s=s+t,t=x,t=-t*x*x/,(n-1)/n,找,规律,通项,公式,:a,n,与,n,之间的关系,递推公式,:a,n,与,a,n-1,之间的关系,源程序,#include,main(),double s,t,x;,int,n;,printf(“please,input x:”);,scanf(“%lf”,&x,);,t=x;n=1;s=x;,do,n=n+2;,t=-t*x*x/(n-1)/n,s=s+t;,while(fabs(t,)=1e-7);,printf(“sin(%f,)=%lf”,x,s);,如果将,s=x;,改为,s=0;,程序应如何修改,?,for,语句,功能,最,灵活,,既可实现当型循环,也可实现直到型循环,多用于,循环次数已知的循环,也可用于循环次数未知的循环,形式,for(,表达式,1;,表达式,2;,表达式,3),语句,执行,流程图,for,语句执行流程图,如何转换成等价的,while,循环,?,表达式,1;,while(,表达式,2),语句,表达式,3;,求解表达式,1,表达式,2,循环体语句,求解表达式,3,非0,0,表达式,1,只在进入循环前求解一次,for,语句的典型应用,for(,循环变量赋初值,;,循环条件,;,循环变量增值,),语句,main(),int,i,sum;,sum=0;,for(i=1;i=100;i+)sum=sum+i;,printf(“%d”,sum,);,循环变量赋初值,循环条件,循环体语句,循环变量增值,非0,0,for,语句的灵活性,for(sum=0,i=1;i=100;i+)sum=sum+i;,sum=0,i=1,;,for(,;,i=100;i+)sum=sum+i;,for(sum=0,i=1;i=100,;,),sum=sum+i;i+,;,sum=0,i=1;,for(,;,i=100,;,),sum=sum+i;i+,;,for(sum=0,i=1,;,i+),if(i=100)break;,sum=sum+i;,sum=0,i=1;,for(,;,),if(i=100)break;,sum=sum+i;i+,;,循环嵌套,一个循环体内又包含另一个,完整的,循环结构,三种循环语句可以相互嵌套,P107,一般情况下各层循环变量互不相同,例,4-16:,打印金字塔图案,P107,1,222,33333,4444444,555555555,66666666666,7777777777777,888888888888888,99999999999999999,编程思想:抽象的学问,抽象方法:找规律,用变量来描述变化的规律,用,流程图,来描述算法,编程实现算法,流程图,一行一行输出,重复操作,循环,i=1,i=9,输出第,i,行,i+,0,非,0,循环变量除用来控制循环的开始与结束外,往往还参与循环体内的操作。,一个字符一个字符输出,j=1,j=2*i-1,输出第,j,个,i,j+,0,非,0,每行输出若干个空格和若干个数字,k=1,k=10-i,输出第,k,个,j+,0,非,0,源程序,main(),int,i,j;,for(i=1;i=4;i+),for(k=1;k=10-i;k+),printf(%c,);,for(j=1;j=2*i-1;j+),printf(%c,48+i);,printf(n,);,是否可改为,0+i?,是否可将,k,改为,j?,是否可去掉,?,几种循环的比较,循环三要素,循环条件、循环变量初始化、改变循环变量的值,while,do-while,for,类型,当型,直到,当,型,直到型,循环条件,while,后,while后,表达式,2,循环变量初始化,while前,do前,for,前,表达式,1,改变循环变量的值,循环体中,循环体中,循环体中,表达式,3,循环中应避免的问题,不循环,发生场合:当型循环,原因:循环变量初值不合适,循环初始条件为假,死循环,发生场合:当型循环、直到型循环,原因:循环变量改变量不合适,循环条件始终为假,反面案例,n=10;,while(n10),n=n+1;,printf(“n,=%d”,n);,for(n=10;n10);,printf(“n,=%d”,n);,for(n=10;n10;n-);,printf(“n,=%d”,n);,循环的入口与出口,循环入口,满足循环条件即可进入循环,循环出口,正常出口,:不满足循环条件,正常退出,紧急出口,:当出现某种情况时,不管当前是否满足循环条件,立即退出,循环的紧急出口,break,语句:结束整个循环,continue,语句:结束本次循环,一般出现在一条,if,语句中,if(n%3=0)break;,例,4-20,:判断素数,P111,算法描述:如果,m,不能够被,2sqrt(m),之间,任一,整数整除,则,m,为素数。,流程图,源程序,流程图,k=,sqrt(m,),i=2,ik,非,0,0,m,是素数,m,不是素数,正常退出,紧急退出,源程序,#include,main(),int,m,i,k;,printf(“Enter,m=n”);,scanf(%d,&m,);,k=,sqrt(m,);,for(i=2;i,k,)printf(“Yesn,);,else,printf(“Non,);,循环结构程序设计应用举例,例,4-22,:,换零钱问题,P113,穷举法,(,枚举法,):,一一列举各种可能情况,并判断哪一种可能是符合要求的解,一种,笨,方法,源程序,void main(),int,x,y,z;,printf(“5yun 1yun 0.5yunn”);,n=0;,for(x=1;x=100;x+),for(y=1;y=100;y+),for(z=1;z=100;z+),if(x+y+z=100&,5*x+y+0.5*z=100),printf,(“%d%d%dn”,x,y,z);,n+;,printf(“Total,%d”,n);,void main(),int,x,y,z;,printf(“5yun 1yun 0.5yunn”);,n=0;,for(x=1;x=100;x+),for(y=1;y=100;y+),z=100-x-y;,if(5*x+y+0.5*z=100),printf,(“%d%d%dn”,x,y,z);,n+;,printf(“Total,%d”,n);,循环结构程序设计应用举例,-2,例,4-23,:求平方根,P115,程序流程,输入数据:欲求平方根的数据,处理数据:求平方根,输出结果:平方根,算法分析,迭代法,P115,要求解,X,,,可由给定的一个,初值,X0,,,通过,迭代公式,求得一个,新值,X1,,,这个新值,X1,比初值,X0,更,接近要求的,X,,再以,新值,X1,作为初值,即,X1X0,,,重新按原来方法求,X1,,,重复此过程直到,|X1-X0|=,循环变量初始化:,X0,、,X1,改变循环变量的值:,迭代公式、,X1X0,流程图,开始,X0=,初值,a,X1=0.5*(X0+a/X0),X0=X1,|X1-X0|=1e-5,结束,输出,X1,非0,0,开始,X0=,初值,a,X1=0.5*(X0+a/X0),t=|X1-X0|,X0=X1,|t|=1e-5,结束,输出,X1,非0,0,源程序,#include,void main(),float a,x0,x1,t;,scanf(“%f”,&a,);,x0=a/2.0;,do,x1=0.5*(x0+a/x0);,t=x1-x0;,x0=x1;,while(fabs(t,)=1e-5);,printf(“%fn”,x1);,试,与,P115,程序进行比较,实验四,实验指导书实验五,:4,7,作业,教材,P119:,三,教材,P120:,四,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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