#include<bits/stdc++.h> using namespace std; int main(){ int a,b,c; scanf("%d-%2d-%2d",&a,&b,&c); if(c-2>0){ printf("%d-%02d-%02d",a,b,c-2); } else{ printf("%d-%02d-%02d",a,b-1,c+30-2); } } 开始的时候根本没想那么多直接把每一个月都当作了三十天 后来想到了30天但是没想到是一月的话年份会减一 最后卡了好一段时间的是一直把要加下一个月天时直接加了本月的天数 后来把判断的月份上调了一个月 #include<bits/stdc++.h> using namespace std; int main(){ int a,b,c; scanf("%d-%2d-%2d",&a,&b,&c); if(b==3){ if(a%400==0||(a%4==0&&a%100!=0)){ if(c>2) printf("%d-%02d-%02d",a,b,c-2); else printf("%d-%02d-%02d",a,b-1,c-2+29);} else{ if(c>2) printf("%d-%02d-%02d",a,b,c-2); else printf("%d-%02d-%02d",a,b-1,c-2+28);} } else{ if(b==1){ if(c>2) printf("%d-%02d-%02d",a,b,c-2); else printf("%d-%02d-%02d",a-1,12,c-2+31);} else{ if(b==2||b==4||b==6||b==8||b==9||b==11) { if(c>2) printf("%d-%02d-%02d",a,b,c-2); else printf("%d-%02d-%02d",a,b-1,c-2+31);} else { if(c>2) printf("%d-%02d-%02d",a,b,c-2); else printf("%d-%02d-%02d",a,b-1,c-2+30);} }
}
return 0;
}