程序结构和流程控制语句Word文档下载推荐.docx
《程序结构和流程控制语句Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《程序结构和流程控制语句Word文档下载推荐.docx(33页珍藏版)》请在冰点文库上搜索。
a>
b;
m=max(a,b);
//函数调用语句
max="
m<
endl;
system("
pause"
);
return0;
(4)表达式语句:
由一个表达式后加一个分号构成一个语句。
由一个赋值表达式加一个分号构成一个赋值表达式语句:
y=x*x+2*x;
注意:
i=i+1//是一个赋值表达式
i=i+1;
//是一个赋值语句
(5)空语句:
;
只有一个分号所构成的语句称为空语句。
下面就是一个空语句:
空语句什么也不做,它将在特殊的时候是有用的,讲循环时再细讲。
(6)复合语句(语句块):
用{}将若干语句括起来构成的语句。
“{}”后不再需要分号。
复合语句主要用于控制语句中。
{t=a;
a=b;
b=t;
}//实现a,b数值的交换。
程序的三种基本结构即顺序结构、分支结构和循环结构,都是通过语句来实现的。
1.顺序结构:
按语句顺序依次执行的结构称为顺序结构。
2.分支结构
(1)两路分支:
在两种可能的操作中按条件选取一个执行的结构称为分支结构。
(2)多路分支:
在多种可能的操作中按条件选取一个执行的结构称为分支结构,
3.循环结构:
在人们所要处理的问题中常常遇到需要反复执行某一操作的情况,计算机实现这一操作的程序就要用到循环结构。
循环结构有两种形式,即当型循环结构和直到型循环结构。
分支语句
分支语句用于实现分支程序设计。
分支程序有两路分支结构和多路分支结构,两路分支结构可用if语句实现,多路分支结构可以用嵌套的if语句或switch语句实现。
1.if语句的三种形式
(1)单选条件语句
语句格式:
if(<
表达式>
)<
语句>
执行过程:
当表达式的值为非0(真)时,执行语句,
否则不执行语句。
说明:
①表达式必须用“()”括起来;
②语句只能是单个语句或复合语句。
(2)两选条件语句
)
<
语句1>
else
语句2>
当表达式的值为非0(真)时,执行语句1,
否则执行语句2。
(3)多选条件语句
多选条件语句的格式为:
表达式1>
elseif(<
表达式2>
elseif(<
语句3>
......
表达式n-1>
语句n-1>
else<
语句n>
【例2】输入两个整数a和b,用单选条件语句实现输出其中较大的一个数。
程序流程图如右图所示。
程序如下:
{
inta,b,max;
max=a;
if(b>
max)max=b;
max<
程序执行后屏幕显示:
Inputa,b:
38
max=8
【例3】输入两个整数a和b,用两选条件语句实现输出其中较大的一个数。
程序流程图如右图所示,程序代码如下:
if(a>
b)max=a;
elsemax=b;
程序执行后提示:
Inputa,b:
max=8
【例4】已知下列分段函数,要求编一程序,输入x,输出相应的y的值。
分段函数
程序代码如下:
floatx,y;
请输入一个实数x="
x;
if(x<
0)y=x+1;
elseif(x<
10)y=x*x-5;
elsey=x*x*x;
y="
y<
请输入一个实数x=3
y=4
2.if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。
if(<
<
else
else总是与其前面最近的
还没有配对的if进行配对.
<
if(<
表达式3>
语句4>
【例5】使用if语句嵌套的方法实现【例4】
程序流程图及程序代码如下:
if(x>
=0)
=10)
y=x*x*x;
else
y=x*x-5;
y=x+1;
请输入一个实数x=-3
y=-2
在该程序中,内层的if语句嵌套在外层的if语句的if部分。
C++规定if语句嵌套使用时,else与if的的配对关系是:
else总是与其前面最近的还没有配对的if进行配对。
如果要改变这种约定,则应该用花括号构成复合语句。
{if(<
}
【例6】求三个整数a、b、c中的最大者,a、b、c由键盘输入。
(自行完成)
请输入三个整数a,b,c:
145
a,b,c中最大的数max=5
inta,b,c,max;
请输入三个整数a,b,c:
b>
c;
b)
c)max=a;
elsemax=c;
c)max=b;
elsemax=c;
a,b,c中最大的数max="
2.switch语句(开关语句):
实现多路分支程序。
将条件表达式的值与case后常量值比较,若相等就执行此case后语句,完后再执行下一个case语句,最后执行default后的语句。
语句格式
switch(<
条件表达式>
case<
常量表达式1>
:
〔<
〕
case<
常量表达式2>
......
常量表达式n-1>
〔default:
(1)条件表达式与常量表达式只能是整型或字符型表达式;
(2)每个case后面的常量表达式的值必须互不相同;
(3)一个case后可有多个语句(不必用花括号),也可以没有任何语句。
在执行switch语句的过程中,每当执行完一个case后面的语句后,程序会不加判断地自动执行下一个case后面的语句。
每个case后面的常量表达式只起语句标号的作用,是switch语句中执行各语句的入口,并不在此进行条件判断
【例7】输入0~6的整数,将其转换成对应的星期几。
{inta;
请输入一个0-6的整数(分别对应周日至周六):
a;
switch(a)
{
case0:
cout<
Sunday\n"
case1:
Monday\n"
case2:
Tuesday\n"
case3:
Wednesday\n"
case4:
Thursday\n"
在本例中,若运行程序时输入4,则执行结果为:
Thursday
Friday
Saturday
Inputdataerror
case5:
Friday\n"
case6:
Saturday\n"
default:
Inputdataerror.\n"
程序执行后发现结果并不是我们希望的,而要想实现我们的要求,就应该在执行完指定的一个case分支后,使程序跳出switch语句,即终止switch语句的执行,而这操作可用break语句来实现。
3.break语句:
中止当前语句的执行,并跳转到下一条语句处执行。
break;
若将上例程序中switch语句的内嵌代码改写如下,请分析结果;
case0:
TodayisSunday\n"
TodayisMonday\n"
TodayisTuesday\n"
TodayisWednesday\n"
TodayisThursday\n"
TodayisFriday\n"
TodayisSaturday\n"
从开关语句的执行过程可知,任一开关语句均可用条件语句来实现,但并不是任何条件语句均可用开关语句来实现,这是由于开关语句限定了表达式的取值类型,而条件语句中的条件表达式可取任意类型的值。
250(元)250≤m<
500500≤m<
10001000≤m<
2000m≥2000
d=0%d=5%d=7.5%d=10%d=15%
【例8】商店打折售货。
购货金额数量越大,折扣越大。
具体标准如下(m:
购货金额,d:
折扣率)。
要求从键盘上输入购货金额,计算并输出实付的金额。
分析:
首先找出购货金额与折扣率之间对应关系变化的规律。
从题意知,当购货金额m每变化250元或250元的倍数时,折扣率就会变化。
用m/250来表示折扣率的分档情况,商店打折售货分档情况表:
{intm,c;
floatd,f;
Inputm:
m;
if(m>
=2000)c=8;
m
c=m/250
d
250
0%
250≤m<
500
1
5%
500≤m<
1000
2,3
7.5%
1000≤m<
2000
4,5,6,7
10%
m≥2000
8
15%
elsec=m/250;
switch(c)
{case0:
d=0;
d=5;
d=7.5;
根据购货金额确定好折扣率后,再计算出实付金额。
Inputm:
f=462.5
case7:
d=10;
case8:
d=15;
f=m*(1-d/100.0);
f="
f<
【例9】2005年修改后的《中华人民共和国个人所得税法》规定,个人所得,应纳个人所得税。
具体办法是,每月收入总和扣除1600元后的金额为应缴纳所得税额,应纳税所得额不超过500元的税率为5%,超过500元至2000元的部分税率为10%,超过2000元至5000元的部分税率为15%, 超过5000元至20000元的部分税率为20%超过20000元至40000元的部分税率为25%,超过40000元至60000元的部分税率为30%,超过60000元至80000元的部分税率为35%,超过80000元至100000元的部分税率为40%,超过100000元的部分税率为45%。
现要求编写程序,从键盘上输入某人本月的总收入,输出应缴纳的税额。
(要求学生自行完成)
循环语句(共三种,即while,do…while和for)
在人们所要处理的问题中常常遇到需要反复执行某一操作的情况。
被重复执行的程序段为循环程序,实现循环结构的语句称为循环语句。
在C++中,循环语句有while语句、do…while语句和for语句。
1.while语句
(1)作用:
实现“当型”循环结构。
即当条件成
立时冲复执行while语句中的内嵌语句。
(2)格式:
while(<
)
语句
执行流程图如右图所示
相关说明:
①上述格式中的<
称为循环条件表达式,
一般为关系表达式或逻辑表达式,必须用“()”括起来;
②语句称为循环体,也称While的内嵌语句,可以是单个或复合语句。
(3)执行过程:
先计算表达式的值,当表达式值非0时重复执行指定的语句;
当表达式值为0时结束循环。
【例10】:
求从键盘上输入一个正整数n,计算S=1+2+3+4+……+n,并输出到屏幕上。
由于n可能是不断变化的,因而计算S值的程序不可能依次列出1~n个数,要完成以上的累加求和运算,可设两个整型变量sum和i,sum存放累加的和,i从1变化到n,并按下列步骤进行操作:
(1)给sum赋值0,i赋值1;
//循环初始化
(2)令sum=sum+i,i=i+1;
//循环体与循环修改
(3)若i≤n,则重复执行步骤
(2);
//判断循环是否结束
(4)输出sum的值。
//结束处理
在以上步骤中,步骤
(2)和步骤(3)是需要重复执行的操作,其工作流程如下图所示。
这种重复执行的操作可由程序中的循环结构来完成。
下面用while语句来实现。
(1)while语句是先判断表达式i≤n是否成立,
若条件成立,则将sum加i后赋给sum及i增加1;
若条件不成立,则不执行相应语句,退出循环。
(2)当表达式的值一开始不成立,语句一次也不执行。
如当输入n为0时,i≤n不成立,语句sum=sum+i;
和i++;
一次也不执行。
(3)在循环体中必须有不断修改循环条件的语句,能使循环最终结束而不形成“死循环”。
如i++;
语句,使i不断加1,直到大于n为止。
程序代码和程序流程图如下:
inti,n,sum;
请输入一个正整数n="
n;
sum=0;
i=1;
while(i<
=n)
{sum=sum+i;
i++;
sum="
sum<
【例11】用while语句计算T=n!
(n!
=1×
2×
3×
4…×
n)。
程序代码和程序流程图如下(用while语句):
inti,n,mult;
mult=1;
{mult=mult*i;
mult="
mult<
2.do…while语句
实现“直到型”循环结构。
即重复执
行while语句中的内嵌语句直到条件不成立时停止。
do
);
这里的语句与表达式跟上面讲到的while语句当中的意义完全相同,只是while语句是先判断条件再执行循环体语句,而在do…while语句的执行过程是:
先执行语句,然后计算表达式的值,当表达式值非0时重复执行语句;
直到表达式值为0才结束循环。
【例12】用do…while语句实现【例10】
do
{sum=sum+i;
i++;
}
while(i<
=n);
1到"
n<
的和sum="
(1)do…while语句是先执行sum=sum+i;
语句,后判断表达式i≤n是否成立。
若条件成立,则继续执行循环体;
(2)即使表达式的值一开始就不成立,语句仍要执行一次。
如当输入n为0时,i≤n不成立,但语句sum=sum+i;
也要执行一次。
(3)在循环体中要能不断修改循环条件的语句,最终能使循环结束,否则会形成“死循环”。
【例13】用do…while语句实现【例11】。
(要求学生自行完成程序流程图并调试程序)
3.for语句
for语句的一般格式为:
for(<
(1)表达式1称为循环初始化表达式,通常为循环变量赋初值;
(2)表达式2称为循环条件表达式,通常是关系表达式或逻辑表达式作循环结束条件;
(3)表达式3称为循环增量表达式,通常为赋值表达式,简单情况下为循环变量增量。
(4)语句部分为循环体,它可以是单个或复合语句。
for语句的执行过程
(1)计算表达式1的值;
(2)计算表达式2的值,
若表达式2的值为非0(“真”)时,则转到(3);
若表达式2的值为0(“假”)时,则结束循环;
(3)执行循环体语句;
(4)计算表达式3的值,返回
(2)继续执行。
for语句的执行过程如右图所示。
3.for语句可以和下列while语句等效:
{
【例14】用for语句实现【例10】
for(i=1;
i<
=n;
i++)sum=sum+i;
在上例中,表达式1:
i=1完成对循环变量i的初始化赋值工作,使i的初值为1;
表达式2:
=n判断循环变量i的值是否小于或等于n,若不成立则结束循环;
若成立则执行sum=sum+i;
语句,再执行表达式3;
表达式3:
i++,使用循环变量i加1。
转表达式2继续判断i<
=n是否成立。
(1)for语句中的三个表达式都可省略,但其中的两个分号不能省略;
(2)若表达式1省略,则应在for语句之前给循环变量赋初值。
i=1;
for(;
i++)sum=sum+i;
(3)若表达式2省略,则不判断循环条件,循环无终止地进行下去,形成“死循环”,即认为表达式2始终为真,因此表达式2通常不能省略;
(4)若表达式3省略,则在循环体中应有能不断修改循环条件的语句。
for(i=1;
){sum=sum+i;
(5)若省略表达式1和表达式3,只有表达式2,即只给出循环条件。
for(;
){sum=sum+i;
}
此时,for语句和while语句完全相同。
上述语句相当于:
=n){sum=sum+i;
(6)表达式1和表达式3可以是一个