1965 - ACM组练习题1
时间限制 : 1 秒
内存限制 : 32 MB
输入一个日期,格式为XXXX-XX-XX,对应输出该日期的下一天,结尾换行。
题目输入
年月日之间用“-”隔开,如2013-10-26.
题目输出
输出该日期的下一天,格式为XXXX-XX-XX,如1994-08-22.
输入/输出样例
输入格式
2013-01-26
输出格式
2013-01-27
C语言解答
#include<stdio.h> int main() { int year,month,day; scanf("%04d-%02d-%02d",&year,&month,&day); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: { if(day==31) month++,day=1; else day++; } break; case 4: case 6: case 9: { if(day==30) month++,day=1; else day++; } break; case 12: { if(day==31) month=1,year++,day=1; else day++; } case 2: if(year%400==0||(year%100!=0&&year%4==0)) { if(day==29) month=3,day=1; else day++; } else { if(day==28) month=3,day=1; else day++; } break; } printf("%04d-%02d-%02d\n",year,month,day); return 0; }
C++解答
#include<stdio.h> int main() { int y,m,d; scanf("%d-%d-%d",&y,&m,&d); if(m!=2&&d<30) d++; else if(m==2) if(d==29) m++,d=1; else if(y%400==0||(y%100!=0&&y%4==0)) d++; else if(d==28) m++,d=1; else if(d<28) d++; while(d==31&&m==12) y++,m=1,d=1; while(d==31&&m!=12) m++,d=1; while(d==30) switch(m) { case 1:case 3:case 5:case 7:case 8:case 10:case 12:d++;break; case 4:case 6:case 9:case 11:d=1;m++;break; } printf("%04d-%02d-%02d\n",y,m,d); return 0; }