获得月份天数
题目:
描述
KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
示例1
输入:
2008 2
输出:
29
思路
首先除2月份之外 月份天数均为固定 大月31 小月30
2月份 则需要判断是否为闰年 闰年判断方法 可以整除4但是不能整除100 或者 可以整除400
利用switch结构
case 大月 就都是 days = 31
case 小月 就都是 days = 30
case 2 判断是否为闰年赋上对应的天数
一个类别的case 直到最后一个case再break'
另一种思路: 直接定义一个数组 硬编码月份天数 利用哈希的思想 month对应下标的天数
如果是闰年 并且 月份为2 那么就再加个1
代码
#include <stdio.h>
int main() {
int year = 0;
int month = 0;
while (scanf("%d %d", &year, &month)!=EOF) {
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
days = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 29 : 28;
break;
}
printf("%d\n", days);
}
return 0;
}
注意: scanf 如果正确接受 会返回接受的个数 如果出现异常 或者已经到文件末尾 则返回EOF