如何防止程序在C ++中同时运行IF和ELSE语句?

时间:2018-08-11 01:16:02

标签: c++ if-statement range

#include <iostream>
#include <string>

int main()
{
    int hun;
    std::cout << "Please pick a number between 1 and 100 \n";
    std::cin >> hun;
    if (hun > 50)
    {
        std::cout << "Your number is greater than 50. ";
    }
    if (hun < 50)
    {
        std::cout << "Your number is less than 50. ";
    }
    if (hun > 100) 
    {
        std::cout << "Pick a number LESS than 100. ";
    }
    else { std::cout << "Your number is equal to 50. "; }

    return 0;
}

如果我运行时没有以下内容:

std::cout << "Pick a number LESS than 100. ";

然后该程序将按预期运行。但是,如果我包含它,它将不起作用。例如,如果我输入“ 13”,则会同时收到消息“您的电话号码小于50,而您的电话号码等于50”?我不明白,如果我的IF语句已经被满足,为什么它仍在执行else语句。仅当我删除该第三IF语句时,这才不是问题。

我不知道为什么只是那条线弄乱了。我似乎一切都写得正确,而且我也没有忘记花括号。那么为什么会这样呢?

我确定这是一个简单的错误。这是我第一周的编码,我自己在没有任何外部帮助的情况下进行编码,因此我没有任何人可以解决这样的愚蠢问题。

当我在这里时,如何使程序说出“您输入了无效的响应。”,当用户输入单词或字母时?我考虑过要做类似的事情:

int word;
word = 1-100;
if (hun = word) or (hun != int?)

(但这只会从1中减去100,给我-99而不是范围,我什至不知道从哪里开始)

2 个答案:

答案 0 :(得分:4)

您需要实现if-else if- else条语句:

if (hun > 100) 
{
    std::cout << "Pick a number LESS than 100. ";
}
else if (hun > 50)
{
    std::cout << "Your number is greater than 50. ";
}
else if (hun < 50)
{
    std::cout << "Your number is less than 50. ";
}
else
{
    std::cout << "Your number is equal to 50. ";
}

原始代码不起作用的原因是else仅链接到最后一个if。因此,如果一个数字满足了较早的if语句之一而不是最后一个if,它将同时满足它的if和最后一个{{1 }}不满意。

此外,您必须对其重新排序,以便首先处理更极端的情况。否则,如果else大于一百,但您的条件为if,那么它将转到该hun,然后跳过其余的内容。

答案 1 :(得分:0)

尝试

   if (hun >= 0 && hun < 50){
        std::cout << "Your number is less than 50. ";
    }
    else if (hun == 50){
        std::cout << "Your number is equal to 50. ";
    }
    if (hun > 50 && hun <= 100) {
        std::cout << "Your number is less than 50. ";
    }
    else {
        std::cout << "you ve entered invalid number " << hun << " . supported range is [0 - 100]";
    }