#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而不是范围,我什至不知道从哪里开始)
答案 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]";
}