第2章程序控制结构.ppt_第1页
第2章程序控制结构.ppt_第2页
第2章程序控制结构.ppt_第3页
第2章程序控制结构.ppt_第4页
第2章程序控制结构.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章程序控制结构2.1顺序结构2.2选择结构2.3循环结构2.4控制转向语句2.5程序实例,按照语句出现的先后顺序依次执行。,2.1顺序结构,2.1.1定义语句,说明语句在C+程序中,一个标识符(变量名、常量名、函数名、对象名等)在使用之前必须先定义,通知编译器为其分配存储空间,或告诉编译器它的存在及其特征。例如:inta=0,b=3;constdoublepi=3.14159;intsum(int,int);floatscore503;,2.1.2表达式语句,形式:;可以进行的操作通常包括赋值操作,复合赋值操作,增量、减量操作,函数调用操作和输入输出操作。例如:,i+;-j;abs(x);coutij;,sum=a+b;a=b=c;i=1,j=2;b*=c;,2.1.3复合语句,形式:作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。,例如:if(x=0)couta;cout”就可以将键盘键入的数据读入到变量中。语法格式:cin变量1变量2变量n;变量可以是任意数据类型,输入时各个数据之间用空格键、Tab键或Enter键分隔。例如:inta,b;cinab;键盘上输入:93,9,键盘,3,键盘,2.标准输出流cout,负责将数据输出到屏幕上,使用插入运算符“”就可以将数据显示在屏幕上当前光标所在位置。语法格式:cout表达式1表达式2表达式n;表达式可以是任意类型的,数据输出的格式由系统自动决定。,【例2.1】cout应用示例,#includeusingnamespacestd;intmain()intm=2,n=8;doublepai_1=3.14159265;floatpai_2=3.141f;charch1=A,ch2=B;boolok=true;coutm=mendl;coutn=nendl;coutpai_1=pai_1,pai_2=pai_2endl;coutch1=ch1,ch2=ch2endl;coutok=okendl;cout!ok=!okendl;return0;,图2.2cout应用示例,【例2.2】使用格式控制符输出数据,#include#includeusingnamespacestd;intmain()inta=35;doubleb=12.3456789;cout1234567890123endl;coutdecahexaoctaendl;coutbendl;coutsetprecision(4)bendl;coutsetw(10)bendl;coutsetw(10)setfill(#)bendl;coutsetiosflags(ios:scientific)bendl;coutsetprecision(3)bendl;coutsetprecision(2)bb)t=a;a=b;b=t;,#includeusingnamespacestd;intmain()inta,b,t;coutab;if(ab)t=a;a=b;b=t;coutabx;if(x0)y=fabs(x);elseif(x10)y=exp(x)*sin(x);elseif(x20)y=pow(x,3);elsey=(3+2*x)*log(x);couty=y0)coutx与y均大于0;elsecoutch2;if(ch1!=ch2)if(ch1ch2)coutch1大于ch2endl;elsecoutch1小于ch2endl;elsecoutch1等于ch2=0,共用同一个语句组,思考:若省去break语句,情况会怎样?,2.3循环结构,按照给定规则重复地执行程序中的语句,2.3.1while语句,while(表达式)语句,循环条件,其值为true(非0)、false(0),循环体,【例2.8】求1+2+3+100,#includeusingnamespacestd;intmain()inti(1),sum(0);/定义变量,初始化while(i=100)/构造循环sum+=i;/循环体,多次执行i+;coutsum=sumendl;return0;,0,1,1,2,真,3,3,真,6,4,真,10,5,真,真,100,真,101,真,5050,假,sum5050,1,2,3,3,6,4,100,5050,101,循环结束!,实际上是将i不停地累加到一起,【例2.9】求出满足不等式的最小n值:,#includeusingnamespacestd;intmain()inti=0;doubles=0;while(s5)s+=double(1)/+i;coutn=iendl;return0;,2.3.2do-while语句,do语句while(表达式);,【例2.10】求自然数1100之和,要求用do-while语句实现。,#includeusingnamespacestd;intmain()inti(1),sum(0);dosum+=i;i+;while(i=100);coutsum=sumnum;dodigital=num%10;num/=10;cout0);coutendl;,for(表达式1;表达式2;表达式3),表达式2,执行,非0,0,退出循环,表达式1,表达式3,表达式1;while(表达式2);表达式3;,2.3.3for语句,【例2.12】求自然数1100之和,要求用for语句实现。,#includeusingnamespacestd;intmain()inti,sum(0);for(i=1;i=100;i+)sum+=i;coutsum=sumendl;return0;,【例2.13】一个小球从100米高处落下,每次落地后反弹回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?,分析:第1次落地后反弹高度为h=100/2第2次落地时经过的米数为s=100+h*2第2次落地后反弹高度为h=h/2第3次落地时经过的米数为s=s+h*2,#include#includeusingnamespacestd;intmain()floats=100.0,h=s/2;for(inti=2;i=10;i+)s=s+h*2;h=h/2;coutsetiosflags(ios:fixed)setprecision(3);cout第10次落地时,共经过s米;反弹的高度是h米endl;return0;,思考该小球反弹多少次才能静止下来?,注意:,for语句中的三个表达式可以部分省略或全部省略,但;不能省略,若省略表达式2,则表示循环条件为真。,for(;i=100)break;/break语句用于跳出循环,intsum=0;for(inti=1;i100)break;,三个表达式都可以是任何类型的C+表达式。inti,sum;for(i=1,sum=0;i=100;sum+=i,i+);,表达式1可以是变量定义语句,即循环控制变量可在其中定义。intsum=0;for(inti=1;i=100;i+)sum+=i;,2.3.4多重循环,循环嵌套:循环体内包含另一个完整的循环结构。三种循环语句皆可以相互嵌套。,for()while()dowhile();,【例2.14】编程显示输出九九乘法表,图2.19九九乘法表运行界面,#includeusingnamespacestd;intmain()coutttt九九乘法表endl;coutttt-endl;for(inti=1;i=9;i+)for(intj=1;j=9;j+)coutij=i*jt;coutn;if(n0)break;/当输入负数时,就退出循环sum+=n;cout输入的正整数之和为:sumendl;return0;,2.4.2continue语句,格式:continue;功能:只用在循环体中,用来结束该次循环。在循环体中遇到continue语句时,本次循环结束,回到循环条件判断是否执行下一次循环。,在while和do-while循环结构中,continue语句将使执行流程直接跳转到循环条件的判定部分,然后决定循环是否继续进行。在for循环结构中,当遇到continue时,执行流程将跳过循环体中余下的语句,而转去执行for语句中的表达式3,然后根据表达式2进行循环条件的判定以决定是否继续执行for循环体。,while(i=100)break;coutsumendl;,while(i=100)continue;,break和continue语句的区别,【例2.16】输出100以内能够被7整除的所有整数。,#include#includeusingnamespacestd;intmain()for(inti=1;i=100;i+)if(i%7!=0)continue;/如果i不能被7整除,则退出本次循环coutsetw(5)i;coutendl;return0;,思考:(1)将continue改为break,则输出有什么变化?(2)不采用continue语句,用其它方法如何实现?,2.4.3goto语句,goto标号;标号:语句;,标号语句,将流程转到标号所指定的标号语句处。,【例2.17】利用goto语句实现计算前100个自然数之和并输出结果,#includeusingnamespacestd;intmain()inti=1,sum=0;loop:sum+=i;i+;if(i=100)gotoloop;coutsum=sumn(2)m除以n得余数r(3)若r=0,则n为最大公约数,结束;否则执行(4)(4)mn,nr,再重复执行(2),辗转相除法while(r=m%n)!=0)m=n;n=r;coutn;if(m=nwhile(r=m%n)!=0)m=n;n=r;cout最大公约数为:nendl;return0;,【例2.19】显示输出3100之间的所有素数。,分析:(1)素数:一个大于1的除了它自身和1以外,不能被其它任何正整数所整除的整数。判别某数m是否为素数,最简单的方法是:用i=2,3,m-1逐个除,只要有一个能整除,m就不是素数,可以用break提前结束循环;若都不能整除,则m是素数。(2)如果m不是素数,则必然能被分解为两个因子a和b,并且其中之一必然小于等于sqrt(m),另一个必然大于等于sqrt(m)。所以要判断m是否为素数,可简化为判断它能否被2至sqrt(m)之间的数整除即可。因为若m不能被2至sqrt(m)之间的数整除,则必然也不能被sqrt(m)至m-1之间的数整除。(3)在退出循环以后,如果是因为找到了一个能整除m的数而通过break退出循环的,则i=sqrt(m);反之,如果是正常退出循环的,则i=sqrt(m)+1。因此,在循环结束后,只要判断i是否大于sqrt(m),若是,则表明m是素数,输出该素数。(4)要判断多个素数是否为素数,需要使用双重循环。外循环每循环一次提供一个数,由内循环通过多次除法判断其是否为素数。,#include#includeusingnamespacestd;intmain()coutk)coutmt;cout=0.000001)sinx+=t;t=-t*x*x/(n+1)*(n+2);n+=2;cout编程求得的sin(x)=sinxendl;cout调用标准函数求得的sin(x)=sin(x)endl;,【例2.21】求“水仙花数”。所谓“水仙花数”是指一个三位正整数,其各位数字的立方和等于该数本身。例如:153=13+53+33。,方法1:利用三重循环编写程序因为“水仙花数”是三位整数,所以取值范围为100999。外循环变量i控制百位数字从1变化到9中层循环变量j控制十位数字从0变化到9内循环变量k控制个位数字从0变化到9。,inti,j,k,n;cout水仙花数:;for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)m=i*i*i+j*j*j+k*k*k;n=100*i+10*j+k;if(m=n)coutm;,方法2:不使用循环嵌套,只用1个for语句编写程序。,intmain()inti,j,k,n;cout水仙花数:;for(n=100;n1000;n+)i=n/100;/i为百位数字j=n/10-i*10;/j为十位数字k=n%10;/k为个位数字if(i*i*i+j*j*j+k*k*k=n)coutn;,【例2.22】用“枚举法”求解百元买百鸡问题。假定公鸡5元1只,母鸡3元1只,小鸡1元3只,现在有100元钱要买100只鸡,且需包含公鸡、母鸡和小鸡,编程列出所有可能的购鸡方案。,分析设公鸡、母鸡、小鸡各为x、y、z只,可列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论