只是incrementDay函数部分有错误,其他的没有问题,代码有点长。
#include<iostream>
using namespace std;
class DateType {
//自定义的日期类 DateType
int y, m, d; //数据成员,表示当前日期的年、月、日
public:
DateType(int y0 = 1, int m0 = 1, int d0 = 1)
{
y = y0;
m = m0;
d = d0;
}
void IncrementDay(); //增加 1 天
bool Equal(DateType dt2); //判断二日期是否相等
void PrintDate(); //屏幕输出日期对象的有关数据(年、月、日)
};
bool judge(int y)
{
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return 1;
else
return 0;
}
bool DateType:: Equal(DateType dt2)
{
if (y == dt2.y && m == dt2.m && d == dt2.d)
return 1;
else
return 0;
}
void DateType::IncrementDay()
{
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10)
{
if (d <= 30)
{
d++;
}
else
{
d = 1;
m++;
}
}
if (m == 12)
{
if (d <= 30)
{
d++;
}
else
{
y++;
m = 1;
d = 1;
}
}
if (m = 2)
{
if (judge(y))
{
if (d <= 28)
{
d++;
}
else
{
m++;
d = 1;
}
}
else
{
if(d<=27)
{
d++;
}
else
{
m++;
d = 1;
}
}
}
}
void DateType::PrintDate()
{
cout << y << ":" << m << ":" << d<<endl;
}
int main()
{
int y1, m1, d1, y2, m2, d2;
cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
DateType dt1(y1, m1, d1);
DateType dt2(y2, m2, d2);
cout << y1 << ":" << m1 << ":" << d1<<endl;
cout << y2 << ":" << m2 << ":" << d2<<endl;
if (dt1.Equal(dt2))
cout << "true"<<endl;
else
cout << "false"<<endl;
dt1.IncrementDay();
dt2.IncrementDay();
dt1.PrintDate();
dt2.PrintDate();
return 0;
}
判断是否为二月少了个等号,另外还少了4,6,9,11月的情况。源码已qq