首先得计算出时间,判断是否为闰年,再用总年数除5,得到余数若为0,1,2则为打鱼,若为3,4则为晒网。
#include<stdio.h>
int Net(int year,int month,int day);
void main(){
int year,month,day;
FILE *fp1,*fp2;
fp1=fopen("input.txt","rb");
fp2=fopen("output.txt","wb");
fscanf(fp1,"%d %d %d",&year,&month,&day);
printf("从头文件input.txt当中读取的年月日为:%d-%d-%d\n",&year,&month,&day);
fprintf(fp2,"从头文件input.txt当中读取的年月日为:%d-%d-%d\n",&year,&month,&day);
printf("请输入一个日期:\n");
scanf("%d %d %d",&year,&month,&day);
Net(year,month,day);
}
int Net(int year,int month,int day)
{
int n=0; //代表闰年个数
int minus1; //代表月数之差
int L1; //2010年后到所在的天之间的天数
int C1,Q;
int sum;//代表某天之后,即从2010/01/01后的天数
int R;//R代表是求余数,余数为0,1,2代表打鱼,3,4代表晒网
/*判断是否为闰年,并计算其个数*/
int w;//计算闰年时使用的参数
FILE *fp1,*fp2;
if((year<1)||(month<1||month>12)||(day<1||day>31))
printf("输入错误,请输入正确日期:\n");//判断输入日期是否正确
else
{
for(w=1;w<=year;w++)
{
if(w%400==0||(w%4==0&&w%100!=0))
n++;
}
printf("n:%d\n",n);//检查统计闰年个数是否成功
L1=(year-2010)*365+n-487;//487代表2010前的闰年个数
/*计算月份差*/
minus1=month-1;
switch(minus1)
{
case 0:
C1=0;
break;
case 1:
C1=31;
break;
case 2:
C1=59;
break;
case 3:
C1=90;
break;
case 4:
C1=120;
break;
case 5:
C1=151;
break;
case 6:
C1=181;
break;
case 7:
C1=212;
break;
case 8:
C1=243;
break;
case 9:
C1=273;
break;
case 10:
C1=304;
break;
case 11:
C1=334;
break;
}
/*计算天数差*/
Q=day-1;
/*计算总天数后*/
sum=L1+C1+Q;
printf("year:%d\n",L1);//输出年份差天数
printf("month:%d\n",C1);//输出月份差天数
printf("day:%d\n",Q);//输出天数差天数
printf("sum:%d\n",sum);//输出总天数
R=sum%5;//求余,余数为0,1,2代表打鱼,3,4代表晒网
printf("%d\n",R);//检查统计求模是否成功
switch(R)
{
case 0:
printf("今天该打鱼\n");
fprintf(fp2,"\n今天该打鱼\n\n");
break;
case 1:
printf("今天该打鱼\n");
fprintf(fp2,"\n今天该打鱼\n\n");
break;
case 2:
printf("今天该打鱼\n");
fprintf(fp2,"\n今天该打鱼\n\n");
break;
case 3:
printf("今天该晒网\n");
fprintf(fp2,"\n今天该晒网\n\n");
break;
case 4:
printf("今天该晒网\n");
fprintf(fp2,"\n今天该晒网\n\n");
break;
}
}
return 0;
}