程序的流程控制.ppt

上传人:b****2 文档编号:2122471 上传时间:2022-10-27 格式:PPT 页数:48 大小:225KB
下载 相关 举报
程序的流程控制.ppt_第1页
第1页 / 共48页
程序的流程控制.ppt_第2页
第2页 / 共48页
程序的流程控制.ppt_第3页
第3页 / 共48页
程序的流程控制.ppt_第4页
第4页 / 共48页
程序的流程控制.ppt_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

程序的流程控制.ppt

《程序的流程控制.ppt》由会员分享,可在线阅读,更多相关《程序的流程控制.ppt(48页珍藏版)》请在冰豆网上搜索。

程序的流程控制.ppt

第三章程序的流程控制语句本章内容o语句概述o表达式语句o复合语句o选择语句o循环语句o转移语句o空语句o程序设计风格语句概述o表达式构成了数据处理的基本单位。

o当程序中有多个表达式时,就会面临:

n先计算哪一个表达式n根据不同的情况计算不同的表达式n一个或几个表达式需要重复计算多次o语句实现对程序执行流程的控制,包括:

n顺序控制n分支控制n循环控制C+语句的分类表达式语句o在C+表达式的后面加上一个分号“;”就可以构成表达式语句,其格式为:

;例如:

例如:

na+b*c;nab?

a:

b;na+;nx=a|b&c;较常使用的表达式语句o赋值o自增/自减o输入/输出o无返回值的函数调用,等例如nx=a+b;/赋值nx+;/自增nf(a);/函数调用ncina;/输入ncoutb;/输出复合语句o复合语句是由一对花括号括起来的一条或多条语句,又称为分程序(block)。

其格式为:

o中的语句可以是任何的C+语句,其中包括数据定义语句。

o复合语句一般作为函数体和结构语句的成分语句。

o语法上,复合语句可看作是一个语句。

复合语句举例inta,b;cinab;intmax;if(a=b)/选择语句选择语句max=a;elsemax=b;coutmaxendl;选择语句o在程序中,常常需要根据不同的情况来从一组语句中选择一个来执行,这是通过选择语句来完成的。

o选择语句包括:

nif语句nswitch语句if语句oif语句(又称条件语句)是根据一个条件满足与否来决定是否执行某条语句或从两个语句中选择一个语句执行。

oif语句有两种格式:

nif()nif()elseif语句的含义第一种格式第二种格式例子:

从键盘输入三个整数,计算其中的最大值并将其输出#includeusingnamespacestd;intmain()inta,b,c,max;cout请输入三个整数:

请输入三个整数:

abc;if(ab)max=a;elsemax=b;if(cmax)max=c;cout最大者为:

最大者为:

maxendl;return0;if语句的锯齿格式o为了提高程序的易读性,在写if语句时,最好采用“锯齿”格式,即把成分语句往后缩进几列。

o当if语句的成分语句也是if语句时,如果嵌套层次很深,“锯齿”格式将会使得程序正文严重偏向右边,从而带来对程序编辑、查看是的困难。

为了减少文本的缩进量,可以把这样的if语句按下面的格式书写:

if(.).elseif(.).elseif(.).elseif(.).else.例子:

从键盘输入一个三角形的三条边,判断其为何种三角形#includeusingnamespacestd;intmain()inta,b,c;cinabc;if(a+b=c|b+c=a|c+a=b)cout不是三角形不是三角形;elseif(a=b&b=c)cout等边三角形等边三角形;elseif(a=b|b=c|c=a)cout等腰三角形等腰三角形;elseif(a*a+b*b=c*c|b*b+c*c=a*a|c*c+a*a=b*b)cout直角三角形(非等腰)直角三角形(非等腰);elsecout其它三角形其它三角形;coutendl;return0;if语句的歧义问题o下面的if语句的含义是什么?

if()if()else1.if()if()else2.if()if()elseoC+规定:

else子句与前面最近的、没有else子句的if配对。

因此,上面的if语句解释为:

nif()if()elseo若要按2来解释,则需要加上花括号:

nif()if()elseswitch语句o程序中有时需要从两个(组)以上的语句中选择一个(组)来执行。

oC+提供了一条多路选择语句:

switch语句(又称开关语句),它能根据某个表达式的值在多组语句中选择一组语句来执行。

switch语句的格式switch()case:

case:

case:

default:

例子、从键盘输入一个星期的某一天(0:

星期天;1:

星期一;.),然后输出其对应的英语单词#includeusingnamespacestd;intmain()intday;cinday;switch(day)case0:

coutSunday;break;case1:

coutMonday;break;case2:

coutTuesday;break;case3:

coutWednesday;break;case4:

coutThursday;break;case5:

coutFriday;break;case6:

coutSaturday;break;default:

coutInputerror;coutendl;return0;switch语句中的使用break语句o在执行switch语句的某个分支时,需要用break语句结束该分支的执行。

o在switch语句的一个分支的执行中,如果没有break语句(最后一个分支除外),则该分支执行完后,将继续执行紧接着的下一个分支中的语句序列。

o在其它一些语言(如:

Pascal)的多路选择语句中,一个分支执行完后将自动结束多路选择语句的执行。

oC+中的switch语句比其它一些语言中的多路选择语句更具有灵活性。

当若干个分支具有部分重复功能时,C+的switch语句可以节省代码量。

循环(重复)语句o循环是根据某个条件的满足与否来决定是否重复执行一组语句。

o循环一般由四个部分组成:

n循环初始化n循环条件n循环体n下一次循环准备。

oC+提供了三种实现重复操作的循环语句:

nwhile语句ndo-while语句nfor语句o这三种循环语句在表达能力上是等价的,在解决某个具体问题时,用其中的一种可能会比其它两种更加自然。

while语句while语句具有如下的格式:

while()用while语句求n!

#includeusingnamespacestd;intmain()intn;cinn;inti=2,f=1;/循环初始化循环初始化while(i=n)/循环条件循环条件f*=i;i+;/下一次循环准备下一次循环准备coutfactorialofn=fendl;return0;do-while语句do-while语句的格式如下:

dowhile();用do-while语句求n!

#includeusingnamespacestd;intmain()intn;cinn;inti=1,f=1;/循环初始化循环初始化dof*=i;i+;/下一次循环的准备下一次循环的准备while(i=n);/循环条件循环条件coutfactorialofn=fendl;return0;for语句for语句的格式如下:

for(;)#includeusingnamespacestd;intmain()intn,i,f;cinn;for(i=2,f=1/循环初始化循环初始化;i=n/循环条件循环条件;i+)/下一次循环准备下一次循环准备f*=i;/循环体循环体coutfactorialofn=fendl;return0;用for语句求n!

三种循环语句的使用原则o循环可以分成两大类:

n计数控制的循环n事件控制的循环o使用三种循环语句的一般原则是:

n如果循环前能确定循环的次数,则用for语句;n否则,使用while或do-while语句,其中,如果循环体至少要执行一次,则用do-while语句。

n由于for语句能清晰地表示“循环初始化”、“循环条件”以及“下一次循环准备”,因此,一些非计数控制的循环也用for语句实现。

例:

计算从键盘输入的一系列整数的和,要求首先输入整数的个数。

(计数控制的循环)#includeusingnamespacestd;intmain()intn;coutn;cout请输入请输入n个整数:

个整数:

;intsum=0;for(inti=1;ia;sum+=a;cout输入的输入的n个整数的和是:

个整数的和是:

sumendl;return0;例:

计算从键盘输入的一系列整数的和,要求输入以-1结束。

(事件控制的循环)#includeusingnamespacestd;intmain()inta,sum=0;couta;while(a!

=-1)sum+=a;cina;cout输入的整数的和是:

输入的整数的和是:

sumendl;return0;例315从键盘接收字符,一直到输入了字符y(Y)或n(N)为止。

(事件控制的循环)#include#includeusingnamespacestd;intmain()charch;docoutch;ch=tolower(ch);while(ch!

=y&ch!

=n);if(ch=y).else.return0;0,1,1,2,3,5,8,13,.#includeusingnamespacestd;intmain()intn;cinn;intfib_1=0;/用于记住前一个用于记住前一个Fibonacci数数intfib_2=1;/用于记住新的用于记住新的Fibonacci数数for(inti=3;i=n;i+)inttemp=fib_1+fib_2;/计算新的计算新的Fibonacci数数fib_1=fib_2;/记住前一个记住前一个Fibonacci数数fib_2=temp;/记住新的记住新的Fibonacci数数cout第第n个费波那契数是个费波那契数是:

fib_2endl;return0;例:

求第n个费波那契(Fibonacci)数#include#includeusingnamespacestd;usingnamespacestd;intmain()intmain()intn,count=0;intn,count=0;coutcoutn;/cinn;/从键盘输入一个正整数从键盘输入一个正整数for(inti=2;in;i+)/for(inti=2;in;i+)/循环:

分别判断循环:

分别判断22、33、.、n-1n-1是否为素数是否为素数intj=2;intj=2;while(ji&i%j!

=0)/while(ji&i%j!

=0)/循环:

分别判断循环:

分别判断ii是否能被是否能被2i-12i-1整除整除j+;j+;if(j=i)/iif(j=i)/i是素数是素数couti,;couti,;count+;count+;if(count%6=0)coutendl;/if(count%6=0)coutendl;/控制每一行输出控制每一行输出66个素数。

个素数。

coutendl;coutendl;return0;return0;例:

编程求出小于n的所有素数(质数)转移语句o除了有条件的分支语句(if和switch)外,C+还提供了无条件的分支语句:

nbreakncontinuengotonreturnbreak语句obreak语句的格式:

break;obreak语句的含义有两个:

n结束switch语句的某个分支的执行n退出包含它的最内层循环语句(由于循环可以嵌套)o在循环体中只要执行了break语句,就立即跳出(结束)循环,循环体中跟在break语句后面的语句将不再执行,程序继续执行循环之后的语句。

o在循环体中,break语句一般作为某个if语句的子句,用于实现进一步的循环控制。

o例如,判断i是否为素数的循环也可写成:

j=2;k=sqrt(i);while(j=k)if(i%j=0)break;/退出循环j+;或for(j=2,k=sqrt(i);j=k;j+)if(i%j=0)break;continue语句ocontinue语句的格式如下:

continue;ocontinue语句只能用在循环语句的循环体中,其含义是:

立即结束当前循环,准备进入下一次循环。

o对于while和do-while语句,continue语句将使控制转到循环条件的判断;o对于for语句,continue语句将使控制转到:

先计算,然后计算,并根据的计算结果来决定是进入下一次循环还是结束循环。

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1