输入年月日,返回日期是这一年的第几天
//源程序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int Is_leap(int year)
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int Get_YM_Day(int year, int month)
{
int day[13] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
if (year < 1)
return -1;
if (month < 1 || month>12)
return -2;
if (month == 2 && Is_leap(year))
{
month = 0;
}
return day[month];
}
int Get_YMD_Count(int year, int month, int day)
{
int sum = 0;
if (year < 1)
return -1;
if (month < 1 || month>12)
return -2;
if (day<1 || day > Get_YM_Day(year,month))
return -3;
for (int i = 1; i < month; ++i)
{
sum = sum+ Get_YM_Day(year,i);
}
return sum + day;
}
int main()
{
int year, month, day;
int sum;
do {
scanf("%d %d %d", &year, &month, &day);
sum = Get_YMD_Count(year, month, day);
switch (sum)
{
case -1: printf("年份错误\n");
case -2:printf("月份错误\n");
case -3:printf("日期错误\n");
default:
printf("%d year %d month %d day = %d\n", year, month, day, sum);
}
} while (day > 1);
return 0;
}