程序的流程控制PPT课件下载推荐.ppt
- 文档编号:15040602
- 上传时间:2022-10-27
- 格式:PPT
- 页数:48
- 大小:225KB
程序的流程控制PPT课件下载推荐.ppt
《程序的流程控制PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《程序的流程控制PPT课件下载推荐.ppt(48页珍藏版)》请在冰豆网上搜索。
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;
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;
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:
default:
例子、从键盘输入一个星期的某一天(0:
星期天;
1:
星期一;
.),然后输出其对应的英语单词#includeusingnamespacestd;
intmain()intday;
cinday;
switch(day)case0:
coutSunday;
break;
case1:
coutMonday;
case2:
coutTuesday;
case3:
coutWednesday;
case4:
coutThursday;
case5:
coutFriday;
case6:
coutSaturday;
coutInputerror;
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;
do-while语句do-while语句的格式如下:
dowhile();
用do-while语句求n!
inti=1,f=1;
/循环初始化循环初始化dof*=i;
/下一次循环的准备下一次循环的准备while(i=n);
/循环条件循环条件coutfactorialofn=fendl;
for语句for语句的格式如下:
for(;
)#includeusingnamespacestd;
intmain()intn,i,f;
for(i=2,f=1/循环初始化循环初始化;
i=n/循环条件循环条件;
i+)/下一次循环准备下一次循环准备f*=i;
/循环体循环体coutfactorialofn=fendl;
用for语句求n!
三种循环语句的使用原则o循环可以分成两大类:
n计数控制的循环n事件控制的循环o使用三种循环语句的一般原则是:
n如果循环前能确定循环的次数,则用for语句;
n否则,使用while或do-while语句,其中,如果循环体至少要执行一次,则用do-while语句。
n由于for语句能清晰地表示“循环初始化”、“循环条件”以及“下一次循环准备”,因此,一些非计数控制的循环也用for语句实现。
例:
计算从键盘输入的一系列整数的和,要求首先输入整数的个数。
(计数控制的循环)#includeusingnamespacestd;
coutn;
cout请输入请输入n个整数:
个整数:
intsum=0;
for(inti=1;
ia;
sum+=a;
cout输入的输入的n个整数的和是:
个整数的和是:
sumendl;
计算从键盘输入的一系列整数的和,要求输入以-1结束。
(事件控制的循环)#includeusingnamespacestd;
intmain()inta,sum=0;
couta;
while(a!
=-1)sum+=a;
cina;
cout输入的整数的和是:
输入的整数的和是:
例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;
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;
求第n个费波那契(Fibonacci)数#include#includeusingnamespacestd;
usingnamespacestd;
intmain()intmain()intn,count=0;
intn,count=0;
coutcoutn;
/cinn;
/从键盘输入一个正整数从键盘输入一个正整数for(inti=2;
in;
i+)/for(inti=2;
i+)/循环:
分别判断循环:
分别判断22、33、.、n-1n-1是否为素数是否为素数intj=2;
intj=2;
while(ji&
i%j!
=0)/while(ji&
=0)/循环:
分别判断ii是否能被是否能被2i-12i-1整除整除j+;
j+;
if(j=i)/iif(j=i)/i是素数是素数couti,;
couti,;
count+;
if(count%6=0)coutendl;
/if(count%6=0)coutendl;
/控制每一行输出控制每一行输出66个素数。
个素数。
coutendl;
return0;
编程求出小于n的所有素数(质数)转移语句o除了有条件的分支语句(if和switch)外,C+还提供了无条件的分支语句:
nbreakncontinuengotonreturnbreak语句obreak语句的格式:
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语句将使控制转到:
先计算,然后计算,并根据的计算结果来决定是进入下一次循环还是结束循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 流程 控制