// 三天打鱼两天晒网
#include <stdio.h>
struct date {
int year;
int month;
int day;
};
days(day)
struct date day;
{
static int day_tab[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 i,leap;
leap = day.year % 4 == 0 && day.year % 100 != 0 || day.year % 400 == 0;
// 判断year为闰年还是平年,leap = 0 为平年,非0为闰年
for (i = 1; i < day.month; i++) // 计算本年中自1月1日起的天数
day.day += day_tab[leap][i];
return (day.day);
}
int main()
{
struct date today;
struct date term;
int yearday,year,day;
printf ("Enter year/month/day: ");
scanf ("%d/%d/%d", &today.year, &today.month, &today.day); // 输入当前日期
term.month = 12;
term.day = 31;
for (yearday = 0, year = 1990; year < today.year; year++)
{
term.year = year;
yearday += days(term); // 计算从1990年至指定年的前一年共有多少天
}
yearday += days(today); // 加上指定年中到指定日期的天数
day = yearday % 5;
if (day > 0 && day < 4)
printf ("He was fishing at that day.\n");
else
printf ("He was sleeping at that day.\n");
return 0;
}
运行结果: