#include<iostream>
using namespace std;
int main()
{
int year,mouth,day,total;
int b,c,d,i;
int a=0;
{ cout<<"Please Enter the Date"<<endl;
cout<<"Please Enter Year"<<endl;
cin>>year;
cout<<"Please Enter Mouth"<<endl;
cin>>mouth;
cout<<"Please Enter Day"<<endl;
cin>>day;
}//输入日期
{ if(year>=1990)
a++;
}//判断year合法性,如合法a=1
{ if(mouth>0&&mouth<13)
a++;
}//判断Mouth合法性 ,合法a=2
{ if(day<32&&day>0)
if((year%4==0&&year%100!=0)||year%400==0)//闰年下day合法性判断
{ if(mouth==2)
{ if(day<=29)
{
a++;
cout<<"ts1"<<a<<endl;
}//如果闰年时为2月,天数如果小于等于29,正确则a++
}
if(mouth==4,6,9,11)
{
if(day<=30)
{
a++;
cout<<"ts2"<<a<<endl;
}
}
if(mouth==1,3,5,7,8,10,12)
{
if(day<=31)
{a++;
cout<<"ts3"<<a<<endl;
}
}
}
else //非闰年下day合法性判断
{ if(mouth==2)
{
if(day<=28)
a++;
cout<<"ts4"<<a<<endl;
}
if(mouth==1,3,5,7,8,10,12)
{
if(day<=31)
a++;cout<<"ts5"<<a<<endl;
}
if(mouth==4,6,9,11)
{
if(day<=30)
a++;cout<<"ts6"<<a<<endl;
}
}
}
//合法a=3
{ for(i=1990; i<year; i++)
if((i%4==0&&i%100!=0)||i%400==0)
b++;
else c++;
}//循环 闰年b+1 其他c+1
{ if((year%4==0&&year%100!=0)||year%400==0)
switch(mouth-1)//当年如果闰年下除当月外天数计算
{
case 0:
d=0;
break;
case 1:
d=31;
break;
case 2:
d=60;
break;
case 3:
d=91;
break;
case 4:
d=121;
break;
case 5:
d=152;
break;
case 6:
d=182;
break;
case 7:
d=213;
break;
case 8:
d=244;
break;
case 9:
d=274;
break;
case 10:
d=305;
break;
case 11:
d=335;
break;
}
else
switch(mouth-1)//当年如果非闰年除当月外天数计算
{
case 0:
d=0;
break;
case 1:
d=31;
break;
case 2:
d=59;
break;
case 3:
d=90;
break;
case 4:
d=120;
break;
case 5:
d=151;
break;
case 6:
d=181;
break;
case 7:
d=212;
break;
case 8:
d=243;
break;
case 9:
d=273;
break;
case 10:
d=304;
break;
case 11:
d=334;
break;
}
};
{ total=b*366+c*365+d+day;
}//计算总日期
if(a!=3)
cout<<"Error"<<endl;//判断日期合法性
else
{
int x = total % 5;
if (x >= 1 && x <= 3) {
cout<<"今日他在打鱼"<<endl;
}
else {
cout<<"今日他在晒网"<<endl;
}//判断打渔
}
return 0;
}
我设置了如果正确就a++
r如果年月日全部正确则为3
现在是4月31日仍然执行了a++
mouth=4时却跳到if(mouth==1,3,5,7,8,10,12)执行
题目是从1990年1月1日开始三天打鱼两天晒网