输入描述:多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
下面介绍2种方法实现:
//方法1:把月份天数存放到一个数组中
#include <stdio.h>
int is_leap_year(int year)
{
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
{
return 1;
}
else
return 0;
}
int main()
{
int m = 0;
int y = 0;
int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//第一个元素加0为了让下标和月份匹配
// 1 2 3 4 5 6 7 8 9 10 11 12
while (scanf("%d %d", &y, &m) == 2)
{
int day = arr[m];
if (is_leap_year(y) && (m == 2))
{
day++;
}
printf("%d\n",day);
}
return 0;
}
//方法2:利用switch语句
#include <stdio.h>
int is_leap_year(int year)
{
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
{
return 1;
}
else
return 0;
}
int main()
{
int m = 0;
int y = 0;
while (scanf("%d %d", &y, &m) == 2)
{
int day = 0;
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if (is_leap_year(y))
day = 29;
else
day = 28;
break;
}
printf("%d\n",day);
}
return 0;
}