题解 | #打印日期#
打印日期
https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b
#include <ctime>
#include <iostream>
using namespace std;
class ti
{
private:
int _year;
int _mouth;
int _day;
int _add;
public:
ti(int year,int add)
{
_year=year;
_add=add;
_mouth=1;
_day=0;
}
void caculate()
{
int arr[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
while(_add!=0)
{
if(_mouth==2&&((_year%4==0&&_year%100!=0)||(_year%400==0)))
{
if(_add+_day>29)
{
_add-=(30-_day);
_day=1;
++_mouth;
if(_mouth==13)
{
_mouth=1;
++_year;
}
}
else
{
_day+=_add;
_add=0;
}
}
else
{
if(_add+_day>arr[_mouth])
{
_add-=arr[_mouth]+1-_day;
_day=1;
++_mouth;
if(_mouth==13)
{
_mouth=1;
++_year;
}
}
else
{
_day+=_add;
_add=0;
}
}
}
}
void print()
{
if(_mouth>9)
{
if(_day>9)cout<<_year<<"-"<<_mouth<<"-"<<_day<<endl;
else cout<<_year<<"-"<<_mouth<<"-0"<<_day<<endl;
}
else
{
if(_day>9)cout<<_year<<"-0"<<_mouth<<"-"<<_day<<endl;
else cout<<_year<<"-0"<<_mouth<<"-0"<<_day<<endl;
}
}
};
int main() {
int year;
int add;
while(scanf("%d%d",&year,&add)!=EOF)
{
ti lsp(year,add);
lsp.caculate();
lsp.print();
}
}

