题目:
CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)
输入:
输入有多行,格式为YY MM DD 其中1949<=YY<=2006,日期绝对合法。
输出:
输出有多行。即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。
eg:
输入:
1979 4 16
输出:
2006-9-1
思路:这个题是关于天数的计算,但闰年平年天数不同,所以要先判断是否为闰年,再根据天数进行加法运算,一次递进,增加年与月,最后得出答案
#include<bits/stdc++.h>
using namespace std;
//判断是否为闰年
int check(int n)
{
if((n % 4 == 0 && n % 100 != 0) || ( n % 400 == 0))
return 1;
return 0;
}
//进入主函数
int main()
{
//初始化每一个月 二月mon[1]先初始化为0
int mon[12] = {31 ,0 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31};
//y为年,m为月,d为天
int y ,m ,d;
while(cin >> y >> m >> d)
{
for(int i = 1 ; i <= 10000 ; i++)
{
d++;
//判断是否为闰年
if(check(y))
//闰年二月29天
mon[1] = 29;
else
//平年2月28天
mon[1] = 28;
if(d > mon[m-1])
{
d %= mon[m-1];
m++;
}
if( m > 12 )
{
y++;
m %= 12;
}
}
cout << y << '-' << m << '-' << d << endl;
}
return 0;
}