使用嵌套if语句

时间:2018-05-05 20:14:02

标签: c++

以下是我目前编码的内容:

#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语句中的操作有关。

1 个答案:

答案 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?