1.编写一个日期类Date,要求如下: a.数据成员由年(year)、月(month)、日(day)组成 b.定义成员函数SetDate(),用于给日期类对象设置日期值 c.定义成员函数IsLe
时间: 2024-10-16 19:09:40 浏览: 86
首先,我们创建一个名为`Date`的简单日期类,包含三个私有数据成员代表年份(`year`)、月份(`month`)和天数(`day`)。然后我们可以定义两个公共成员函数:`SetDate`用于设置日期值,以及`IsLeapYear`判断是否为闰年。
```cpp
class Date {
private:
int year;
int month;
int day;
public:
// 构造函数初始化默认日期(例如:当前系统日期)
Date() : year(0), month(0), day(0) {}
// 设置日期值
void SetDate(int y, int m, int d) {
if (y >= 1 && y <= 9999 && m >= 1 && m <= 12 && d >= 1 && d <= 31) {
switch (m) {
case 2:
if (IsLeapYear(y)) {
day = min(d, 29);
} else {
day = min(d, 28);
}
break;
default:
day = min(d, DaysInMonth(m, y));
break;
}
year = y;
month = m;
} else {
std::cout << "Invalid date!" << std::endl;
}
}
// 判断是否为闰年
bool IsLeapYear(int year) const {
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
// 根据月份获取该月天数
static int DaysInMonth(int month, int year) {
if (month == 2) {
return IsLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
};
```
在这个类中,`SetDate`函数检查输入日期的有效性并调整至合法范围,同时考虑了二月的特殊规则。`IsLeapYear`是一个辅助方法,用于判断某一年是否为闰年。`DaysInMonth`函数根据月份返回对应月的天数。
阅读全文