算法练习5

算法练习5_第1张图片

今天这道题目主要是通过类来实现的,运用了运算符重载等相关知识。先写一个日期的类,然后根据每月的天数,将给出的n天进行减法,每减一次month++,当month==13时,month=1,year++,当n-当月的天数<0时,说明n为该月的天数,具体代码如下:

#include

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<

    }

    else

    {

          cout<<_year<<"-"<<_month<<"-"<<0<<_day<

    }

    }

    else {

    {

    }

    if(_month<10)

    {

          cout<<_year<<"-"<<0<<_month<<"-"<<_day<

    }

    else

    {

          cout<<_year<<"-"<<_month<<"-"<<_day<

    }

    }

  }

    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;

}

算法练习5_第2张图片

   

你可能感兴趣的:(算法,算法)