题目的主要信息:

  • 根据输入的月份,判断属于哪一个季节
  • 3 - 5 月为春季、6 - 8 月为夏季、9 - 11 月为秋季、12,1,2 月为冬季
  • 如果输入的月份不是 1 - 12,则输出“不合法”

具体做法:

我们优先判断输入的月份是否在1 - 12的范围内,如果不在直接判断不合法,否则就要判断属于哪个季节。

避免麻烦的if-else,我们还是使用switch,而且因为值都是连续的,我们可以用case的连续写法:

在case中,可以用x ... y 表示范围在[x,y]的值,两边都是闭区间

比如我们代码中就用 case 3 ... 5: 代替了 case 3: case 4: case 5:,最后的冬季不连续,我们用default代替,因为在已经判断了在1 - 12范围内的情况,除去以上三种就只剩冬季了。

alt

#include <iostream>
using namespace std;

int main() {
	
	int month;
	cin >> month;
    if(month < 1 || month > 12) //优先判断是否合法月份
        cout << "不合法" << endl;
    else{
        switch(month){ //根据月份判断
            case 3 ... 5: //连续的值
                cout << "春季" << endl;  break;
            case 6 ... 8:
                cout << "夏季" << endl;  break;
            case 9 ... 11:
                cout << "秋季" << endl;  break;
            default:
                cout << "冬季" << endl;
        }
    }
	return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1),直接判断,常数时间
  • 空间复杂度:O(1)O(1),无额外空间