定义一个满足如下要求的日期类 Date,并编写主函数对该类进行测试。 (1)Date 类中需包含描述年、月、日等信息的数据成员,以及用于设置与读取这些数据成员的成员函数。 (2)按“年/月/日”格式输出日期。 (3)在 Date 类中定义成员函数,用于实现对日期类对象进行加 1 天或减 1 天的操作。 注意在设计过程中处理月、日的进位问题和闰年判断问题。 输入格式:输入两组数据。每组数据 1 行,有 3 个整数,表示日期,格式为:年 月 日。 输出格式:对于第一组输入数据,第一行输出日期;第二行输出加 1 天后的日期;对于第二组输入数据,第一行输出日期;第二行输出减 1 天后的日期。 输入样例1: 2023 4 25 2023 1 1 输出样例1: 2023/04/25 2023/04/26 2023/01/01 2022/12/31 输入样例2: 2023 12 31 2024 3 1 输出样例2: 2023/12/31 2024/01/01 2024/03/01 2024/02/29
时间: 2023-06-14 16:04:50 浏览: 140
#include <iostream>
using namespace std;
class Date {
private:
int year, month, day;
public:
void setYear(int y) { year = y; }
void setMonth(int m) { month = m; }
void setDay(int d) { day = d; }
int getYear() { return year; }
int getMonth() { return month; }
int getDay() { return day; }
void print() {
printf("%04d/%02d/%02d\n", year, month, day);
}
int getDaysOfMonth(int m) {
int daysOfMonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
if (m == 2 && isLeapYear()) return 29;
return daysOfMonth[m];
}
bool isLeapYear() {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return true;
return false;
}
void addDay() {
int days = getDaysOfMonth(month);
day++;
if (day > days) {
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
}
}
}
void subDay() {
day--;
if (day < 1) {
month--;
if (month < 1) {
month = 12;
year--;
}
day = getDaysOfMonth(month);
}
}
};
int main() {
Date date;
int year, month, day;
cin >> year >> month >> day;
date.setYear(year);
date.setMonth(month);
date.setDay(day);
date.print();
date.addDay();
date.print();
cin >> year >> month >> day;
date.setYear(year);
date.setMonth(month);
date.setDay(day);
date.print();
date.subDay();
date.print();
return 0;
}
阅读全文