定义一个满足如下要求的Date类实现加一天操作(C++实现)

定义一个满足如下要求的Date类:

1)定义对象不提供初值时,初始时间为2000年2月29日,提供初值则以初值为准;

2)提供Setdate(int,int,int)成员函数以实现日期设置;

3)提供Display()函数以年-月-日格式输出日期

4)提供adddate()函数实现加一天操作(15分)

主函数若为:

Date a,b(2023,12,31);

a.adddate();

a.Display();   //执行结果应为:2000-3-1

a.Setdate(1963,12,23);

a.Display();  //执行结果为:1963-12-23

b.adddate();

b.Display();   //执行将结果应为:2024-1-1

#include <iostream>
using namespace std;
   
class Date
{
	private:
		int year, mon, day;
	public:
		Date(int y=2000, int m=2, int d=29){
			year = y;
			mon = m;
			day = d;
		}
    	void Setdate(int y, int m, int d){
			year = y;
			mon = m;
			day = d;
		}
    	void desp(){
    		cout<<year<<'_'<<mon<<'_'<<day<<endl;
		}
    	void add(){
    		int ts[31]={1,31,28,31,30,31,30,31,31,30,31,30,31},leap; //天数 
    		leap=year%400==0||year%4==0&&year%100;//leap = year%400 == 0 || (year%4 == 0 && year%100 != 0);
    		ts[2] = ts[2] + leap;
    		day++;
    		if(day<=ts[mon])
    			return;
    		if(day==ts[mon]+1){
    			day=1;
    			mon++;
        		if (mon==13){
            		mon=1;
            		year++;
        		}
			}
		}
};

int main()
{
	Date a,b(2024,12,31);
	a.desp();
	a.add();
	a.desp();
	b.desp();
	b.add();
	b.desp();
}
#include <iostream>
using namespace std;
   
class Date
{
	private:
		int year, mon, day;
	public:
		Date(int y=2000, int m=2, int d=29){
			year = y;
			mon = m;
			day = d;
		}
		void Display();
		void Setdate(int, int, int);
    	void adddate();
};

void Date::Display()
{
	cout << year << '-' << mon << '-' << day << endl;
}

void Date::Setdate(int y, int m, int d)
{
	year = y;
	mon = m;
	day = d;
}

void Date::adddate(){
	int ts[31]={1,31,28,31,30,31,30,31,31,30,31,30,31},leap; //天数
	leap=year%400==0||year%4==0&&year%100;//leap = year%400 == 0 || (year%4 == 0 && year%100 != 0);
	ts[2] = ts[2] + leap;
	day++;
	if(day<=ts[mon])
		return;
    if(day==ts[mon]+1){
    	day=1;
    	mon++;
        if (mon==13){
            mon=1;
            year++;
        }
	}
}

		
int main()
{
	Date a,b(2023,12,31);
	a.adddate();
	a.Display(); //执行结果应为:2000-3-1
	a.Setdate(1963,12,23);
	a.Display(); //执行结果为:1963-12-23
	b.adddate();
	b.Display(); //执行将结果应为:2024-1-1
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值