下面是一个日期类的定义,请在类外实现其所有的方法,并在主函数中生成对象测试之。
注意,在判断明天日期时,要加入跨月、跨年、闰年的判断
例如9.月30日的明天是10月1日,12月31日的明天是第二年的1月1日
2月28日的明天要区分是否闰年,闰年则是2月29日,非闰年则是3月1日
输入
测试数据的组数t
第一组测试数据的年 月 日
..........
要求第一个日期的年月日初始化采用构造函数,第二个日期的年月日初始化采用setDate方法,第三个日期又采用构造函数,第四个日期又采用setDate方法,以此类推。
输出
输出今天的日期
输出明天的日期
-----------------------------------------------------------------------------------------------------------------------------------
#include<iostream>
#include<string >
#include<iomanip >
using namespace std;
class date {
int year, month, day;
public:
date() { year = 1900, month = 1, day = 1; };
date(int y, int m,int d)
{
year = y;
month = m;
day = d;
}
int getyear() {
return year;
}
int getmonth() {
return month;
}
int getday() {
return day;
}
void setdate(int y, int m, int d)
{ year = y;
month = m;
day = d;
}
void print()
{
cout << year << "/" << setfill('0')<<setw(2)<<month << "/" << setfill('0') << setw(2) << day << endl;//这里没有解决输出两位的问题;解决啦,啊哈哈哈,使用iomanip头文件,同理解决小鼠点后两位数字cout<<fixed<<setprecision(2);(precision是精度)
}
void addoneday()
{
day++;
int x;//判断平润
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))//判断平闰年,由于地球公转是365.24219,天,也就是大概四年就会有一天多余,因此我们每隔四年就来一个闰年,但是闰年的规则是每四百都润,被四整除且不能被100整除的数字
{
x = 1;
}
else
x = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day > 31)
{
month++;
day = day - 31;
}//最多加一天,所以直接用day=1;
}//这里先不判断年份,先看月份
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day > 30)
{
month++;
day = 1;
}
}
else if (month == 2)
{
if (x = 1)
{
if (day > 29)
{
month++;
day = 1;
}
}
else
{
if (day > 28)//这样里第一次if的括号都没加,以后不要出现这种错位。(错误一)
{
month++;
day = 1;
}
}
}
if (month > 12)
{
month = 1;
year++;
}//这里不能忘记年份加一;
}
};
int main()
{
int t;
cin >> t;
for (int i = 0; i < t; i++)
{
int y=0, m=0, d=0;
cin >> y>> m>> d;
if (i == 0 || i % 2 == 0)
{ date p;//这里我翻过来写,
p.setdate(y, m, d);
cout<< "Today is ";
p.print();
p.addoneday();
cout << "Tomorrow is ";
p.print();
}
else
{
date p(y, m, d);//使用构造化来写
p.setdate(y, m, d);
cout << "Today is ";
p.print();
p.addoneday();
cout << "Tomorrow is ";
p.print();
}
}
return 0;
}