题目:7-5 后天日期

(题目作者孙骏 单位武汉理工大学 WUT)

给定一个日期,格式为yyyy-mm-dd(年份-月份-日期),计算并输出后天的日期,格式为yyyy.mm.dd(4位年份.2位月份.2位日期)。例如:输入2001-12-31,输出为:2002.01.02。

输入格式——输入以”-“分隔的年月日。

输出格式——输出计算后的后天的日期,以”.”分隔。行末无多余字符。

输入样例 1:

2001-12-31

输出样例 1:

2002.01.02

输入样例 2:

2008-2-28

输出样例 2:

2008.03.01

分析:

看着简单,其实暗藏玄ji。

1)注意闰年平年,闰年2月29天,平年2月28天,闰年是可以被4整除而不能被100整除,或被400整除的

2)注意月份,1,3,5,7,8,10,12月31天;4,6,9,11月30天;

3)尤其关注12月份和每月末,前者必要时改变年份,后者必要时改变月份;

代码:

#includeint main(){int y,m,d,y1,m1,d1;scanf("%d-%02d-%02d",&y,&m,&d);y1=y;m1=m;d1=d;if((y%4==0&&y%100!=0)||y%400==0){if(m==1||m==3||m==5||m==7||m==8||m==10){if(d==31){d1=2;m1=m+1;}if(d==30){d1=1;m1=m+1;}if(d>=1&&d=1&&d=1&&d=1&&d=1&&d=1&&d=1&&d=1&&d<=29){d1=d+2;}}}printf("%d.%02d.%02d",y1,m1,d1);return 0;}

注:

此处第一级if指的是年;

第二级if指的是各个月份,因为12月与2月太特殊,单独列出;

第三级if则是指天了;