运算符重载(单目:日期自增)

定义日期类,重载自增运算。

输入

包括多组数据,每组包括3个整数表示一个日期中的年、月、日。

输出

日期的下一天。输出格式见样例。

样例输入

2000 1 2
2012 2 28
2001 2 28
2011 12 31
2012 4 30

样例输出

2000/1/3
2012/2/29
2001/3/1
2012/1/1
2012/5/1

1:31 2:闰年29, 平年28, 3:31, 4:30 ,5:31 ,6:30, 7:31, 8:31, 9:30 ,10:31, 11:30, 12:31

判断闰年的标准是:1、能整除4且不能整除100 2、能整除400

#include <iostream>
using namespace std;
class Date{
public:
	Date(int y=0,int m=0,int d=0)
	{   year=y;
	    month=m;
		day=d;
	}
	friend Date operator++(Date &d1)//
	{    
	     Date temp;//
		 temp.year=d1.year;//
		 temp.month=d1.month;//
		 temp.month=++d1.day;//
		 return temp;//
	}
	void disp()
	{   if((year%400==0)||(year%4==0&&year%100!=0))
		{   if(month==2)
			{   if(day>29)   
				{	 month=++month;
	                 day=day-29;
				}
				if(month>12)   
				{   year=++year;
					    month=1;
				}

				
			}
		}
		else
		{   if(month==2)
			{   if(day>28)
				{   month=++month;
				    day=day-28;
				}
			
			    if(month>12)
				{	year=++year;
				     month=1;
				}
			}
		}
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{    if(day>31)
			{   month=++month;
				day=day-31;
			}
			if(month>12)
			{   year=++year;
				month=1;
			}
		}
		else
		{    if(day>30)
			{    month=++month;
				day=day-30;
			}
			if(month>12)
			{   year=++year;
				month=1;
			}
		}
	    cout<<year<<"/"<<month<<"/"<<day<<endl;
	}
	
private:
	int year,month,day;
};
int main()
{   int a,b,c;
    while(cin>>a>>b>>c)
	{   Date d(a,b,c);
	    ++d;
		d.disp();
	}
	    
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值