通过分析,我们发现年与年之间,天数唯一有可能不同的是2月。
所以我们只需要在用户输入的是2月时,去判断该年是否为闰年。
如果是,则天数+1。
如果不是,则按正常天数输出即可。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Is_leap_year(int year)
{
return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
}
int main()
{
int year = 0;
int month = 0;
int day = 0;
//为了让month可以直接当作下标,我们在days这个数组的最前面添加了一个0
int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
printf("请依次输入年月,其中用空格隔开:");
while (scanf("%d %d", &year, &month) == 2)
{
day = days[month];
//月份为2,且是闰年,天数加1
if (2 == month && Is_leap_year(year))
{
day++;
}
printf("%d\n", day);
}
return 0;
}