填空题【说明】
设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。
在Date类中设计如下重载运算符函数:
Date operator + (int days) : 返回某日期加上天数得到的日期。
Date operator - (int days) : 返回某日期减去天数得到的日期。
int operator - (Date&b): 返回两日期相差的天数。
【程序】
#include<iostream.h>
int day tab[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;
//day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年class Date
int year, month, day //年,月,日
int leap(int);
//判断是否闰年
int dton(Date&)
Date ntod(int)
public:
Date()
Date (int y, int mint d) I year = y;
month = m;
day = d;
void setday(intd)day = d;
void setmonth(int m) month = m;
void setyear(int y) year =y;
int getday() return day;
int getmonth() return month:
int getyear() return yea;
Date operator + (int days) //+运算符重载函数
static Date date;
int number =(1)
date = ntod(number)
return date
Date operator - (int days) //-运算符重载函数
staffs Date date;
int number=(2);
number - = days;
date = ntod(number)
return date;
【java定义一个日期类|java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...】int operator - (Date &b) //-运算符重载函数
int days=(3);
return days;
void disp()
cout<<year<<"."<<month<<". "<<day<<endl;
;
int Date: :leap( int year)
if((4)) //是闰年
return 1;
//不是闰年
else
return0:
int Date:: dton( Date &d) //求从公元0年0月0日到d日期的天数
inty,m,days =0;
for(y=1;
y<=d. year;
y++)
if((5))days+ =366;
//闰年时加366天
else days + = 365;
//非闰年时加365天
for(m =0;
m<d. month-1;
m++)
if( (6) )
days += day_tab[1] [m];
else
days +=day_tab[0] [m];
days + = d. day;
return days;
Date Date::ntod(intn) //将从元0年0月0日的天数转换成日期
int y=1,m = 1,d,rest = n,lp;
while(1)
if(leap(y))
if(rest<= 366) break;
else rest - = 366;
else //非闰年
if(rest = 365 ) break;
else rest-=365;
y++;
y--;
Ip = leap(y);
while(1)
if(lp) //闰年
if(rest>day_tab[1] [m - 1]) rest -= day_tab[1] [m-1];
else break;
else //非闰
if(rest>day_tab[0] [m -1]) rest -= day_tab[0] [m-1];
else break;
m++;
d = rest;
return Date(y;
m,d);
void main()
Date now(2003,10,1) ,then(2005,6,5);
cout<<" now:";
now. disp();
cout<<" then:";
then. disp();
cout<<"相差天数:"<<(then-now)<<endl;
Date dl = now + 1000,d2 = now - 1000;
cout<<"now + 1000:" ;
d1. disp();
cout<<" now - 1000:" :d2. disp();