在计算机科学和工程计算中,C++多项式运算是一个基础而重要的课题。无论是信号处理、数值分析还是密码学,都离不开对多项式的操作。本文将手把手教你如何用C++实现多项式的基本运算——加法与乘法,即使你是编程小白,也能轻松理解并上手实践。

多项式是由变量(如 x)和系数通过加法、减法、乘法以及非负整数次幂组成的代数表达式。例如:
3x² + 5x - 2
在这个例子中,系数分别是 3、5 和 -2,对应的指数是 2、1 和 0。我们可以用一个数组或向量来存储这些系数,从而在程序中表示一个多项式。
为了简化实现,我们使用 C++ 标准库中的 std::vector<double> 来存储多项式的系数。索引 i 对应 x 的 i 次幂的系数。例如,多项式 2x³ + 0x² + 4x + 1 可表示为:
std::vector<double> poly = {1, 4, 0, 2};// 索引0 → 常数项 1 (x⁰)// 索引1 → 4 (x¹)// 索引2 → 0 (x²)// 索引3 → 2 (x³)
两个多项式相加,只需将对应指数的系数相加即可。如果两个多项式长度不同,较短的那个可以视为高位补 0。
#include <iostream>#include <vector>using namespace std;vector<double> addPolynomials(const vector<double>& a, const vector<double>& b) { size_t maxSize = max(a.size(), b.size()); vector<double> result(maxSize, 0.0); for (size_t i = 0; i < maxSize; ++i) { double coefA = (i < a.size()) ? a[i] : 0.0; double coefB = (i < b.size()) ? b[i] : 0.0; result[i] = coefA + coefB; } return result;}
多项式乘法稍微复杂一些。若第一个多项式最高次为 m,第二个为 n,则结果最高次为 m+n。对于每一对 (i, j),我们将 a[i] * b[j] 累加到 result[i+j] 中。
vector<double> multiplyPolynomials(const vector<double>& a, const vector<double>& b) { vector<double> result(a.size() + b.size() - 1, 0.0); for (size_t i = 0; i < a.size(); ++i) { for (size_t j = 0; j < b.size(); ++j) { result[i + j] += a[i] * b[j]; } } return result;}
下面是一个完整的可运行程序,演示了如何使用上述函数进行多项式加法乘法:
#include <iostream>#include <vector>#include <algorithm>using namespace std;// 此处插入 addPolynomials 和 multiplyPolynomials 函数void printPolynomial(const vector<double>& p) { bool first = true; for (int i = p.size() - 1; i >= 0; --i) { if (p[i] == 0) continue; if (!first && p[i] > 0) cout << " + "; else if (!first) cout << " - "; else if (p[i] < 0) cout << "-"; double absCoef = abs(p[i]); if (i == 0 || absCoef != 1) cout << absCoef; if (i >= 1) cout << "x"; if (i >= 2) cout << "^" << i; first = false; } if (first) cout << "0"; cout << endl;}int main() { vector<double> p1 = {-2, 5, 3}; // 3x² + 5x - 2 vector<double> p2 = {1, 2}; // 2x + 1 cout << "多项式1: "; printPolynomial(p1); cout << "多项式2: "; printPolynomial(p2); auto sum = addPolynomials(p1, p2); cout << "\n加法结果: "; printPolynomial(sum); auto product = multiplyPolynomials(p1, p2); cout << "乘法结果: "; printPolynomial(product); return 0;}
运行结果将输出:
多项式1: 3x^2 + 5x - 2多项式2: 2x + 1加法结果: 3x^2 + 7x - 1乘法结果: 6x^3 + 13x^2 + x - 2
通过本教程,你已经掌握了如何用 C++ 实现基本的多项式运算。这种基于 vector 的方法简单直观,适合初学者理解。如果你希望深入学习,可以考虑以下方向:
Polynomial 类,支持运算符重载(如 +、*)掌握这些基础后,你就能应对更复杂的数学建模任务。希望这篇C++数据结构教程能为你打开算法与数值计算的大门!
本文由主机测评网于2025-12-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123636.html