21xrx.com
2024-11-22 11:48:51 Friday
登录
文章检索 我的文章 写文章
《C++ Primer第三版答案第十一章关于时分秒的练习题解答》
2023-06-27 00:17:37 深夜i     --     --
C++ Primer 第三版 答案 第十一章 时分秒 练习题解答

C++ Primer第三版是一本经典的C++教材,其中关于时分秒的练习题是一个比较有趣的题目。下面我们来看看这个题目以及它的解答。

题目:编写一个Time类,包含时分秒的成员变量和设置与显示时分秒的成员函数。在Time类中重载加法运算符,允许两个Time类的对象相加。例如,t1 + t2 表示两个时间之和。同时,注意处理进位的情况。

解答:

首先需要定义Time类,它包含时分秒的成员变量以及设置和显示时分秒的成员函数。下面是Time类的定义:


class Time {

public:

  Time(int h = 0, int m = 0, int s = 0); // 构造函数

  void set(int h, int m, int s); // 设置时分秒

  void show() const; // 显示时分秒

  Time operator+(const Time& t) const; // 重载加法运算符

private:

  int hour; // 时

  int minute; // 分

  int second; // 秒

};

接下来是具体的函数实现。

1. 构造函数


Time::Time(int h, int m, int s)

  hour = h;

  minute = m;

  second = s;

2. 设置时间的函数


void Time::set(int h, int m, int s)

  hour = h;

  minute = m;

  second = s;

3. 显示时间的函数


void Time::show() const {

  cout << setfill('0') << setw(2) << hour << ":"

     << setfill('0') << setw(2) << minute << ":"

     << setfill('0') << setw(2) << second << endl;

}

需要注意的是,这里使用了 头文件中的setfill和setw函数来控制输出格式。

4. 重载加法运算符


Time Time::operator+(const Time& t) const {

  int h = hour + t.hour;

  int m = minute + t.minute;

  int s = second + t.second;

  if (s >= 60) {

    s -= 60;

    m++;

  }

  if (m >= 60) {

    m -= 60;

    h++;

  }

  return Time(h, m, s);

}

需要注意的是,如果秒数或分钟数超过60,需要向上进位。

最后,我们来看一下如何使用这个Time类以及重载的加法运算符。


int main() {

  // 创建两个Time对象

  Time t1(10, 30, 45);

  Time t2(2, 15, 50);

  // 显示t1和t2的时间

  t1.show();

  t2.show();

  // 相加并显示结果

  Time t3 = t1 + t2;

  t3.show();

  return 0;

}

输出结果为:


10:30:45

02:15:50

12:46:35

可以看到,两个Time对象成功相加,并且进位的情况也被正确处理了。

通过这个练习题,我们不仅学到了如何定义类和重载运算符,还学到了如何控制C++输出的格式。这对于我们编写更加实用、规范的程序具有很大的帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复