概述
设计一个时间类,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现2个时间的相加。要求: (1)小时的时间范围限制在大于等于0;(2)分的时间范围为0~59分;(3)秒的时间范围为0~59秒。
#include <iostream>
using namespace std;
class Time {
private:
int hours,minutes, seconds;
public:
Time(int h=0, int m=0, int s=0);
Time operator + (Time &);
void DispTime();
};
/* 请在这里填写答案 */
int main() {
Time tm1(8,75,50),tm2(0,6,16), tm3;
tm3=tm1+tm2;
tm3.DispTime();
return 0;
}
输出:
在这里给出相应的输出。例如:
9h:22m:6s
AC代码如下;
void Time::DispTime(){
cout<<hours<<"h:"<<minutes<<"m:"<<seconds<<"s";
}
Time Time::operator + (Time &tm){
tm.hours=hours+ tm.hours;
tm.minutes=minutes+tm.minutes;
if(tm.minutes>=60){
tm.hours++;
tm.minutes=tm.minutes%60;
}
tm.seconds=seconds+tm.seconds;
if(tm.seconds>=60){
tm.minutes++;
tm.seconds=tm.seconds%60;
}
return tm;
}
Time::Time(int h, int m,int s)
{
hours=h;
minutes=m;
seconds=s;
}
完整代码如下:
注释中的部分内容与答案想要的代码不太一样,我把题目已给代码稍作注释改动
#include <iostream>
using namespace std;
class Time {
private:
int hours,minutes, seconds;
public:
Time(int h=0, int m=0, int s=0);//带默认参数的构造函数
/* Time(int h=0, int m=0, int s=0){hours=h;
minutes=m;
seconds=s;}
这样写的话就不需要类外重新定义构造函数了;
*/
Time operator + (Time &);
void DispTime();
};
void Time::DispTime(){
cout<<hours<<"h:"<<minutes<<"m:"<<seconds<<"s";
}
//对成员函数进行定义,实现输出答案格式;
Time Time::operator + (Time &tm){
tm.hours=hours+ tm.hours;
tm.minutes=minutes+tm.minutes;
if(tm.minutes>=60){
tm.hours++;
tm.minutes=tm.minutes%60;
}
tm.seconds=seconds+tm.seconds;
if(tm.seconds>=60){
tm.minutes++;
tm.seconds=tm.seconds%60;
}
return tm;
//返回时间对象,
}
//运算符重载定义,实现时分秒的计算
Time::Time(int h, int m, int s)
{
hours=h;
minutes=m;
seconds=s;
}//不能在类外定义时还指定默认参数;
int main() {
Time tm3
tm3.DispTime();
return 0;
}
希望能理解默认参数的构造函数的使用,以及理解构造函数的重载;
推荐一篇文章理解以上两点:
博主龙叙的文章,相应注明如下,点击搜索链接即可阅览
版权声明:本文为CSDN博主「龙叙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40162095/article/details/106379853
最后
以上就是聪明啤酒为你收集整理的PTA R6-26 时间相加 (10 分)的全部内容,希望文章能够帮你解决PTA R6-26 时间相加 (10 分)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复