1. 任意给定某年某月某日,打印出它是这一年的第几天
2. 已知某一年的第几天,计算它是这一年的几月几日。
#include<stdio.h>
#include<stdlib.h>
int DayofYear(int year, int month, int day);
void Monthday(int year, int yearDay, int *pMonth, int *pDay);
void Menu(void);
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 main(void)
{
int year, month, day, yearDay, choice;
Menu();
scanf("%d", &choice);
switch(choice)
{
case 1:
printf("请输入年,月,日:");
scanf("%d,%d,%d", &year, &month, &day);
yearDay = DayofYear(year, month, day);
printf("这是%d年的第%d天!", year, yearDay);
break;
case 2:
printf("请输入年份及该年的第几天:");
scanf("%d,%d", &year, &yearDay);
Monthday(year, yearDay, &month, &day);
printf("这是%d年%d月%d日!", year, month, day);
break;
case 3:
exit(0);
default:
printf("输入错误!");
}
return 0;
}
int DayofYear(int year, int month, int day)
{
int i, leap;
leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);//判断leap = 1 || leap = 0
for(i = 1; i < month; i++)
{
day = day + dayTab[leap][i];
}
return day;
}
void Monthday(int year, int yearDay, int *pMonth, int *pDay)
{
int i,leap;
leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
for(i = 1; yearDay > dayTab[leap][i]; i++)
{
yearDay = yearDay - dayTab[leap][i];
}
*pMonth = i;
*pDay = yearDay;
}
//显示一个固定式的菜单
void Menu(void)
{
printf("1. 年,月,日 --> 是某年的多少天\n");
printf("2. 某年的多少天 --> 年,月,日\n");
printf("3. Exit\n");
printf("请输入你想用的功能:");
}