题解
获取月份对应的天数
1 条题解
-
0
解题思路
题目要求用
switch语句。按月份分:大月(1、3、5、7、8、10、12)31 天,小月(4、6、9、11)30 天,2 月要看是否闰年(闰年 29 天、平年 28 天)。月份不在 1~12 范围时,输出
error和0。参考代码
#include <iostream> using namespace std; int main() { int y, m; cin >> y >> m; if (m < 1 || m > 12) { // 月份无效 cout << "error" << endl; cout << 0 << endl; return 0; } int d; switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: d = 31; break; // 大月31天 case 4: case 6: case 9: case 11: d = 30; break; // 小月30天 case 2: // 2月看是否闰年 if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) d = 29; else d = 28; break; } cout << d << endl; return 0; }复杂度分析
switch 只匹配一次,时间复杂度 O(1),额外空间复杂度 O(1)。
- 1