本题要求实现一个简单函数,能计算给定的年份和月份的天数。使得可以利用该函数,输出给定年份中每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
函数接口定义:
int MonthDays(int year, int month);
其中year
和month
是用户传入的参数,如果1≤ month
≤12,该函数必须返回year
年month
月的天数。
裁判测试程序样例:
#include <stdio.h>
int MonthDays(int year, int month);
int main()
{
int ndays, month, year;
scanf("%d", &year);
for(month = 1; month <= 12; month++){
ndays = MonthDays(year, month);
printf("%d ", ndays);
}
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
2000
输出样例1:
31 29 31 30 31 30 31 31 30 31 30 31
输入样例2:
2001
输出样例2:
31 28 31 30 31 30 31 31 30 31 30 31
思路:
用switch语句,相同月份的放在一起,来减少代码长度,2月再单独嵌套if语句讨论是否是闰年决定2月的天数。
代码实现如下:
int MonthDays(int year, int month)
{
int days;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;//将天数为31天的放在一起,用break跳出循环
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if(year%4==0&&year%100!=0||year%400==0)
{
days = 29;//闰年
}else{
days = 28;//平年
}
break;
}
return days;
}