/*====================================================================== Tomorrow never knows? 总时间限制: 1000ms 内存限制: 65536kB 描述 甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。 读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600-01-01,也不晚于2999-12-30。 输入 输入仅一行,格式为yyyy-mm-dd的日期。 输出 输出也仅一行,格式为yyyy-mm-dd的日期 样例输入 2010-07-05 样例输出 2010-07-06 提示 闰年的标准: (1)普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年) 地球公转示意图 (2)世纪年能被400整除的是闰年。(如2000年是闰年,1100年不是闰年) 输入语句scanf("%d-%d-%d",&y,&m,&d)可以存储年,月,日.输出语句格式类似printf("%d-%02d-%02d\n",year,month,day). ========================================================================*/ #include<stdio.h> int isRunNian(int year); int main() { int y,m,d; int year,month,day; int monthCarrySave=0; int yearCarrySave=0; scanf("%d-%d-%d",&y,&m,&d); if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) { if(d==31) { day=1; monthCarrySave=1; } else day=d+1; } else { if(m==2) { if(d==28) { if(isRunNian(y)) day=d+1; else { day=1; monthCarrySave=1; } } else if(d==29) { day=1; monthCarrySave=1; } else { day=d+1; } } else { if(d==30) { day=1; monthCarrySave=1; } else { day=d+1; } } } month=m+monthCarrySave; if(month>12) { month=1; yearCarrySave=1; } year=y+yearCarrySave; printf("%d-%02d-%02d\n",year,month,day); return 0; } int isRunNian(int year) { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; }