C++编写一个时间类 实现时间的加减运算并输出 同时实现正数计时和倒数计时
1条回答 默认 最新
关注 #include<iostream> #include<windows.h> using namespace std; class Time { public: int minute; int sec; Time() { //默认构造函数 minute = 0; sec = 0; } Time(int m, int s):minute(m), sec(s)//构造函数重载 {} Time& operator++(); //声明运算符“++”重载为成员函数 Time& operator--(); //声明运算符“--”重载为成员函数 friend Time& operator+=(Time& a, Time& b); //声明运算符“+=”重载为友元函数 friend Time& operator-=(Time& a, Time& b); //声明运算符“-=”重载为友元函数 void Print(); }; Time& Time::operator++() { //重载“++”运算符 sec++; if (sec >= 60) { sec -= 60; minute++; } return *this; } Time& Time::operator--() { //重载“--”运算符 sec--; if (sec < 0) { sec += 60; minute--; } return *this; } Time& operator+=(Time& a, Time& b) { //重载“+=”运算符 int minute; int sec; if (a.sec + b.sec >= 60) { a.sec += b.sec; a.sec -= 60; a.minute++; } else { a.sec += b.sec; } if (a.minute + b.minute >= 60) { a.minute += b.minute; a.minute -= 60; } else { a.minute += b.minute; } return a; } Time& operator-=(Time& a, Time& b) { //重载“-=”运算符 int minute; int sec; int t1, t2, t; t1 = a.minute * 60 + a.sec; t2 = b.minute * 60 + b.sec; if (t1 >= t2) { t = t1 - t2; } else { t = t2 - t1; } a.minute = t / 60; a.sec = t % 60; return a; } void Time::Print() { //显示成员函数 cout << "当前时间是:"; cout << minute << "分" << sec << "秒" << endl; } int main() { Time time1, time2, time3; int a; cout << "请输入分钟:" << endl; cin >> time1.minute; cout << "请输入秒钟:" << endl; cin >> time1.sec; cout << "当前时间是:" << time1.minute << "分:" << time1.sec << "秒" << endl; cout << "--------------------------------" << endl; cout << "请输入操作" << endl << "1.整数计时" << endl << "2.倒数计时" << endl << "3.时间相加" << endl << "4.时间相减" << endl; cout << "--------------------------------" << endl; while (scanf("%d", &a) != EOF) { switch (a) { case 1: for (int i = 0; i < 8; i++) { ++time1; Sleep(1000); time1.Print(); } break; case 2: for (int i = 0; i < 8; i++) { --time1; Sleep(1000); time1.Print(); } break; case 3: cout << "请输入需要相加的时间(分钟)" << endl; cin >> time2.minute; cout << "请输入需要相加的时间(秒钟)" << endl; cin >> time2.sec; time1 += time2; time1.Print(); break; case 4: cout << "请输入需要相减的时间(分钟)" << endl; cin >> time3.minute; cout << "请输入需要相减的时间(秒钟)" << endl; cin >> time3.sec; time1 -= time3; time1.Print(); break; } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state