牛客KY257 日期累加
描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
示例1
输入:
1 2008 2 3 100
输出:
2008-05-13
#include <iostream>
using namespace std;
int Getmonthday(int year, int month)
{
int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int add = 0;
if (month == 2 && (year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
arr[2] = 29;
}
return arr[month];
}
class Date
{
public:
Date operator+=( int n)
{
_day += n;
while (_day > Getmonthday(_year, _month))
{
_day -= Getmonthday(_year, _month);
++_month;
if (_month == 13)
{
++_year;
_month = 1;
}
}
return *this;
}
Date(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
void Prinf()
{
printf("%04d-%02d-%02d\n", _year, _month, _day);
}
private:
int _year;
int _month;
int _day;
};
int main() {
int i;
cin >> i;
int year, month, day, n;
for (int j = 0; j < i; j++)
{
cin >> year >> month >> day >> n;
Date d(year, month, day);
d += n;
d.Prinf();
}
return 0;
}
结果: