设计一个日期类(CDate),属性为年、月、日,成员函数为设置当前日期setDate(…)、当前日期减一天decreaseDate()和显示日期showDate()。要求对于每组数据,先输出日期,日期减一天后,再输出日期,均需要用类的成员函数实现。输出格式参照样例输出。c++
时间: 2024-01-22 19:19:22 浏览: 146
以下是 C++ 的代码实现:
```cpp
#include <iostream>
using namespace std;
class CDate {
private:
int year, month, day; // 年、月、日
public:
void setDate(int y, int m, int d) {
year = y;
month = m;
day = d;
}
void decreaseDate() {
if (day == 1) { // 当前日期是该月的第一天
if (month == 1) { // 当前月份是一月,上一月是去年的十二月
year--;
month = 12;
day = 31;
} else if (month == 3) { // 当前月份是三月,上一月是二月
if (isLeapYear(year)) { // 闰年二月是29天
month--;
day = 29;
} else { // 平年二月是28天
month--;
day = 28;
}
} else if (month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { // 该月份是大月(31天)
month--;
day = 30;
} else { // 该月份是小月(30天)
month--;
day = 31;
}
} else { // 当前日期不是该月的第一天
day--;
}
}
void showDate() {
cout << year << "-" << month << "-" << day << endl;
}
private:
bool isLeapYear(int year) { // 判断是否为闰年
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
};
int main() {
CDate date;
int year, month, day;
cin >> year >> month >> day;
date.setDate(year, month, day);
date.showDate();
date.decreaseDate();
date.showDate();
return 0;
}
```
例如,输入:
```
2022 1 1
```
则输出:
```
2022-1-1
2021-12-31
```
阅读全文