02_日期累加

   日期:2021-02-23     浏览:102    评论:0    
核心提示:题目描述设计一个程序能计算一个日期加上若干天后是什么日期。输入描述:输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。输出描述:输出m行,每行按yyyy-mm-dd的个数输出。题解1.定义一个静态数组存放12个月的日期,其中2月默认为28天。若是闰年则2月为29天。2.累加日期,若是大于当月所对应的天数,则向月进位;如果月增加到13,则另月为1,向年进位。3.注意题目要求的输入输出方式。#include<iostream>using names

题目描述

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

  • 输入描述:
    输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
  • 输出描述:
    输出m行,每行按yyyy-mm-dd的个数输出。

题解

1.定义一个静态数组存放12个月每月对应的天数,其中2月默认为28天。若是闰年则2月为29天。

2.累加日期,若是大于当月所对应的天数,则向月进位;如果月增加到13,则另月为1,向年进位。

3.注意题目要求的输入输出方式。

#include<iostream>
using namespace std;

class Date
{ 
private:
    int _year;
    int _month;
    int _day;
public:
    int _n;
    
    //获取当月日期
    int GetMonthDay(int year,int month){ 
        static int arr[13]={ 0,31,28,31,30,31,30,31,31,30,31,30,31};
        //如果是闰年:四年一闰,百年不闰;四百年又闰
        if(month==2 &&((year%4==0 && year%100!=0) || (year%400==0)))
            return 29;
        return arr[month];
    }
    
    // +=运算符重载
     Date& operator+=(int n){ 
         _day+=n;
         while(_day > GetMonthDay(_year, _month)){ 
             _day-=GetMonthDay(_year, _month);
             ++_month;
             if(_month==13){ 
                 ++_year;
                 _month=1;
             }
         }
         return *this;
     }
     
    //输入日期
    void Input(){ 
        int year,month,day,n=0;
        cin>>year>>month>>day>>n;
        //判断输入日期是否合法
        if (year >= 0 && month >= 1 && month <= 12 && day >= 1 && day <= GetMonthDay(year, month)){ 
            _year=year;
            _month=month;
            _day=day;
            _n=n;
        }
    }
    
    //输出
    void Print(){ 
            printf("%d-%02d-%02d\n",_year,_month,_day);
    }
};

int main(){ 
    int count=0;
    int year,month,day,n=0;
    cin>>count;
    Date d[count];
    for(int i=0;i<count;++i)
        d[i].Input();
    for(int j=0;j<count;++j){ 
        d[j]+=d[j]._n;
        d[j].Print();
    }
    return 0;
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服