这个代码是怎么回事,有错
```c++
#include<iostream>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d;
bool runpinnian(int y){
if(y%4==0&&y%100!=0||y%400==0){
return true;
}
return false;
}
int main(){
scanf("%d-%d-%d",&y,&m,&d);
d+=1;
if(y%4==0&&y%100!=0||y%400==0){
a[3]=29;
}
else{
a[3]=28;
}
if(a[2]==31||a[4]==31||a[5]==30||a[6]==31||a[7]==30||a[8]==31||a[9]==31||a[10]==30||a[11]==31||a[12]==30||a[13]==31){
m+=1;
d=1;
}
if(y%4==0&&y%100!=0||y%400==0&&m==2&&d==29){
d=1;
m+=1;
}
else if(y%4!=0&&y%100!=0||y%400!=0&&m==2&&d==28){
d=1;
m+=1;
}
cout<<y<<"-"<<m<<"-"<<d;
return 0;
}
```