/*编写相应程序得出某人从1990年1月1日起开始“三天打鱼,两天晒网”,在以后的某一天(输入1个天数)中是在“打鱼”,还是在“晒网”,要求用结构形式日期(年,月,日)。*/
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int main(void)
{
int days(struct date day);
struct date today,term;
int yearday,year,day;
printf("请依次输入三个日期:年 月 日\n");
scanf("%d%d%d",&today.year,&today.month,&today.day);
term.month=12; //结构变量term.month初始值为12
term.day=31; //结构变量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("打鱼\n");
}
else
{
printf("晒网\n");
}
return 0;
}
int days(struct date day)
{
int i,lp;
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,}};
lp=day.year%4==0&&day.year0!=0||day.year%400==0; //判定year为闰年还是非闰年
for(i=1;i<day.month;i++) //计算本年中自1月1日起的天数
{
day.day+=day_tab[lp][i];
}
return day.day;
}