You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++嵌套if语句语法正确性校验及非1值无输出问题求助

问题分析
  • 外层逻辑嵌套错误
    你现在把所有判断「条件不成立(变量值为2)」的分支,全部写在了if(所有变量都为1)的代码块内部。只有5个变量全部取值为1时才会进入这个外层代码块,内部的haveMoney == 2这类判断永远不可能触发,这就是所有变量不等于1时没有任何输出的核心原因。
  • 分支嵌套逻辑错误
    当前所有判断条件不满足的if是层层嵌套的关系,就算把这些分支移到外层,也只有前一个条件不满足时才会判断下一个,无法独立输出所有不满足的条件提示。
  • 语法层面:当前代码的语法没有报错问题,完全是业务逻辑写反了导致没有输出,和Xcode/VS的环境差异无关。
修正后参考代码
#include <iostream>
using namespace std;

int main() {
    
    int haveMoney, haveTime, amHungry, restaurantOpen, haveTransportation;
    
    cout << "Yes = 1,  2 = No" << endl << endl;
    
    cout << "Do I have money?" << endl;
    cin >> haveMoney;
    cout << "Do I have time?" << endl;
    cin >> haveTime;
    cout << "Am I hungry?" << endl;
    cin >> amHungry;
    cout << "Are they open?" << endl;
    cin >> restaurantOpen;
    cout << "Do I have transportation?"<< endl;
    cin >> haveTransportation;
    
    // 先判断所有条件都满足的情况
    if ((haveMoney == 1) && (haveTime == 1) && (amHungry == 1) && (restaurantOpen == 1) && (haveTransportation == 1)){
        cout << "Enjoy your McDonalds!" << endl << endl;
    } else {
        // 独立判断每个不满足的条件,分别输出提示
        if (haveMoney == 2){
            cout << "You're broke, so you can't have McDonalds" << endl ;
        }
        if (haveTime == 2){
            cout << "You don't have enough time to go to McDonalds!" << endl ;
        }
        if (amHungry == 2){
            cout << "Why are you even thinking about McDonalds, you're not hungry!" << endl ;
        }
        if (restaurantOpen == 2){
            cout << "McDonalds is closed, tough luck." << endl ;
        }
        if (haveTransportation == 2){
            cout << "You have no transportation to get to McDonalds." << endl ;
        }
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者Samuel Culper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:45:04