C++————定义日期类Date 定义日期类Date。要求: (1)可以设置日期; (2)日期加一天操作; (3)输出函数,输出格式为“XXXX-XX-XX”; (4)编写主函数,定义对象,完成相应功能
时间: 2024-09-28 19:10:02 浏览: 39
在C++中,我们可以创建一个名为`Date`的类来表示日期,并按照上述需求进行设计。这里是一个简单的实现示例:
```cpp
#include <iostream>
#include <string>
class Date {
private:
int day;
int month;
int year;
public:
// 构造函数,设置默认日期(例如当前年月日)
Date() : day(1), month(1), year(std::time(nullptr) / (60 * 60 * 24 * 365)) {}
// 设置日期
void setDate(int d, int m, int y) {
if (m >= 1 && m <= 12 && d >= 1 && d <= 31) {
day = d;
month = m;
year = y;
} else {
std::cout << "Invalid date!" << std::endl;
}
}
// 加一天的操作
void addDays(int num_days) {
if (num_days > 0) {
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_leap_year = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (month == 2 && is_leap_year) {
days_in_month[1] = 29;
}
if (day + num_days <= days_in_month[month - 1]) {
day += num_days;
} else {
day = 1; // 跳过月份边界,进入下个月
if (month == 12) {
month = 1;
year++;
} else {
month++;
}
}
} else {
std::cout << "Cannot subtract days from a date." << std::endl;
}
}
// 输出函数
std::string toString() const {
return std::to_string(year) + "-" + std::to_string(month).pad_start(2, '0') + "-" + std::to_string(day).pad_start(2, '0');
}
};
int main() {
// 创建Date对象并设置日期
Date today;
today.setDate(20, 12, 2022);
// 输出初始日期
std::cout << "Initial Date: " << today.toString() << std::endl;
// 添加一天
today.addDays(1);
// 输出第二天日期
std::cout << "After adding one day: " << today.toString() << std::endl;
return 0;
}
```
在这个例子中,`Date`类包含了私有成员变量`day`, `month`, 和 `year`来存储日期信息,以及相应的公共成员函数如`setDate`, `addDays`, 和 `toString`。在`main`函数中,我们创建了一个`Date`对象并演示了如何设置日期、增加一天以及输出日期。
阅读全文