问题 C: Date(类与对象)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
下面是一个日期类的定义,请在类外实现其所有的方法,并在主函数中生成对象测试之。
注意,在判断明天日期时,要加入跨月、跨年、闰年的判断
例如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>
#include<string>
using namespace std;
class DATE {
int year, month, day;
public:
DATE();
DATE(int y, int m, int d);
int getyear();
int getmon();
int getday();
void setDATE(int y, int m, int d);
void print();
void addoneday();
bool isleap();
};
DATE::DATE()
{
year = 1900;
month = 1;
day = 1;
}
DATE::DATE(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
int DATE::getyear()
{
return year;
}
int DATE::getmon()
{
return month;
}
int DATE::getday()
{
return day;
}
void DATE::setDATE(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
void DATE::print()
{
printf("%d/%02d/%02d\n", year, month, day);
}
bool DATE::isleap()
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
return true;
return false;
}
void DATE::addoneday()
{
day++;
if (month == 1 || month == 3 || month == 5 || month == 6 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day > 31)
{
day = 1;
month++;
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11 )
{
if (day > 30)
{
day = 1;
month++;
}
}
else if (month == 2)
{
if (isleap())
{
if(day>29)
{
day = 1;
month++;
}
}
else
{
if (day > 28)
{
day = 1;
month++;
}
}
}
if (month > 12)
{
year++;
month = 1;
}
}
int main()
{
int t;
cin >> t;
for(int i=1;i<=t;++i)
{
int a, b, c;
if (t % 2 == 1)
{
cin >> a >> b >> c;
DATE qw(a, b, c);
cout << "Today is ";
qw.print();
//cout << endl;
qw.addoneday();
cout << "Tomorrow is ";
qw.print();
}
else
{
//cout << endl;
cin >> a >> b >> c;
DATE qw;
qw.setDATE(a, b, c);
cout << "Today is ";
qw.print();
//cout << endl;
qw.addoneday();
cout << "Tomorrow is ";
qw.print();
//cout << endl;
}
}
return 0;
}