#include <stdio.h>
#include <stdlib.h>
static char daytab[2][3] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
// day_of_year函数:将某月某日的日期表示形式转换为某年中第几天的表示形式
int day_of_year(int year, int month, int day)
{
int i, leap;
leap = year%4 == 0 && year%100 != 0 || year%400 ==0;
if (month < 1 || month > 12)
return -1;
if (day < 1 || day > daytab[leap][month])
return -1;
for (i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}
// month_day函数:将某年中第几天的日期表示形式转换为某月某日的表示形式
void month_day(int year, int yearday, int *pmonth, int *pday)
{
int i, leap;
if (year < 1){
*pmonth = -1;
*pday = -1;
return;
}
leap = year%4 == 0 && year%100 != 0 || year%400 == 0;
for (i = 1; i < 12 && yearday > daytab[leap][i]; i++)
yearday -= daytab[leap][i];
if (i > 12 && yearday > daytab[leap][12]){
*pmonth = -1;
*pday = -1;
}else {
*pmonth = i;
*pday = yearday;
}
}
int main()
{
printf("%d",day_of_year(2017,3,2));
// printf("%d",month_day(2016,93,));
return 0;
}