// 编写一个函数,给出年、月、日,计算该日是本年的第几天。
#include <stdio.h>
int main()
{
int sum = 0;
int yyyy = 0;//年
int mm = 0;//月
int dd = 0;//日
scanf_s("%d%d%d", &yyyy, &mm, &dd);
sum = sum_days(yyyy, mm, dd);
printf("%d", sum);
return 0;
}
int leap_year(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//4年一润,百年不润,400年再润
{
return 1;//是闰年
}
else
return 0;//不是闰年
}
int month_days(int year, int month)//计算每月的天数,注意2月的不同
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
return 31;
}
if (month == 4 || month == 6 || month == 9 || month == 11)
{
return 30;
}
if (month == 2 && leap_year(year) == 1)
{
return 29;
}
if (month == 2 && leap_year(year) == 0)
{
return 28;
}
}
int sum_days(int year, int month, int day)
{
int i = 0;
int sum = 0;
for (i = 1; i < month; i++)
{
sum = sum + month_days(year, i);
}
sum = sum + day;
return sum;
}