You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写C++的mul_div函数?请校验现有代码是否符合功能要求

你的mul_div函数逻辑没问题,但可以更健壮!

嘿,先给你吃个定心丸:你写的代码核心逻辑是完全符合题目要求的!让我给你拆解下原因,再补充几个实用的优化点:

为什么你的代码是对的?

你先把两个参数的原始值用来计算乘积和商,并存到临时变量mul和div里,之后再把计算结果分别赋值回x和y。这种写法完美避开了“修改其中一个参数后影响另一个计算”的坑——完全符合题目里“用两个参数的原始值完成乘除操作”的要求。

需要注意的潜在问题

虽然逻辑正确,但实际使用中还有两个点要留意:

  • 除以零的风险:如果传入的y是0.0,x/y会产生浮点数除以零的错误(C++里通常会得到inf或nan,程序可能不崩溃但结果完全不符合预期)。如果需要代码更严谨,可以加个参数校验:
    if (y == 0.0) {
        // 这里可以抛出异常、打印错误信息或做其他自定义处理
        throw std::invalid_argument("第二个参数不能为0,无法执行除法");
    }
    
  • 浮点数精度限制:double类型的精度虽然很高,但面对极端数值(比如极大/极小的数)时,乘法可能出现溢出/下溢,除法也会有精度损失。如果是对精度要求极高的场景,可能需要额外的数值处理逻辑。

优化后的示例代码

这里给你一个加了异常处理的健壮版本:

#include <stdexcept>

void mul_div(double &x, double &y) {
    // 先检查除数是否为0,避免非法运算
    if (y == 0.0) {
        throw std::invalid_argument("Division by zero is not allowed in mul_div");
    }
    // 用const修饰临时变量,强调不会被修改
    const double product = x * y;
    const double quotient = x / y;
    // 赋值回原参数
    x = product;
    y = quotient;
}

总结

如果题目没有要求处理异常或特殊数值场景,你的原始代码就已经完全满足需求了!上面的优化只是让代码在实际项目中更可靠。

内容的提问来源于stack exchange,提问作者EJ_95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:29:39