因为看到很多博客发的关于这个题目的代码都是错的,所以自己改进了一下;如有错误,望批评指正,谢谢!
中国有句俗语叫“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”,即打鱼三天,然后再晒网两天。问这个人在以后的某一天中是在打鱼还是在晒网
#include<stdio.h>
int count_Days(int y,int m,int d);
int main()
{
int s,year,month,day;
printf("请输入日期(年月日之间用 \"-\"分隔):");
scanf("%4d-%2d-%2d",&year,&month,&day);
if(year<1990)
{
printf("输入日期错误\n");
}
else if(month>12||month<0)
{
printf("输入日期错误\n");
}
else if(day>31||day<0)
{
printf("输入日期错误\n");
}
else if(month==2)
{
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day>29)
printf("输入日期错误\n");
}
else if(day>28)
printf("输入日期错误\n");
}
else{
s=count_Days(year,month,day);
switch(s)
{
case 0:printf("今天晒网\n");break;
case 1:printf( "今天打鱼\n");break;
default:break;
}
return 0;
}
}
int count_Days(int y,int m,int d)
{
int d1=0,d2=0,d3=0,year=365,sum=0,i,n,r;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if((y%4==0&&y%100!=0)||y%400==0)
{
a[2]=29;
}
for(r=1990,n=0;r<y;r++)//判断有多少个闰年
{
if((r%4==0&&r%100!=0)||r%400==0)
n++;
}
d1=(y-1990)*year+n;
for(i=0;i<m;i++)
{
d2+=a[i];
}
d3=d;
sum=d1+d2+d3;
if(sum%5<=3&&sum%5>0)
return 1;
else
return 0;
}