#include <stdio.h>
#include <stdlib.h>
#define MONTHS 12
int DayOfYear(int year,int month,int day);
void MonthDay(int year,int yearday,int *pmonth,int *pday);
bool IsLeapYear(int year);
int a[2][MONTHS]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
int main()
{
int choice;
printf("1.year/month/day-->days\n");
printf("2.year/day-->month/day\n");
printf("Please enter you choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
{
int year,month,day,days;
printf("Input year month day: ");
scanf("%d%d%d",&year,&month,&day);
days= DayOfYear(year,month,day);
printf("This day is the %d day in this year\n",days);
}break;
case 2:
{
int year,yearday,month,day;
printf("Input year yearday:");
scanf("%d%d",&year,&yearday);
MonthDay(year,yearday,&month,&day);
printf("the month and day is %d and %d",month,day);
}break;
case 3:
exit(0);break;
default:
printf("Invalid Operation\n");break;
}
return 0;
}
int DayOfYear(int year,int month,int day)
{
int i,m;
int sum=0;
int days;
if(IsLeapYear(year))//year
m=1;
else
m=0;
for(i=0;i<month-1;i++)//month
sum+=a[m][i];
days=sum+day;//day
return days;
}
void MonthDay(int year,int yearday,int *pmonth,int *pday)
{
int i,m;
*pmonth=0;
*pday=0;
if(IsLeapYear(year))
m=1;
else
m=0;
i=0;
do
{
yearday-=a[m][i];
i++;
}while(yearday>0);
*pmonth=i;
*pday=yearday+a[m][i-1];
}
bool IsLeapYear(int year)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
return true;
else
return false;
}