赞
踩
题目描述
下面是一个日期类的定义,请在类外实现其所有的方法,并在主函数中生成对象测试之。
class Date
{
int year,month,day;
public:
Date(); //缺省构造函数,给year,month,day分别赋值为 1988,1,1
Date(int y,int m,int d); //带参构造函数,给year,month,day分别赋参数的值
int getYear(); //返回当前日期的年份
int getMonth(); //返回当前日期的月份
int getDay(); //返回当前日期的日
void setDate(int y,int m,int d); //按参数重设日期的值
void print(); //按格式输出当前日期的年月日
void addOneDay(); //在当前日期上加一天
};
注意,在判断明天日期时,要加入跨月、跨年、闰年的判断
例如9.月30日的明天是10月1日,12月31日的明天是第二年的1月1日
2月28日的明天要区分是否闰年,闰年则是2月29日,非闰年则是3月1日
输入
测试数据的组数t
第一组测试数据的年 月 日
…
要求第一个日期的年月日初始化采用构造函数,第二个日期的年月日初始化采用setDate方法,第三个日期又采用构造函数,第四个日期又采用setDate方法,以此类推。
输出
输出今天的日期
输出明天的日期
样例输入
4
2012 1 3
2012 2 28
2012 3 31
2012 4 30
样例输出
Today is 2012/01/03
Tomorrow is 2012/01/04
Today is 2012/02/28
Tomorrow is 2012/02/29
Today is 2012/03/31
Tomorrow is 2012/04/01
Today is 2012/04/30
Tomorrow is 2012/05/01
代码如下
#include <iostream> using namespace std; class Date { private: int year,month,day; public: Date(); //缺省构造函数,给year,month,day分别赋值为 1900,1,1 Date(int y,int m,int d); //带参构造函数,给year,month,day分别赋参数的值 ~Date(); int getYear(); //返回当前日期的年份 int getMonth(); //返回当前日期的月份 int getDay(); //返回当前日期的日 void setDate(int y,int m,int d); //按参数重设日期的值 void print(); //按格式输出当前日期的年月日 void addOneDay(); //在当前日期上加一天 void judgeprint(int x); }; Date::Date()//缺省构造函数,给year,month,day分别赋值为 1988,1,1 { year=1900; month=1; day=1; } Date::Date(int y,int m,int d)//带参构造函数,给year,month,day分别赋参数的值 { year=y; month=m; day=d; } Date::~Date()//析构函数 { } int Date::getYear()//返回当前日期的年份 { return year; } int Date::getMonth()//返回当前日期的月份 { judgeprint(month); return month; } int Date::getDay()//返回当前日期的日 { judgeprint(day); return day; } void Date::setDate(int y,int m,int d) { year=y; month=m; day=d; } void Date::addOneDay()//在当前日期上加一天 { int tempy,tempm,tempd; tempy = year; tempm = month; tempd = day; if(day==30 )//判断跨月 { if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 ||month==12 ) { tempd++; } else { tempm++; tempd=1; } } else if(day == 31)//判断跨年 { if(month == 12) { tempy++; tempm=1; tempd=1; } else { tempm++; tempd=1; } } else if(day == 28)//判断闰年 { if(month == 2) { if(year%4 == 0) { tempd++; } else { tempm++; tempd++; } } else { tempd++; } } else { tempd++; } cout<<"Tomorrow is "; cout<<tempy; cout<<"/"; judgeprint(tempm); cout<<tempm; cout<<"/"; judgeprint(tempd); cout<<tempd<<endl; } void Date::print()//按格式输出当前日期的年月日 { cout<<"Today is "; cout<<getYear(); cout<<"/"; cout<<getMonth(); cout<<"/"; cout<<getDay()<<endl; addOneDay(); } void Date::judgeprint(int x) { if(x<10) { cout<<"0"; } } int t;//测试样例 int y,m,d;//年月日 int i; int main() { cin >> t;//输入测试样例 for(i=0;i<t;i++) { cin >> y >> m >>d;//输入年月日 if(i%2==0) { Date a(y,m,d); a.print(); } else { Date a; a.setDate(y,m,d); a.print(); } } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。