每日打卡-11.1

发布时间 2023-04-23 20:16:36作者: leapss

一.问题描述

设计一款电子钟类,用于显示时、分、秒

实验要求:

  1. 含有形参有默认值的默认构造函数;
  2. 重载 前缀++ 和 后缀—用于调整时间,每次调整均对秒进行调整,若秒满60,则分加1,若分满60则时加1,时满24,则清零重新开始;
  3. 重载插入运算符 >> 用于输入(设定)时间;
  4. 重载插入运算符 << 用于输出时间。

二.设计思路

按照题示编写程序

三.流程图

四.伪代码 

1

五.代码实现 

1#include<iostream>
using namespace std;
class nclock {
private:
	int h, m, s;
public:
	nclock():h(0),m(0),s(0){}
	nclock operator++(int x) {
		nclock res = *this;
		this->s++;
		if (s == 60) {
			s = 0;
			m++;
		}
		if (m == 60) {
			m = 0;
			h++;
		}
		if (h == 24) h = 0;
		return res;
	}
	friend nclock operator--(nclock& p) {
		p.s--;
		if (p.s < 0) {
			p.s = 59;
			p.m--;
		}
		if (p.m < 0) {
			p.m = 59;
			p.h--;
		}
		if (p.h < 0) p.h = 23;
		return p;
	}
	friend istream& operator >>(istream& in, nclock& a) {
		in >> a.h >> a.m >> a.s;
		return in;
	}
	friend ostream& operator <<(ostream& out, nclock& a) {
		printf("%02d : %02d : %02d",a.h,a.m,a.s);
		return out;
	}
};
int main(){
	nclock a, b;
	cin >> a;
	a++;
	cout << a << endl;
	cin >> b;
	--b;
	cout << b << endl;
}