题目链接
题目描述
根据气象学定义,季节划分如下:
- 春季 (spring): 3, 4, 5 月
- 夏季 (summer): 6, 7, 8 月
- 秋季 (autumn): 9, 10, 11 月
- 冬季 (winter): 12, 1, 2 月
给定一个 YYYYMM 格式的六位整数,请输出其对应的季节。
输入描述: 输入一个六位整数 YYYYMM,表示年份和月份。
输出描述: 输出对应的季节英文名称(全小写)。
解题思路
本题的核心是从输入的六位数中提取出月份信息,然后根据月份所在的区间进行判断。
- 提取月份:输入的格式是
YYYYMM
。年份信息YYYY
在这里是无用的,我们只关心月份MM
。可以通过对输入的整数模 100 (% 100
) 来直接提取出最后两位,即月份。 - 区间判断:得到月份后,使用
if-else if-else
结构或switch-case
结构来判断它属于哪个季节的区间。- 春季: 月份在 3 到 5 之间 (
month >= 3 && month <= 5
) - 夏季: 月份在 6 到 8 之间 (
month >= 6 && month <= 8
) - 秋季: 月份在 9 到 11 之间 (
month >= 9 && month <= 11
) - 冬季: 剩下的情况(12, 1, 2 月)。可以把这个作为
else
分支,因为它是所有其他情况的补集。
- 春季: 月份在 3 到 5 之间 (
代码
#include <iostream>
using namespace std;
int main() {
int yyyymm;
cin >> yyyymm;
// 通过模100运算提取月份
int month = yyyymm % 100;
if (month >= 3 && month <= 5) {
cout << "spring" << endl;
} else if (month >= 6 && month <= 8) {
cout << "summer" << endl;
} else if (month >= 9 && month <= 11) {
cout << "autumn" << endl;
} else {
cout << "winter" << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int yyyymm = sc.nextInt();
// 通过模100运算提取月份
int month = yyyymm % 100;
if (month >= 3 && month <= 5) {
System.out.println("spring");
} else if (month >= 6 && month <= 8) {
System.out.println("summer");
} else if (month >= 9 && month <= 11) {
System.out.println("autumn");
} else {
System.out.println("winter");
}
}
}
yyyymm = int(input())
# 通过模100运算提取月份
month = yyyymm % 100
if 3 <= month <= 5:
print("spring")
elif 6 <= month <= 8:
print("summer")
elif 9 <= month <= 11:
print("autumn")
else:
print("winter")
算法及复杂度
- 算法:算术运算与区间判断。
- 时间复杂度:
- 这是一个固定的计算和判断流程。
- 空间复杂度:
- 仅需常数空间存储变量。