#include<stdio.h>
#include<math.h>
typedef struct
{
int year,month,day;
}Date;
int days(Date d)
{
int i,total=0;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /*设置数组months存放非闰年每月的天数*/
months[2]=monthday(d.year); /*调用monthday函数*/
for(i=1;i<d.month;i++) /*计算本年中自1月1日起的天数*/
total+=months[i];
total+=d.day;
return total;
};
int monthday(int year)
{
int mday;
if((year%4==0&&year%100!=0)||(year%400==0)) /*判断本年是平年还是闰年*/
mday=29;
else
mday=28;
return mday;
};
void display(Date t)
{
Date term;
int yearday,year,day;
term.month=12; /*设置变量的初始值:月*/
term.day=31; /*设置变量的初始值:日*/
for(yearday=0,year=2010;year<t.year;year++)
{
term.year=year;
yearday+=days(term); /*计算从2010年至指定年的前一年共有多少天*/
}
yearday+=days(t); /*加上指定年中到指定日期的天数*/
day=yearday%5; /*求余数*/
if(day>0&&day<4)
{
printf("he was fishing at that day.\n"); /*打印结果*/
printf("\n");
}
else
{
printf("He was sleeping at that day.\n");
printf("\n");
}
}
int main()
{
Date today;
printf("Enter year/month/day:");
scanf("%d%d%d",&today.year,&today.month,&today.day); /*输入日期*/
if((today.month>0)&&(today.month<=12)&&(today.day>0)&&(today.day<=31)&&(today.month==1||today.month==3||today.month==5||today.month==7||today.month==8||today.month==10||today.month==12))
{
printf("Your input is correct!\n");
display(today);
}
else if((today.month>0)&&(today.month<=12)&&(today.month==2)&&((today.year%4==0&&today.year%100!=0)||(today.year%400==0))&&(today.day>0)&&(today.day<=29))
{
printf("Your input is correct!\n");
display(today);
}
else if((today.month>0)&&(today.month<=12)&&(today.month==2)&&((today.year%4!=0)||(today.year%400!=0))&&(today.day>0)&&(today.day<=28))
{
printf("Your input is correct!\n");
display(today);
}
else if((today.month>0)&&(today.month<=12)&&(today.day>0)&&(today.day<=30)&&(today.month==4||today.month==6||today.month==9||today.month==11))
{
printf("Your input is correct!\n");
display(today);
}
else
{
printf("your input is error!\n");
printf("please enter the correct format!\n");
}
}