题解 | #打印日期#

打印日期

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();
    }
    
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务