#include<iostream>
using namespace std;
class Date //日期类
{
int year,month,day;
public:
Date(); //缺省构造函数
Date(int y,int m,int d); //带参构造函数
int getYear(); //返回当前日期的年
int getMonth(); //返回当前日期的月
int getDay(); //返回当前日期的日
void setDate(int y,int m,int d); //按参数重设日期的值
void print(); //按格式输出当前日期的年、月、日
void addOneDay(); //在当前日期上加上一天
};
Date::Date() //缺省构造函数
{ //给year、month、day分别赋值为1900、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;
}
int Date::getYear() //返回当前日期的年
{
return year;
}
int Date::getMonth() //返回当前日期的月
{
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() //按格式输出当前日期的年、月、日
{ //格式:xxxx/xx/xx,月、日不足两位的前面补"0"
cout << getYear() << "/";
if(month<10)
cout << "0" << getMonth() << "/";
else
cout << month << "/";
if(day<10)
cout << "0" << getDay();
else
cout << day;
}
void Date::addOneDay() //计算明天的日期
{
int dd; //dd存储当前月的天数
if(month==2) //判断是否为2月
{
if(!(year%4)&&year%100||!(year%400)) //判断是否为闰年
dd=29;
else
dd=28;
}
else if(month==4||month==6||month==9||month==11) //判断是否为小月
dd=30;
else //判断是否为大月
dd=31;
day++; //在当前日期上加上一天
if(day>dd) //判断是否跨月份
{
day=1;
month++;
}
if(month>12) //判断是否跨年份
{
month=1;
year++;
}
}
int main()
{
int t,i,y,m,d;
//printf("please input the number of test cases:\n");
cin >> t; //输入测试实例个数t
for(i=1;i<=t;i++)
{
cin >> y >> m >> d; //输入测试数据的年、月、日
if(i%2) //判断是采用构造函数(i为单数)还是setDate方法(i为复数)
{
Date day1(y,m,d); //采用构造函数
cout << "Today is "; //输出今天的日期
day1.print();
cout << endl;
day1.addOneDay(); //计算明天的日期
cout << "Tomorrow is "; //输出明天的日期
day1.print();
cout << endl;
}
else
{
Date day2; //采用setDate方法
day2.setDate(y,m,d);
cout << "Today is "; //输出今天的日期
day2.print();
cout << endl;
day2.addOneDay(); //计算明天的日期
cout << "Tomorrow is "; //输出明天的日期
day2.print();
cout << endl;
}
}
return 0;
}
//input 2 expect Today is 2022/03/31 output Today is 2022/03/31
// 2022 3 31 Tomorrow is 2022/04/01 Tomorrow is 2022/04/01
// 2000 2 28 Today is 2000/02/28 Today is 2000/02/28
// Tomorrow is 2000/02/29 Tomorrow is 2000/02/29
Date(类与构造)
最新推荐文章于 2023-08-22 21:10:21 发布