C++ if语句的嵌套

如果if语句中的“内嵌语句”(即语句1或语句2)也是if语句,就构成了“嵌套if语句”。

嵌套的基本格式

嵌套if语句有2种形式:

  • 嵌套在else分支中,格式如下:
    if (表达式1) 语句1;
    else if (表达式2) 语句2;
        else if …
            else语句n;
  • 嵌套在if分支中,格式如下:
        if (表达式1){
            if (表达式2) 语句1;
            else 语句2 ;
        }
        else 语句3;

配对原则

C++规定:在嵌套if语句中,if和else按照“就近配对”的原则配对,即相距最近且还没有配对的一对if和else首先配对

试分析下面的2组语句有何区别?

//语句1:
if(n%3==0)
    if(n%5==0) cout<<n<<″是15的倍数″<<endl;
    else cout<<n<<″是3的倍数但不是5的倍数<<endl; //else与第二个if配对

//语句2:
if(n%3==0){
    if(n%5==0) cout<<n<<″是15的倍数″<<endl;
}
else cout<< n <<″不是3的倍数″; //else与第一个if配对

两个语句的差别虽然仅在于一对“{}”,但逻辑关系却完全不同。

关于if嵌套语句的几点说明:

  • if语句用于解决二分支的问题,嵌套if语句则可以解决多分支问题。
  • 2种嵌套形式各有特点,应用时注意区别,考虑一下是否可以互相替换。
  • 由上述2个语句可以看出:if中嵌套的形式较容易产生逻辑错误,而else中嵌套的形式配对关系则非常明确,因此从程序可读性角度出发,建议尽量使用在else分支中嵌套的形式

应用举例

【例2.6】用嵌套if语句完成改写【例2.5】, 求三个整数中的最大值。
#include <iostream>
using namespace std;
int main(){
    int a, b, c, max;
    cout<<"输入三个整数:";
    cin>>a>>b>>c;
    if(a>b&&a>c)  max=a;
    else if(b>a&&b>c)  max=b;
        else  max=c;
    cout<<"最大数为:max="<<max<<endl;
    return 0;
}

【例2.7】某商场优惠活动规定,某商品一次购买5件以上(包含5件)10件以下(不包含10件)打9折,一次购买10件以上(包含10件)打8折。设计程序根据单价和客户的购买量计算总价。
#include <iostream>
using namespace std;
int main(){
    float price,discount,amount;   //单价、折扣、总价
    int count;         //购买件数
    cout<<"输入单价:"<<endl;
    cin>>price;
    cout<<"输入购买件数:"<<endl;
    cin>>count;
    if(count<5)  discount=1;
    else if(count<10)  discount=0.9;
        else  discount=0.8;
    amount=price*count*discount;
    cout<<"单价:"<< price<<endl;
    cout<<"购买件数:"<<count<<"/t/t"<<"折扣:"<<discount<<endl;
    cout<<"总价:"<<amount<<endl;
    return 0;
}

【例2.8】求一元二次方程ax2+bx+c=0的根。系数a(a≠0)、b、c由键盘输入。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    float a,b,c;
    float delta,x1,x2;
    cout<<"输入三个系数a(a!=0), b, c:"<<endl;
    cin>>a>>b>>c;
    cout<<"a="<<a<<'/t'<<"b="<<b<<'/t'<<"c="<<c<<endl;
    delta=b*b-4*a*c;
    if(delta==0){   
        cout<<"方程有两个相同实根:";
        cout<<"x1=x2="<<-b/(2*a)<<endl;
    }
    else if(delta>0){
        delta=sqrt(delta);
        x1=(-b+delta)/(2*a);
        x2=(-b-delta)/(2*a);
        cout<<"方程有两个不同实根:";
        cout<<"x1="<<x1<<'/t'<<"x2="<<x2<<endl;
    }
   else cout<<"方程无实根!"<<endl;//delta<0
    return 0;
}

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的if-else语句是一种条件判断语句,用于根据条件的真假来执行不同的代码块。if-else语句的基本语法如下: ``` if (condition){ // 如果条件为真,执行这里的代码块 } else{ // 如果条件为假,执行这里的代码块 } ``` 其中,condition是一个表达式,如果它的值为真,则执行if后面的代码块;否则执行else后面的代码块。在if-else语句中,else是可选的,如果没有else,则当条件为假时不执行任何代码。 在C++中,if-else语句还可以嵌套使用,例如: ``` if (condition1){ // 如果条件1为真,执行这里的代码块 } else if (condition2){ // 如果条件1为假,条件2为真,执行这里的代码块 } else{ // 如果条件1和条件2都为假,执行这里的代码块 } ``` 在这个例子中,如果条件1为真,则执行第一个代码块;如果条件1为假,条件2为真,则执行第二个代码块;否则执行第三个代码块。 除了if-else语句,C++中还有另一种条件判断语句switch,它可以根据一个表达式的值来执行不同的代码块。switch语句的基本语法如下: ``` switch (expression){ case value1: // 如果expression的值等于value1,执行这里的代码块 break; case value2: // 如果expression的值等于value2,执行这里的代码块 break; // 其他case语句 default: // 如果expression的值不等于任何一个case语句中的值,执行这里的代码块 break; } ``` 在这个例子中,expression是一个表达式,它的值会被依次与每个case语句中的值进行比较,如果相等,则执行对应的代码块。如果expression的值不等于任何一个case语句中的值,则执行default后面的代码块。在每个case语句的代码块中,必须使用break语句来结束switch语句的执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值