#include <iostream> using namespace std; class Date { private: int _year; int _month; int _day; public: //构造函数 Date(int year = 1900, int month = 1, int day = 1); //拷贝构造函数 Date(const Date& d); //每月天数 int GetMonthDay(); //若干天后 Date& operator+=(int day); //输出 void Print() const; }; Date::Date(int year, int month, int day) :_year(year) ,_month(month) ,_day(day) {} Date::Date(const Date& d) :_year(d._year) ,_month(d._month) ,_day(d._day) {} int Date::GetMonthDay() { if (_month == 1 || _month == 3 || _month == 5 || _month == 7 || _month == 8 ||_month == 10 || _month == 12) { return 31; } if (_month == 2) { if (_year % 4 == 0 && _year % 100 != 0) { return 29; } else if (_year % 400 == 0) { return 29; } return 28; } return 30; } Date& Date::operator+=(int day) { int get = GetMonthDay(); while (day > get) { day -= get; if (++_month > 12) { _month = 1; ++_year; } get = GetMonthDay(); if (_day > get) { day += (_day - get); _day = get; } } _day += day; if (_day > get) { if (++_month > 12) { _month = 1; ++_year; } _day -= get; } return *this; } void Date::Print() const{ if (_month >= 10 && _day >= 10) { cout << _year << "-" << _month << "-" << _day << endl; } else if (_month >= 10 && _day < 10) { cout << _year << "-" << _month << "-" << 0 << _day << endl; } else if (_month < 10 && _day < 10) { cout << _year << "-" << 0 << _month << "-" << 0 << _day << endl; } else if (_month < 10 && _day >= 10) { cout << _year << "-" << 0 << _month << "-" << _day << endl; } } int main() { int year, month, day; int add_day; int count; cin >> count; while (count--) { cin >> year >> month >> day >> add_day; Date d(year, month, day); d += add_day; d.Print(); } return 0; }