题目: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则是指天了;