0
已解决
#include<iostream>
#include<cstdio>
using namespace std;
int c_days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int year,month,day,days;
scanf("%04d%02d%02d%d",&year,&month,&day,&days);
if((year%4==0 && year%100!=0) || (year%400==0))
c_days[2]++;
day+=days;
while(day>c_days[month])
{
day-=c_days[month];
month++;
if((year%4==0 && year%100!=0) || (year%400==0))
c_days[2]++;
if(month>12)
{
year++;
month=1;
}
}
printf("%04d%02d%02d",year,month,day);
return 0;
}
1
已采纳
你的第9、10行和第16、17行的
if((year%4==0 && year%100!=0) || (year%400==0))
c_days[2]++;
每次碰到闰年都会把c_days[2]++;
c_days[2]的值只加不减是不对的
我们只需要在遇到闰年的时候吧c_days[2]的值临时+1就可以了,其他的时候应该恢复c_days[2]=28;
0
0
0