【问题标题】:How do I prevent program from running BOTH an IF and ELSE statement with C++?如何防止程序使用 C++ 运行 IF 和 ELSE 语句?
【发布时间】:2018-08-11 01:16:01
【问题描述】:
#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 &lt;&lt; "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 而不是范围,我真的不知道从哪里开始)

【问题讨论】:

  • 如果编译器生成的代码同时执行 ifelse 语句 - 更改编译器。
  • @scopchanov 我在 powershell 中得到了这个结果,你建议我改用什么?
  • 这表达了我对任何体面的当代编译器都会做你在标题中描述的事情的怀疑。

标签: c++ if-statement range


【解决方案1】:

你需要实现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,它将同时满足ifelse,因为最后一个if 不满足。

此外,您必须对其重新排序,以便首先出现更极端的情况。否则,如果hun 超过一百,但您有条件hun &gt; 50,那么它将转到if-else,然后跳过其余部分。

【讨论】:

  • @GBlodgett 嗯,我什至不知道这些!那么,如果我有两个“if”语句,为什么它会起作用,但如果我添加第三个或更多,我需要使用“else if”?我的意思是,为什么这两个“if”语句仍然适用于“else”是我的问题。
  • 也许您可以在答案中更新重新订购的原因?
【解决方案2】:

试试这个

   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]";
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
相关资源
最近更新 更多