牛客小题 日期的相关运算

大家根据 题目编号搜搜 就不给链接了 这两道题基本一样 但是可以练习类

KY258 日期累加

描述

设计一个程序能计算一个日期加上若干天后是什么日期。

输入描述:

输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。

输出描述:

输出m行,每行按yyyy-mm-dd的个数输出。

示例1

输入:

1
2008 2 3 100

复制输出:

2008-05-13

复制

相似企业真题

#include 
#include 
using namespace std;
#include
class Date{
public:
    Date(int year,int month,int day)
    :_year(year)
    ,_month(month)
    ,_day(day)
    {

    }
    static int GetDay(int year,int month)
    {
        static vector day={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int day1=0;
        if(month==2&&(year%400==0||(year%4==0&&year%100!=0)))
        {
            return day[2]+1;
        }
        return day[month];
    }
    Date operator+(int day)
    {
        _day+=day;
        int day1=GetDay(_year,_month);
        while(_day>day1)
        {
            _day-=day1;
            _month++;
            if(_month==13)
            {
                _month=1;
                _year++;
            }
            day1=GetDay(_year,_month);
        }
        return *this;
    }
    void print()
    {
        cout<<_year<<'-';
        if(_month>0&&_month<=9)
        {
            cout<<0<<_month;
        }
        else {
        cout<<_month;
        }
        cout<<'-';
        if(_day>0&&_day<=9)
        {
            cout<<0<<_day;
        }
        else {
        cout<<_day;
        }
        cout<>m;
    while(m--)
    {
        int year=0,month=0,day=0,day1=0;
        cin>>year>>month>>day>>day1;
        Date date(year,month,day);
        date=date+day1;
        date.print();
    }
}

 

KY222 打印日期

  • 题目
  • 题解(60)
  • 讨论(227)
  • 排行

描述

给出年分m和一年中的第n天,算出第n天是几月几号。

输入描述:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出描述:

可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

示例1

输入:

2000 3
2000 31
2000 40
2000 60
2000 61
2001 60

复制输出:

2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

 

#include 
using namespace std;
#include
class Date{
public:
    Date(int year,int month=1,int day=1)
    :_year(year)
    ,_month(month)
    ,_day(day)
    {

    }
    static int GetDay(int year,int month)
    {
        static vector day={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int day1=0;
        if(month==2&&(year%400==0||(year%4==0&&year%100!=0)))
        {
            return day[2]+1;
        }
        return day[month];
    }
    Date operator+(int day)
    {
        _day+=day;
        int day1=GetDay(_year,_month);
        while(_day>day1)
        {
            _day-=day1;
            _month++;
            if(_month==13)
            {
                _month=1;
                _year++;
            }
            day1=GetDay(_year,_month);
        }
        return *this;
    }
    void print()
    {
        cout<<_year<<'-';
        if(_month>0&&_month<=9)
        {
            cout<<0<<_month;
        }
        else {
        cout<<_month;
        }
        cout<<'-';
        if(_day>0&&_day<=9)
        {
            cout<<0<<_day;
        }
        else {
        cout<<_day;
        }
        cout<

你可能感兴趣的:(c++练习,c++,开发语言)