如何在C++中正确实现ax²+bx+c二次多项式计算,解决输出不符问题
代码问题分析与修正方案
存在的问题
- 公式逻辑完全不符:目标是计算二次多项式
a*x² + b*x + c,你的代码错误将a*x与b*x求和后再乘2的平方,和要求的计算逻辑完全不匹配,且错误调用pow(2,2)计算2的平方,而非x的平方。 - 语法缺失:C++中表达式和函数调用之间需要显式添加乘号
*,你漏写了(a * x + b * x)和pow之间的乘号,属于语法错误。 - 运算顺序错误:额外添加的括号改变了运算优先级,和目标公式的运算顺序完全不一致。
手动验证正确计算逻辑
给定赋值a=2, b=2, c=4, x=2,代入公式计算:
计算过程:
2*(2²) + 2*2 + 4 = 2*4 +4 +4 = 16,和示例输出一致。
修正后的代码
两种实现方式可选:
方式1:使用pow函数实现(符合题目要求用数学库的要求)
#include<iostream> #include <cmath> int main(void) { int a = 2; int b = 2; int c = 4; int x = 2; double result; // 按公式写运算逻辑:a乘以x的平方,加b乘以x,加c result = a * pow(x, 2) + b * x + c; std::cout << result; return 0; }
方式2:直接用乘法计算x的平方(更高效,无浮点数精度问题)
直接将result赋值行替换为以下代码即可:
result = a * x * x + b * x + c;
内容的提问来源于stack exchange,提问作者Julian Williams
相关产品推荐
相关产品推荐

