分支语句的嵌套

[日期:2020-11-04] 作者:信息技术 次浏览 [字体: ]

有些问题的条件判断比较复杂,只用一条if…else语句无法表达清晰,这时可以在if分支或者else分支的内部再使用另一个if 语句,这种情况称为选择结构的嵌套。

例三:

给出100分制成绩,要求输出成绩等级A、B、C。80分及以上为A,60~80(包括60但不包括80)分为B,60分以下为C。

程序如下:

#include <iostream>

using namespace std;

int main()

{

         int a;

         cin>>a;

         if (a>=80)

             cout<<'A';

         else

         {       

                   if (a>=60)

                 cout<<'B';

             else

                 cout<<'C';

         }

         return 0;

}

If…else的嵌套其实很容易把人搞晕,编程时一定要理清逻辑和思路。我们其实可以用逻辑运算符让程序的逻辑更明晰。

用逻辑运算符改写后的程序:

#include <iostream>

using namespace std;

int main()

{

         int a;

         cin>>a;

         if (a>=80)

             cout<<'A';

         if (a<80&&a>=60)

             cout<<'B';

         if (a<60)

             cout<<'C';

         return 0;

}

三、熟悉逻辑运算符

例四:判断“闰年”的口诀是:四年一闰,百年不闰,四百年又闰。即如果该年份能被400整除,或者能被4整除但不能被100整除时,该年份为闰年。用一个逻辑表达式判断x年是否为闰年。


例五:假设变量定义如下为“int A=1,B=0,C=0,D=1;”,以下逻辑运算表达式的值为真(1)的有(    )。

A.(A&&B)‖(C&&D)         B.((A&&B)‖C)&&D

C.A&&((B‖C)‖D)          D.(A&&(B‖C))‖D

四、分支语句编程实战

上机完成如下程序:

1.读入一个数,若这个数大于1并且小于100,则输出yes。(注意这里的数需同时满足两个条件,可以使用前面的关系运算符“&&”,该运算符的意义为需要同时满足运算符前后两个条件)

2.输入三个数,输出其中最大的数。



课后提高练习

【邮费】

根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克),基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

输入一行:两个整数,第一个表示邮件的重量,第二个数为1或者0,1表示加急,0表示不加急。

输出一个整数,表示应收邮费。



【商场促销】

某商场为迎接即将到来的“六一”儿童节,推出了一系列优惠活动。

(1)如果是该商场的VIP客户,那么:

如果购买的商品价值在500元以下(含500元),将享受8.5折优惠;

如果购买的商品价值在500元以上,1000元以下(含1000元),将享受8折优惠;

如果购买的商品在1000元以上,除了享受7.5折优惠,还将获得一个惊喜大礼包。

(2)如果不是VIP客户,那么:

如果购买的商品价值在500元以下(含500元),将享受9折优惠;

如果购买的商品价值在500元以上,除了享受9折优惠,同时还将获得一个惊喜大礼包。

本题的任务是根据顾客的身份和购买商品的价值,给出一个应付金额,以及在付款时,是否可以领取大礼包。

【输入格式】

第一行一个字符“V”或“C”,“V”表示该顾客是VIP客户,“C”表示是普通客户。

第二行一个正整数,int范围以内,表示该顾客购买的商品价值。

【输出格式】

第一行表示是否可以领取大礼包,如果可以输出“YES”,否则输出“NO”。

第二行一个实数,保留两位小数,表示顾客应付金额。

【样例输入】

V

580

【样例输出】

NO

464.0

提示:因为我们还没学习使用字符型变量和常量,以下做简单介绍:

char a;     //定义一个字符型变量a

         cin>>a;     //读入一个字符,这个字符可能是V或者C

         if (a=='V')   //判断字符型变量a是否等于字符V,即判断是不是VIP客户