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

C++入门作业:数学公式转代码结果不符问题排查

问题分析与修正

你的代码主要有两个关键错误导致结果偏差,我们一步步来拆解:

1. 运算符优先级与括号错误

原数学公式中是 10π/(a+b),但你的代码写成了:

(10*3.1416/a+b)

由于C++中除法/的优先级高于加法+,这段代码会先计算10*3.1416/a,再加上b,完全违背了原公式的运算逻辑。正确的写法应该给a+b加上括号,确保先计算和再做除法:

(10*3.1416)/(a+b)

2. (可选但建议)使用更精确的π值

你手动用3.1416近似π,其实C++标准库<cmath>提供了M_PI宏(注意:部分编译器需要在包含<cmath>前定义#define _USE_MATH_DEFINES才能启用),它的精度更高,能减少计算误差。

修正后的完整代码

#include <iostream>
#include <cmath>

#define _USE_MATH_DEFINES  // 启用M_PI的定义(针对MSVC等编译器)

using namespace std;

int main() {
    float x, a, b, C;
    // 移除未使用的y、z变量
    
    cout << "Input the a-value: ";
    cin >> a;
    cout << "\nInput the b-value: ";
    cin >> b;
    cout << "\nInput the C-value (in degrees): ";
    cin >> C;
    
    // 将角度转换为弧度
    C = C * M_PI / 180.0;
    
    // 按照正确的公式计算
    x = (10 * M_PI / (a + b)) * pow(sin(C), 3) + 3 * log(a) * tan(C);
    
    cout << "\nThe value of x is " << x << endl;
    return 0;
}

验证结果

当输入a=5、b=10、C=15时,修正后的代码运行结果约为1.33005,和你用科学计算器得到的结果一致。

另外补充两个小建议:

  • 记得包含必要的头文件(你原来的代码没写#include <iostream>和#include <cmath>,实际编译会报错)
  • 可以添加输入合法性检查(比如确保a、b不为0,a为正数等),避免运行时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:07:44