收藏 分销(赏)

第10讲 do-while语句for语句循环结构的嵌套.ppt

上传人:s4****5z 文档编号:13964366 上传时间:2026-05-18 格式:PPT 页数:37 大小:467KB 下载积分:10 金币
下载 相关 举报
第10讲 do-while语句for语句循环结构的嵌套.ppt_第1页
第1页 / 共37页
第10讲 do-while语句for语句循环结构的嵌套.ppt_第2页
第2页 / 共37页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,第十讲,while,语句、,do-while,语句、,for,语句 循环结构的嵌套,5.1 while,循环语句,由,while,语句构成的循环也称,”当”循环,。,while,循环的一般形式如下:,while(,表达式,),循环体语句,图,5.1 while,循环流程图,while,语句的执行过程是:,先计算,while,表达式的值,当表达式的值为非零时,便执行循环体语句,之后再计算该表达式的值,由此构成循环,直到有一次求得表达式的值为零时才结束循环,并继续执行循环体语句之外的后续语句。,图,5.1 while,循环流程图,while(,表达式,),循环体语句,例,:,k=0;,while(k10),printf(“*”);k+;,注意,:1),表达式不可省,;,表达式的值为真的时候,作循环,;,2),循环体语句,要能改变表达式的值,使其从真变到假,;(,为什么啦,?),如果循环语句是多条,构成复合语句,;,执行过程,:P50,P51(1)(2)(3),说明:,(1)while,语句中的,表达式,可以是,任意,合法,的,C,表达式,。,(2),如果循环体语句是,复合语句,,一定要用,括起来。,(3),在循环体语句中应该,包含,能够,使,循环趋于结束,的,操作,,以避免出现死循环。,例,5.1,编程求,1+2+3+100,的值。,这是一个求,100,个数的,累加和,问题。所加的加数从,1,变化到,100,,因此,我们,可以在,循环体中,设计一个整型,变量,i,,,使它的,初值为,1,,每,循环一次,使,i,的值,增,1,,一直,循环,到,i,的值,超过,100,为止,,用这个办法就解决所需的加数问题。,要解决求,累加和,的问题,还要再,设计一个变量,sum,用来,存放,这,100,个数的,和,值,先求,0+1,的和并将其,放在,sum,中,,然后把,sum,中的数,加,上,2,再,存放,在,sum,中,,依次类推,。,在这里,,sum,累加,的,过程,要放在,循环体中,,由计算机来,判断,所加的,数是否已经超过,100,。,main(),int,i,sum;,i=1;sum=0;,while(,i=100,),sum=sum+i,;,i+,;,printf(sum,=%dn,sum);,程序运行后的输出结果:,sum=5050,例,5.3,程序,求,1+2+3+100,的值,思考,:P51,例,5.1,sum=,sum+i,*i sum=1e-6),pi=,pi+t,;,n+=2.0;,s=-s;/*,改变符号*,/,t=,s/n,;,pi=,pi,*4;,printf(pi,=%,fn,pi,);,程序执行后输出以下结果:,pi=3.141397,小组讨论,:,1,、程序,5-3,:求输入的某个数是否为素数。若是,输出,YES,,若不是,输出,NO,。,素数是指那些大于,1,,且除了,1,和它本身以外不能被其他任何数整除的数。如,2,、,3,、,5,、,7,、,11,、,都是素数;,4,、,6,、,8,、,9,、,则不是素数。,为了判断某数,x,是否为素数,最简单的方法是用,2,、,3,、,4,、,x-1,,这些数逐个去除,x,,看能否除尽,只要能被其中某一个数除尽,,x,就不是素数;否则,若不能被任何一个数除尽,,x,就是素数。,实际上只要试除到,就已经可以说明,x,是否为素数了。这是因为如果小于等于的数都不能除尽,x,,则大于的数也不可能除尽,x,。试除到,可以减少循环次数,提高程序的运行效率。,程序代码如下:,#include ,math.h,main(),int,i,x,yes,a;,printf(Enter,integer number:);,scanf,(%,d,&x,);,yes=1;,i=2;,a=(,int)sqrt,(double)x);,while(yes&i2,时,进入循环,若,x,为素数,,yes,的值不变,仍为,1,,若,x,能被,2,的某个数整除,则,x,不是素数,使,yes,的值变为,0,,并且立即退出循环。退出循环后,,if,的语句判断,yes,的值为,1,时,输出,YES,,否则输出,NO,。,小组讨论,:,2,、,P53,迭代法,5.3,用,do-while,语句构成的循环,由,do-while,语句构成的循环称为,”直到型”循环,,,do-while,语句的一般形式为:,do,循环体语句,while(,表达式,),;,do-while,语句的执行过程是,:,先执行循环体语句,,,再,求,表达式的值,,若表达式的,值为“真”,(,非,0,数值,),则,再执行循环体语句,,由此,构成循环,,,直到,表达式的,值为“假”,(,数值,0),时,结束循环,。如图所示。,试将,P51,例,5,。,1,改为,do-while,语句结构,注意点:,P54,do-while,语句,和,while,语句,的,区别,在于,do-while,是,先,执行循环体语句,,,后,判断循环条件,,因此,do-while,至少要执行一次循环体。,main(),int,i,sum;,i=1;sum=0;,do,sum=sum+i;,i+;,while(,if3,f1+f2-f3,f1+f2-f3,f1+f2-f3,图,5-1 for,循环运算过程,5.4 for,语句和用,for,语句构成的循环,for,语句,的,一般形式,为:,for,(,表达式,1,;,表达式,2,;,表达式,3,),循环体语句,for,循环语句,的,执行过程,是:,(1),计算”,表达式,1,”,的值。,(2),计算”,表达式,2,”,的值;,若其值为,非零,,转至,步骤,(3),;,若其值为,零,,则转至,步骤,(5),。,(3),执行一次,循环体语句,。,(4),计算”,表达式,3,”,;然后转向,步骤,(2),,,构成循环,。,(5),结束循环,,执行,for,循环之后的语句。,for,语句的常规使用方法,:,“,表达式,1,”,用来,给循环变量赋初值,或做一些,初始工作,;,“,表达式,2,”,用来作为,判断,循环是否结束,的,条件,;,“,表达式,3,”,用来,修改,循环变量,的,值,,,使,得,循环,能够,趋于结束,。,例如:,for(k,=0;k10;k+),printf,(*);,以上,for,循环在一行上输出,10,个“*”号。,for,语句的,常规,使用方法例,P 56,例,5.5,main()/*,程序,1,*/,int,i,sum;,for(,i=1,sum=0,;,i=100,;,i+,),sum=sum+i;,printf(sum,=%dn,sum);,“,表达式,1,”,是逗号表达式,给循环变量赋初值,做一些,初始工作,准备累加!,判断,循环是否结束!,使,得,循环,能够,趋于结束。,从语法上来讲,,三个表达式,都可以是,任意合法的,C,表达式,,各表达式之间用,”,;”,隔开,并且这,三个表达式,都是,任选项,。,例如,:,我们可以用,for,循环语句将例,5.3,的程序改写为如下几种形式,它们都能正确地求出,1+2+3+100,的值。,for,语句的,非常规,使用方法,main()/*,程序,2*/,int,i=1,sum=0;,for(,;,i=100;i+),sum=sum+i;,printf(“sum,=%dn”,sum);,表达式,1,省略了!,main()/*,程序,3*/,int,i=1,sum=0;,for(,;,i100,goto,pend,;,pend,:,printf(“sum,=%dn”,sum);,三个表达式,都被省掉了,!,分隔符“,;,”,不能省。,由于没有了,表达式,2,,用,goto,语句,结束,循环。,main()/*,程序,5*/,int,i,sum=0;,for(,i=1,;,i=100,;,sum=sum+i+,),;,printf(“sum,=%dn”,sum);,循环体语句是一个空语句!,注意在,循环体语句,之前,不能有,分号,main(),int,i,sum=0;,for(,i=1,;,i=100,;,i+,),;,sum=sum+i;,printf(sum,=%dn,sum);,main(),int,i,sum=0;,for(,i=1,;,i=100,;,i+,),;,sum=sum+i;,printf(sum,=%dn,sum);,/,*,前面两个程序的执行过程,结果,=101,*/,main(),int,i,sum=0;,for(,i=1,;,i=100,;,i+,),;,sum=,sum,+i;,printf(sum,=%,dn,sum);,即,:,循环体语句是一个,空语句,!,例,5.4,编程计算多个圆的面积,本例要求计算,5,个不同半径的圆面积,,且半径,值的变化,是,有规律,的,从,0.5,mm,开始按增,mm,的规律递增,可,直接,用,半径,r,作为,for,语句的,循环控制变量,,每,循环一次,使,r,的值,增,0.5,直到,r,大于,2.5,为止。,main(),float r,s,pi=3.1416;,for(,r,=0.5,;,r=2.5,;,r+=0.5,),s=pi*r*r;,printf(r,=%3.1fs=%fn,r,s);,试改为,:,非常规,for,结构,变量,r,具有,双重功能,,它既是,循环控制变量,,又是,圆的半径值,,它的值由,0.5,变化到,2.5,,循环体共执行,5,次,,当,r,增到,3.0,时,条件表达式,r=2.5,的值为,0,,从而,退出循环,。,5.5,循环结构的嵌套,在一个循环语句的循环体内又完整地包含了另一个循环语句,称为循环嵌套。循环嵌套的书写采用缩进形式,.,在编写程序时,,循环嵌套的书写,要采用,缩进形式,,如在例,5.5,的程序中,,内循环,中的语句应该,比,外循环,中的语句有规律地,向右缩进,24,列,。,例,5.5,循环嵌套的应用,-,输出九九乘法表。,main(),int,i,j;,for(i=1;i=9;i+),for(j=1;j=i;j+),printf(%1d*%1d=%2d ,i,j,i*j);,printf(n,);,程序的运行结果为:,1*1=1,2*1=2 2*2=4,3*1=3 3*2=6 3*3=9,4*1=4 4*2=8 4*3=12 4*4=16,5*1=5 5*2=10 5*3=15 5*4=20 5*5=25,6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36,7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49,8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64,9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,例,5.5,程序输出的九九乘法表,程序,5-7,:求,n,!,即计算,123 n,的值。,程序代码如下:,main(),int,i,s,n;/*,变量,s,放置连乘的积*,/,s=1;/*,注意:,s,的初值为,1*/,printf(Enter,n:);,scanf(%d,&n,);/*,给,n,读入值,,n,表示最后一个因子的值*,/,for(i,=1;i=n;i+),/*,用,n,作为循环的终值*,/,s=s*i;,printf(s,=%,dn,s,);,以上程序执行时,若给,n,输入,5,,变量,i,和,s,中值的变化如表,5-1,所示。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服