关于蓝桥试题,高斯日记问题

先附上我的代码,再说我的思路。

#include
using namespace std;
int main()
{
int year=1777,month=4,day=30;
int n=8113,leap;
//cin>>n;
n=n-285;//经过285天后日期变为1778-1-1
year=1778;month=1;day=1;
int a=0,b=0;//用于记录闰年和平年个数
int mon[12]={31,29,31,30,31,30,31,31,30,31,30,31};
for(year=1778,month=1,day=1;n>365;)
{
if(year%400==0||(year%4==0&&year%100!=0))//闰年
{
n-=366;
year++;
leap=1;
a++;//有a个闰年
}
else
{
n-=365;
year++;
leap=0;
b++;//有b个平年
}
}
if(leap==1)
{
for(int i=0;n>=mon[i];i++)
{
n-=mon[i];
++month;
}
month++;
day+=n;
}
if(leap==0)
{
mon[1]=28;
for(int i=0;n>=mon[i];i++)
{
n-=mon[i];
++month;
}
month++;
day+=n;
}
cout<<year<<"-"<<month<<"-"<<day<<endl;
cout<<"闰年:"<<a<<endl<<"平年:"<<b<<endl;
cout<<"剩余天数:"<<n<<endl;
return 0;
}

我思路是先把1777-4-30变成1778-1-1,然后再分配8113-285天,得到日期即为所求。
请教大家,我问题出在哪了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问