C++程序设计与案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3.4 嵌套的if语句

在简单if语句和if-else语句形式中,语句1或语句2可以是任意一条语句或者一组复合语句。若它们也是if语句,就构成if语句的嵌套。

if语句嵌套的格式是:

          if(表达式1)
          if(表达式2) 语句1;
          else       语句2;
          else
          if(表达式3)  语句3;
          else  语句4;

功能:先计算表达式1,若表达式1为真,继续判断表达式2,如果表达式2成立,则执行语句1;如果表达式2不成立,再执行语句2部分;若表达式1为假,则继续判断表达式3,如果表达式3成立,则执行语句3,而如果表达式3不成立,则执行语句4部分。if语句嵌套流程图如图3.5所示。

图3.5 if语句嵌套流程图

注意:

(1)if 后面的表达式,必须用“(”和“)”括起来,并且除了常见的关系表达式或逻辑表达式外,也可以是其他类型的数据,如整型、实型、字符型等。

(2)if 语句的嵌套形式,可以实现多个条件的选择。但嵌套的层数不宜太多,因为层数越多,程序的可读性就越差。所以在实际编程时,应适当控制嵌套的层数在2~3层。

(3)语句1、语句2可以是一个简单的语句,也可以是复合语句,同时要注意的是不管是简单的语句还是复合语句,每个语句后面的分号必不可少。

(4)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用,如果有多个else子句,else子句总是与它前面最近的同一复合语句内的不带else子句的if结合。

【例3.12】 根据x的值,分段输出对应的y值。

运行程序,输出结果为:

【例3.13】为企业计算获得的利润和员工奖金。

          #include <iostream>
          using namespace std;
          int main ()
          {long i;                                //i为利润
            float  bonus,bon1,bon2,bon4,bon6,bon10;
            bon1=100000*0.1;            //利润为10万元时的奖金
            bon2=bon1+100000*0.075;     //利润为20万元时的奖金
            bon4=bon2+100000*0.05;      //利润为40万元时的奖金

            bon6=bon4+100000*0.03;               //利润为60万元时的奖金
            bon10=bon6+400000*0.015;             //利润为100万元时的奖金
            cout<<"enter i:";
            cin>>i;
            if (i<=100000)
              bonus=i*0.1;                       //利润在10万元以内按10%提成奖金
            else if (i<=200000)
              bonus=bon1+(i-100000)*0.075;       //利润在10万元至20万时的奖金
            else if (i<=400000)
              bonus=bon2+(i-200000)*0.05;        //利润在20万元至40万时的奖金
            else if (i<=600000)
              bonus=bon4+(i-400000)*0.03;        //利润在40万元至60万时的奖金
            else if (i<=1000000)
              bonus=bon6+(i-600000)*0.015;       //利润在60万元至100万时的奖金
            else
              bonus=bon10+(i-1000000)*0.01;      //利润在100万元以上时的奖金
            cout<<"bonus="<<bonus<<endl;
            return 0;
          }

运行程序,输出结果为: