编写一个Time类,并对“-”和“--”运算符重载,使该类的对象可以互相减 和自减 。 注意:两个重载运算符都写成Time的成员函数 主函数: int main() { int h1,m1,s1,h2,m2,s2; cin>>h1>>m1>>s1>>h2>>m2>>s2; Time t1(h1,m1,s1), t2(h2,m2,s2), t; t=t1-t2; t.disp(); t--; t.disp(); (--t)--; t.disp(); (t--).disp(); t.disp(); return 0; } Input 键盘输入两个时间t1、t2的时分秒 Output 输出程序的运行结果 Sample Input 3 45 10 1 50 24 Sample Output 1:54'46" 1:54'45" 1:54'43" 1:54'43" 1:54'42"请用c++语言编写代码使其符合以上要求
时间: 2024-02-09 17:08:10 浏览: 58
以下是符合要求的代码:
```c++
#include <iostream>
using namespace std;
class Time {
private:
int hour;
int minute;
int second;
public:
Time(int h = 0, int m = 0, int s = 0) : hour(h), minute(m), second(s) {}
void disp() const { cout << hour << ":" << minute << "'" << second << "\"" << endl; }
Time operator-(const Time& t) const; // 重载运算符-,使Time对象可以相减
Time& operator--(); // 重载前置自减运算符,使Time对象可以自减
Time operator--(int); // 重载后置自减运算符,使Time对象可以自减
};
Time Time::operator-(const Time& t) const {
int s1 = hour * 3600 + minute * 60 + second;
int s2 = t.hour * 3600 + t.minute * 60 + t.second;
int s = s1 - s2;
int h = s / 3600;
int m = s % 3600 / 60;
int sec = s % 60;
return Time(h, m, sec);
}
Time& Time::operator--() {
if (second > 0) {
second--;
} else {
second = 59;
if (minute > 0) {
minute--;
} else {
minute = 59;
if (hour > 0) {
hour--;
} else {
hour = 23;
}
}
}
return *this;
}
Time Time::operator--(int) {
Time t(*this);
--(*this);
return t;
}
int main() {
int h1, m1, s1, h2, m2, s2;
cin >> h1 >> m1 >> s1 >> h2 >> m2 >> s2;
Time t1(h1, m1, s1), t2(h2, m2, s2), t;
t = t1 - t2;
t.disp();
t--;
t.disp();
(--t)--;
t.disp();
(t--).disp();
t.disp();
return 0;
}
```
阅读全文