题解 | #打印日期#

打印日期

https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
class Date {
public:
	void Print()
	{
		printf("%d-%02d-%02d\n", _year, _month, _day);
	}
	int GetMonthDay(int year, int month)
	{
		int MonthDayArray[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 MonthDayArray[month];
	}

	Date &operator+= (int day)
	{
		_day += day;
		while (_day > GetMonthDay(_year,_month))
		{
			_day -= GetMonthDay(_year, _month);
			++_month;
			if (_month == 13)
			{
				_year += 1;
				_month = 1;
			}
		}
		return *this;
	}

	Date(int year = 1,int month = 1,int day = 0)
		:_year(year)
		,_month(month)
		,_day(day)
	{}

private:
	int _year;
	int _month;
	int _day;

};
int main()
{
	int year = 0, Daysum = 0;
	while( scanf("%d %d", &year, &Daysum) != EOF )
    {
        Date d1(year);
        d1 += Daysum;
        d1.Print();
    }
}

利用C++的运算符重载,格式化打印C++太矬了,这里cin不能接受空格,这里利用C语言的printf和scanf。

全部评论

相关推荐

10-13 16:58
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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