今天这道题目主要是通过类来实现的,运用了运算符重载等相关知识。先写一个日期的类,然后根据每月的天数,将给出的n天进行减法,每减一次month++,当month==13时,month=1,year++,当n-当月的天数<0时,说明n为该月的天数,具体代码如下:
#include <iostream>
using namespace std;
class date
{
public:
date(int year,int month=1,int day=0)
{
_year=year;
_month=month;
_day=day;
}
date zhuanhuan(int day)
{
int arr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//判断闰年
while(day-arr[_month]>0)
{
if(_month==2&&((_year%4==0&&_year%100!=0)||_year%400==0))
{
arr[_month]+=1;
if(day-arr[_month]>0)
{
day=day-arr[_month];
_month++;
}
}
else
{
day=day-arr[_month];
_month++;
}
}
_day=day;
return *this;
}
void Print()
{
if(_day<10)
{
if(_month<10)
{
cout<<_year<<"-"<<0<<_month<<"-"<<0<<_day<<endl;
}
else
{
cout<<_year<<"-"<<_month<<"-"<<0<<_day<<endl;
}
}
else {
{
}
if(_month<10)
{
cout<<_year<<"-"<<0<<_month<<"-"<<_day<<endl;
}
else
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
}
}
private:
int _year;
int _month;
int _day;
};
int main()
{
int year;
int day;
cin>>year;
cin>>day;
date d1(year);
d1.zhuanhuan(day);
d1.Print();
return 0;
}