上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; }
运行程序,输出结果为: