为了实现这个任务,我们需要编写一个C++程序,该程序能够接收派的总大小和来宾的人数作为输入,然后计算出每个人可以分到的派的大小,并以两种不同的方式输出:一种是四舍五入保留三位小数,另一种是直接截取保留三位小数。 下面是实现这一功能的C++代码: ```cpp #include <iostream> #include <iomanip> // 用于控制浮点数的输出格式 int main() { long long valpai; // 派的总大小 long long m; // 来宾的人数 // 输入派的总大小和来宾的人数 std::cin >> valpai >> m; // 计算每个人分到的派的大小 double pai_per_person = static_cast<double>(valpai) / m; // 输出四舍五入保留三位小数的结果 std::cout << std::fixed << std::setprecision(3) << pai_per_person << std::endl; // 输出不四舍五入保留三位小数的结果 // 首先将结果转换为字符串 std::string result_str = std::to_string(pai_per_person); // 找到小数点的位置 size_t dot_pos = result_str.find('.'); // 截取前4位小数部分(包括小数点) if (dot_pos != std::string::npos && dot_pos + 4 < result_str.length()) { result_str = result_str.substr(0, dot_pos + 4); } // 输出结果 std::cout << result_str << std::endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取派的总大小 `valpai` 和来宾的人数 `m`。 2. 计算每人分得的派的大小:使用 `static_cast<double>` 将 `valpai` 转换为双精度浮点数,然后除以来宾人数 `m`,得到每人分得的派的大小 `pai_per_person`。 3. 输出四舍五入的结果:使用 `std::fixed` 和 `std::setprecision(3)` 控制输出格式,确保输出保留三位小数并四舍五入。 4. 输出不四舍五入的结果: - 将 `pai_per_person` 转换为字符串。 - 找到小数点的位置。 - 截取从开始到小数点后三位的子字符串。 - 输出截取后的字符串。 这样,程序就能够按照要求输出两种不同格式的结果。 [2024-10-20 21:47:23 | AI写代码神器 | 570点数解答]