题解 | 日期累加
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <fcntl.h>
#include <iomanip>
#include <iostream>
#include <cstdio>
using namespace std;
class Date
{
public:
Date(int year,int month,int day)
{
_year=year;
_month=month;
_day=day;
}
int GetMonthDay(int year, int month)
{
static int monthDayArray[13] = { -1, 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)))
{
return 29;
}
return monthDayArray[month];
}
Date operator+(int day);
int _year;
int _month;
int _day;
};
Date Date::operator+(int day)
{
Date tmp=*this;
tmp._day =tmp._day+ day;
while (tmp._day > GetMonthDay(tmp._day,tmp._month))
{
tmp._day -= GetMonthDay(tmp._year, tmp._month);
++tmp._month;
if (tmp._month == 13)
{
tmp._year++;
tmp._month = 1;
}
}
return tmp;
}
int main() {
int m=0;
cin>>m;
int total_width = 2;
for(int i=0;i<m;i++)
{
int year=0;
int month=0;
int day=0;
int sumday=0;
cin>>year>>month>>day>>sumday;
Date d1(year,month,day);
Date d2=d1+sumday;
printf("%04d-%02d-%02d\n",d2._year,d2._month,d2._day);
}
}
查看8道真题和解析