1、任意给定某年某月某日,打印输出它是这一年的第几天;
2、已知某一年的第几天,计算出它是这一年的几月几日。
数据输入可根据提示进行输入。
样例展示:
#include <stdio.h>
#include <stdlib.h>
int leap;
static int daytab[2][13] = {{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}};
int JudgeYear(int year)//判断这一年是闰年还是平年
{
leap = ((year%4 == 0)&&(year%100 != 0))||(year%400 == 0);
return leap;
}
int DayofYear(int year,int month,int day)
{
leap = JudgeYear(year);
for(int i = 1;i < month;i++)
{
day = day + daytab[leap][i];
}
return day;
}
void MonthDay(int year,int yearday,int *pmonth,int *pday)
{
int j;
leap = JudgeYear(year);
for(j = 1;yearday > daytab[leap][j];j++)
{
yearday = yearday - daytab[leap][j];
}
*pmonth = j;
*pday = yearday;
}
void Menu(void)
{
printf(" 1: year/month/day ---> yearday\n 2: yearday ---> year/month/day\n 3: Exit\n");
printf(" Please enter your choice:");
}
int main()
{
int year,month,day,yearday,choice;
Menu();
scanf("%d",&choice);
switch(choice)
{
case 1: printf("Please enter year month day:");
scanf("%d %d %d",&year,&month,&day);
yearday = DayofYear(year,month,day);
printf("yearday = %d\n",yearday);
break;
case 2: printf("Please enter year yearday:");
scanf("%d %d",&year,&yearday);
MonthDay(year,yearday,&month,&day);
printf("month = %d,day = %d\n",month,day);
break;
case 3: printf("Program over!\n");
exit(0);
default: printf("Input error!");
}
return 0;
}