日期类运算符重载 描述 设计日期类Date,成员数据包含年(year)月(month)日(day)。 main函数已给定,提交时只需要提交main函数外的代码部分。 #include<iostream> using namespace std; //你提交的代码在这里 int main() { Date d1; cout<<"Show object d1:"<<d1<<endl; int year,month,day; cin>>year>>month>>day; Date d2(year,month,day); cout<<"Show object d2:"<<d2<<endl; cin>>year>>month>>day; d1.Set(year,month,day); cout<<"Reset and Show object d1:"<<d1<<endl; int n; n=d2-d1; cout<<d2<<" - "<<d1<<" = "<<n<<endl; cin>>n; cout<<d1<<" + "<<n<<" = "; d2=d1+n; cout<<d2<<endl; cout<<d1<<" - "<<n<<" = "; d1=d1-n; cout<<d1<<endl; return 0; } 输入 3行,第1,2行,每行3个整数,分别表示年、月和日;第3行是一个非负整数。数据保证合法。 输出 按照样例输出格式输出。 输入样例 1 2023 1 5 2023 7 8 100 输出样例 1 Show object d1:2023/5/20 Show object d2:2023/1/5 Reset and Show object d1:2023/7/8 2023/1/5 - 2023/7/8 = -184 2023/7/8 + 100 = 2023/10/16 2023/7/8 - 100 = 2023/3/30
时间: 2024-02-21 14:00:31 浏览: 45
```cpp
#include<iostream>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date() : year(2023), month(5), day(20) {}
Date(int y, int m, int d) : year(y), month(m), day(d) {}
void Set(int y, int m, int d) {
year = y;
month = m;
day = d;
}
friend ostream& operator<<(ostream& os, const Date& obj) {
os << obj.year << '/' << obj.month << '/' << obj.day;
return os;
}
friend int operator-(const Date& d1, const Date& d2) {
int days1 = d1.year * 365 + d1.month * 30 + d1.day;
int days2 = d2.year * 365 + d2.month * 30 + d2.day;
return days2 - days1;
}
friend Date operator+(const Date& d, int n) {
int y = d.year, m = d.month, day = d.day + n;
while (day > 30) {
m++;
day -= 30;
if (m > 12) {
y++;
m -= 12;
}
}
return Date(y, m, day);
}
friend Date operator-(const Date& d, int n) {
int y = d.year, m = d.month, day = d.day - n;
while (day <= 0) {
m--;
if (m <= 0) {
y--;
m += 12;
}
day += 30;
}
return Date(y, m, day);
}
};
int main() {
Date d1;
cout << "Show object d1:" << d1 << endl;
int year, month, day;
cin >> year >> month >> day;
Date d2(year, month, day);
cout << "Show object d2:" << d2 << endl;
cin >> year >> month >> day;
d1.Set(year, month, day);
cout << "Reset and Show object d1:" << d1 << endl;
int n;
n = d2 - d1;
cout << d2 << " - " << d1 << " = " << n << endl;
cin >> n;
cout << d1 << " + " << n << " = ";
d2 = d1 + n;
cout << d2 << endl;
cout << d1 << " - " << n << " = ";
d1 = d1 - n;
cout << d1 << endl;
return 0;
}
```
阅读全文