以下是我目前编码的内容:
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Enter a month(as a number): ";
cin >> num;
if (num < 3 || num > 11)
{
cout << "Happy Winter\n";
}
else if (num > 7 || num < 9)
{
cout << "Happy Summer\n";
}
else if (num > 3 || num < 7)
{
cout << "Happy Spring\n";
}
else
{
cout << "Happy Fall\n";
}
return 0;
}
我的程序不打印它应该如何。我的progrma应该打印: “快乐的冬天”如果严格在3或严格大于11之前, “快乐的春天”,如果它是3或更高,但严格在7之前,和 “快乐的夏天”,如果它是7或更高,但严格在9之前,和 否则就是“快乐的堕落”。
但出于某种原因,无论我输入什么号码,它都只会打印“Happy Summer”。唯一可行的行是我编码的第一个if语句。我不确定我做错了什么,但我认为这与我在else if语句中的操作有关。
答案 0 :(得分:4)
再看一下,如果数字小于9或大于7,则为真:
(num > 7 || num < 9)
这都是数字。
您应该使用和(&&
),而(num > 3 || num < 7)
也是如此。
另请注意,您的if
语句错过了3,所以它被归类为Fall。这很容易被忽略,因为你只是严格使用小于和大于,而不是小于/大于或等于。
也许看看这个:
if (num >= 3 && num <= 5) {
cout << "Happy Spring\n";
} else if (num >= 6 && num <= 8) {
cout << "Happy Summer\n";
} else if (num >= 9 && num <= 11) {
cout << "Happy Fall\n";
} else {
cout << "Happy Winter\n";
}
这特别关注3-5个月,然后是6-8个,然后是9-11个,然后是其余部分。
您还应该考虑阅读Why is "using namespace std" considered bad practice?