C程序的流程控制Word文档格式.doc
《C程序的流程控制Word文档格式.doc》由会员分享,可在线阅读,更多相关《C程序的流程控制Word文档格式.doc(20页珍藏版)》请在冰豆网上搜索。
0){ if(n>
0){
if(a>
if(a>
elsez=b;
}
} elsez=b;
答案是前者。
注意:
else总是离它最近的一个if配对,如果你想表达的是后者,必须要用{}。
例3.1:
输入2个数,找出其中最大一个并显示出来。
#include<
iostream.h>
voidmain()
{
inti,j;
cout<
<
"
请输入2个整数:
;
cin>
>
i>
j;
2个数中最大的是:
if(i>
=j)
i<
endl;
else
j<
}
在编程中多使用cout输出提示性的文字,否则上来就用cin接收键盘输入,用户将不知所措。
例3.2:
输入3个数,找出其中最大一个并显示出来。
inti,j,k;
请输入3个整数:
j>
k;
3个数中最大的是:
=j){
=k)
k<
else{
if(j>
本例的思想是将“从3个数中找出最大者”的问题转化成两个“从2个数中找出最大者”的问题。
例3.3:
(例3.2的另解)
if(i<
j)i=j;
k)i=k;
本例的思想是:
假设第一个变量i中的数为最大,分别用i和j、k比较,只要遇到比i大的数就存到i中,否则什么也不做,这样保证i中始终存放的是当前比较到的最大者。
这一思想很重要,请注意学习。
例3.4:
输入3个数,然后按从大到小的顺序把它们显示出来。
inti,j,k,p;
j){p=i;
i=j;
j=p;
k){p=i;
i=k;
k=p;
if(j<
k){p=j;
j=k;
3个数从大到小排列:
endl<
'
'
本例的思想:
用i、j、k从大到小存放三个数,其中涉及到交换两个变量的值问题。
若要交换两个变量x、y的值,不能只做简单的对换:
x=y;
y=x;
,这样将导致xy中都存放着原来y中的值。
假设x=2,y=3,下面作简单的对换,以实现x=3,y=2
x=y;
//现在x=3
y=x;
//现在y=3,最终x=3y=3
正确的做法是使用一个中间变量p
p=x;
//现在p=2
y=p;
//现在y=2,最终x=3,y=2
思考:
不借助中间变量交换xy两个变量的值,应执行哪3个赋值语句?
例3.5:
输入工资薪金所得,计算应纳个人所得税并显示计算结果。
假定工资薪金所得扣除1000元后剩余部分为应纳税所得额,税率如下:
级数
全月应纳税所得额
税率(%)
1
不超过500元的部分
5
2
超过500元至2000元的部分
10
3
超过200元至5000元的部分
15
4
超过5000元至20000元的部分
20
超过20000元至40000元的部分
25
6
超过40000元至60000元的部分
30
7
超过60000元至80000元的部分
35
8
超过80000元至100000元的部分
40
9
超过100000元的部分
45
分析:
假设某人的工资是6830元,扣除1000元后应纳税额为5830,这5830元被分为4级分别计税:
本级应纳税所得额
本级应纳税额
尚未计税的应纳税额
超过5000元部分:
5830-5000=830
166
5000
超过2000元部分:
5000-2000=3000
450
2000
超过500元部分:
2000-500=1500
150
500
不超过500元的部分:
500
合计:
5830
791
doubleincome,tax=0.0;
请输入全月工资薪金所得:
income;
income-=1000;
if(income>
100000.0)
tax+=(income-100000.0)*0.45;
income=100000.0;
80000.0)
tax+=(income-80000.0)*0.40;
income=80000.0;
60000.0)
tax+=(income-60000.0)*0.35;
income=60000.0;
40000.0)
tax+=(income-40000.0)*0.30;
income=40000.0;
20000.0)
tax+=(income-20000.0)*0.25;
income=20000.0;
5000.0)
tax+=(income-5000.0)*0.20;
income=5000.0;
2000.0)
tax+=(income-2000.0)*0.15;
income=2000.0;
500.0)
tax+=(income-500.0)*0.10;
income=500.0;
0.0)
tax+=income*0.05;
应纳个人所得税:
tax<
按任意键结束"
cin.get();
if多分支结构
if(条件1)
语句1
else
if(条件2)
语句2
else
if(条件3)
语句3
...
else
if(条件n)
语句n
else
语句n+1
这是通过规范化的if嵌套所构成的条件分支结构,在这种结构中if语句嵌套在else之后。
但通常我们采用下面更简洁的格式:
if(条件1)语句1
elseif(条件2)语句2
elseif(条件3)语句3
…
elseif(条件n)语句n
else语句n+1
这种结构的工作原理:
先检测条件1,若满足就执行语句1;
否则检测条件2,若满足就执行语句2;
否则检测条件3,若满足就执行语句3 ...若所有条件都不满足则执行语句n+1,若没有else语句n+1就什么也不做。
这里的n个条件是互斥的,即只要满足其中一个条件则其他条件肯定不满足,也就是说多分支结构中的n+1个语句只有一个能被执行。
例3.6:
输入一个0-100分范围内的一个成绩,显示相应的等级:
90-100 优
80--89 良
70--79 中
60--69 及格
60分以下 不及格
floatscore;
请输入成绩:
score;
if(score<
0||score>
100)
输入错误!
成绩必须在0-100分之!
elseif(score<
60)cout<
不及格"
70)cout<
及格"
80)cout<
中"
90)cout<
良"
elsecout<
优"
switch语句和switch多分支结构
switch语句的格式:
switch(整型表达式){
case整型常量表达式1:
语句序列1
case整型常量表达式2:
语句序列2
...
case整型常量表达式k:
语句序列k
default:
语句序列k+1
}
switch语句通过判断整型表达式的值来确定程序的去向。
若整型表达式的值与整型常量表达式1的值相同,则依次执行语句序列1开始的各个语句序列,即语句序列1,语句序列2...语句序列k+1;
若整型表达式的值与整型常量表达式2的值相同,则依次执行语句序列2开始的各个语句序列,即语句序列2,语句序列3...语句序列k+1;
如果整型表达式的值不等于任何列出的整型常量表达式的值,则执行从default后的语句序列k+1;
如果没有default则什么也不做;
在依次执行各个语句序列的过程中,若遇见break语句,则立即跳出switch分支结构。
若每个语句序列的最后一个语句都是break,则这样的switch多分支结构可以用等效的if多分支结构替代。
例3.7:
输入一个表示