#include <iostream> #include <iomanip> #include <cmath> using namespace std; //返回四舍五入保留n位小数的结果 float roundn(float f, int n); // 此处写TransTime三个重载函数的原型 ////////TODO Begin //// ///////TODO End////// int main() { float duration; int h, m, s; char c; //请不要修改主函数中的任何代码,本题要求根据主函数中的各种调用,编写函数,使得输出结果满足要求 //测试1 分钟数 转 时:分:秒 cout << "input mins:\n"; cin >> duration; TransTime(duration, h,m,s); cout << duration << " mins is " << h <<":" << setw(2) << setfill('0') << m <<":" << setw(2) << setfill('0') << s << endl; //测试2 时:分:秒 转 分钟数 cout << "\ninput h:m:s\n"; cin >> h >>c >> m >> c >>s; duration = TransTime(h,m,s); cout << h <<":"<< setw(2) << setfill('0') << m <<":" << setw(2) << setfill('0') << s << " is " << duration << " mins" << endl; //测试3 分:秒 转 分钟数 cout << "\ninput m:s\n"; cin >> m >> c >> s; duration = TransTime(m,s); cout << setw(2) << setfill('0') << m <<":" << setw(2) << setfill('0') << s << " is " << duration << " mins" << endl;编写所有函数的实现
时间: 2023-11-16 13:24:42 浏览: 154
好的,根据主函数中的调用,我来给你提供一下三个函数的实现:
```
//返回四舍五入保留n位小数的结果
float roundn(float f, int n) {
float scale = pow(10, n);
return round(f * scale) / scale;
}
// 分钟数 转 时:分:秒
void TransTime(float mins, int& h, int& m, int& s) {
h = mins / 60;
m = mins - h * 60;
s = roundn((mins - h * 60 - m) * 60, 0);
}
// 时:分:秒 转 分钟数
float TransTime(int h, int m, int s) {
return h * 60 + m + roundn(s / 60.0, 2);
}
// 分:秒 转 分钟数
float TransTime(int m, int s) {
return m + roundn(s / 60.0, 2);
}
```
其中,`roundn` 函数用于实现四舍五入保留 n 位小数的功能,`TransTime` 函数用于实现不同单位之间的转换。在 `TransTime` 函数中,第一个版本将分钟数转换为时:分:秒格式,第二个版本将时:分:秒格式转换为分钟数,第三个版本将分:秒格式转换为分钟数。注意,第一个版本使用了引用类型的输出参数,以便将计算结果返回给主函数。同时,为了保证精度,我们使用了 `roundn` 函数对计算结果进行了四舍五入处理。
阅读全文