思路:从输入的月份的第0天开始,进行累加。
每一次加上该月的天数,总体的天数减去该月天数,
进位一个月。
直到最后剩下的天数小于一个月。
注意处理异常值
代码:
#include <iostream>
using namespace std;
//循环m次数,每一次都进行处理
int main()
{
int n;
while(cin >> n)
{
int monthDay[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31 };
for(int i = 0; i < n; ++i)
{
int year,month,day,num;
cin >> year >> month >> day >>num;
day += num;
while(day > monthDay[month])
{
if (month >= 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
{
monthDay[2] = 29;
}
else
{
monthDay[2] = 28;
}
day -= monthDay[month];
++month;
if(month == 13)
{
month = 1;
++year;
}
if(day == 0)
{
day = 1;
}
}
printf("%04d-%02d-%02d\n",year,month,day);
}
}
return 0;
}