中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打鱼”,还是在“晒网”。
解题过程:
1.计算从1990年1月1日开始至指定日期一共多少天;
2.由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3.根据余数判断他是在“打鱼”,还是在“晒网”。
若 余数为1、2、3,则他是在“打鱼”
否则 是在“晒网”
((年能被4除尽 且 不能被100除尽) 或 能被400除尽,则该年是闰年,否则不是闰年。 )
(闰年二月为29天,平年为28天。)
源码:
#include<iostream.h>
bool dayushaiwang(int year, int month, int day)
{
int Fyear=1990;
int Fmonth=1;
int Fday=1;
int x=0;
int y=0;
int z=0;
int i=0;
for(i=Fyear;i<year;i++)
{
if((i%4)==0)
{
x=x+366;
}
else
{
x=x+365;
}
}
for(i=Fmonth;i<month;i++)
{
switch(i)
{
case 1:
y=y+31;
break;
case 2:
if((year%4)==0)
{
y=y+29;
}
else
{
y=y+28;
}
break;
case 3:
y=y+31;
break;
case 4:
y=y+30;
break;
case 5:
y=y+31;
break;
case 6:
y=y+30;
break;
case 7:
y=y+31;
break;
case 8:
y=y+31;
break;
case 9:
y=y+30;
break;
case 10:
y=y+31;
break;
case 11:
y=y+30;
break;
case 12:
y=y+31;
break;
}
}
z=day-Fday;
int sum=0;
sum=x+y+z;
sum=sum%5;
if(sum>=0 && sum<3)
{
cout<<"dayu"<<endl;
return 0;
}
else
{
cout<<"shaiwang"<<endl;
return 1;
}
return 0;
}
void main()
{
int year=0;
int month=0;
int day=0;
cout<<"please input year:"<<endl;
cin>>year;
if(year<1990)
{
cout<<"the data is error ..."<<endl;
return;
}
cout<<"please input month:"<<endl;
cin>>month;
if(month<0 || month>13)
{
cout<<"the data is error ..."<<endl;
return;
}
cout<<"please input day:"<<endl;
cin>>day;
if(day<0 || day>31)
{
cout<<"the data is error ..."<<endl;
return;
}
bool result=0;
result= dayushaiwang(year,month,day);
if(result)
{
cout<<"shaiwang"<<endl;
}
else
{
cout<<"dayu"<<endl;
}
}
效果: