题目描述
ZCQ老师的生日是Y年M月D日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。
输入
只有一行,分别读入Y,M,D(分别代表年、月、日),日期绝对合法。
(1900<=Y<=2008,1<=M<=12,1<=D<=31)
输出
只有一行,即ZCQ老师生日第一万天以后的日期,格式为“Y-M-D”。(注意年月日之间用横线,即英文状态下的减号连接)
样例输入
1979 4 16
样例输出
2006-9-1
实现代码:
#include<iostream>//头文件
using namespace std;
int main()
{
int y,m,d,i;//分别代表年,月,日,循环变量
cin>>y>>m>>d;//输入年月日
for(i=1;i<=10000;i++)//循环10000
{
d++;//加一天
switch(m)//判断月(日的天数是否超过正常天数)
{
case 1:case 3:case 5:case 7:case 8:case 10://如果是1,3,5,7,8,10月
{
if(d>31)m++,d=1;//如果天数大于31月+1,日归一
break;//跳出
}
case 4:case 6:case 9:case 11://如果是4,6,9,11月
{
if(d>30)m++,d=1;//如果天数大于30月+1,日归一
break;//跳出
}
case 12://如果是12月
{
if(d>31)y++,m=1,d=1;//如果天数大于31年+1月归一,日归一
break;//跳出
}
case 2://如果是2月
{
if((y%4==0&&y%100!=0)||(y%400==0))//如果是闰年
{
if(d>29)m++,d=1;//如果天数大于29月+1,日归一
}
else if(d>28)m++,d=1;//如果天数大于28月+1,日归一
break;//跳出
}
}
}
cout<<y<<'-'<<m<<'-'<<d; //输出
return 0;
}
运行结果: