利用函数重载,写三个同名的时长转换的函数 transTime,分别完成以下功能: 1 能够把用浮点数表示的时长(单位为分钟),转换成时分秒。 例如:64.5分钟,转换成1小时4分钟30秒 (秒的计算向上取整) 2 能够把时分秒转换成浮点数表示时长,调用roundn函数四舍五入保留2位小数并返回该时长(单位为分钟) 例如:将1小时4分钟30秒,转换成64.5 3 能够把分秒表示的时长,转换成浮点数,调用roundn函数四舍五入保留2位小数并返回该时长(单位为分钟) 例如:将4分钟30秒,转换成4.5 4 为了更快捷地完成任务,再编写一个四舍五入保留n位小数的函数 int roundn(float f, int n) 例如 调用该函数时 roundn(3.1415, 3) 返回3.142; 此处编写所有函数的实现
时间: 2024-03-12 16:48:12 浏览: 133
通过string转换比较好些,很多重载函数要么是char * ,要么是String
好的,以下是四个函数的实现:
```C++
#include <iostream>
#include <cmath>
using namespace std;
// 四舍五入保留n位小数
int roundn(float f, int n) {
return round(f * pow(10, n)) / pow(10, n);
}
// 将用浮点数表示的时长(单位为分钟),转换成时分秒
string transTime(double minutes) {
int hours = minutes / 60;
int remainMinutes = minutes - hours * 60;
int seconds = round((minutes - hours * 60 - remainMinutes) * 60);
return to_string(hours) + "小时" + to_string(remainMinutes) + "分钟" + to_string(seconds) + "秒";
}
// 将时分秒转换成浮点数表示时长(单位为分钟)
double transTime(int hours, int minutes, int seconds) {
return roundn(hours * 60.0 + minutes + seconds / 60.0, 2);
}
// 将分秒表示的时长,转换成浮点数
double transTime(int minutes, int seconds) {
return roundn(minutes + seconds / 60.0, 2);
}
int main() {
// 测试样例
double minutes = 64.5;
cout << minutes << "分钟 = " << transTime(minutes) << endl;
int hours = 1, remainMinutes = 4, seconds = 30;
cout << hours << "小时" << remainMinutes << "分钟" << seconds << "秒 = " << transTime(hours, remainMinutes, seconds) << "分钟" << endl;
int m = 4, s = 30;
cout << m << "分钟" << s << "秒 = " << transTime(m, s) << "分钟" << endl;
return 0;
}
```
输出结果为:
```
64.5分钟 = 1小时4分钟30秒
1小时4分钟30秒 = 64.5分钟
4分钟30秒 = 4.5分钟
```
阅读全文