一元多项式加法c语言
时间: 2024-12-06 10:15:39 浏览: 17
一元多项式加法运算
在C语言中,一元多项式的加法通常涉及到实数系数和变量幂的操作。一元多项式可以表示为 `a_n * x^n + a_{n-1} * x^(n-1) + ... + a_1 * x^1 + a_0` 的形式,其中 `a_i` 是系数,`x` 是变量。
对于两个一元多项式 `p(x)` 和 `q(x)` 的加法,你需要逐项相加对应的系数,并将结果存储在一个新的多项式中。下面是一个简单的示例:
```c
#include <stdio.h>
// 定义多项式结构体,包含系数数组和次数
typedef struct {
double coefficients[5]; // 假设最多4次幂
int degree;
} Polynomial;
// 初始化多项式
void init_polynomial(Polynomial* p, double* coeffs, int deg) {
p->coefficients = coeffs;
p->degree = deg;
}
// 加法函数
void add_polynomials(Polynomial* p1, Polynomial* q1, Polynomial* result) {
int max_deg = MAX(p1->degree, q1->degree); // 计算度数较高的多项式
for (int i = 0; i <= max_deg; ++i) {
double sum = p1->coefficients[i] + q1->coefficients[i];
if (sum != 0) { // 只有非零项才保存到新多项式
result->coefficients[i] = sum;
}
}
result->degree = max_deg; // 更新结果多项式的最高次数
}
// 打印多项式
void print_polynomial(Polynomial p) {
printf("Polynomial: ");
for (int i = p.degree; i >= 0; --i) {
printf("%f*x^%d ", p.coefficients[i], i);
}
printf("+ constant term\n");
}
int main() {
double p_coeffs[] = {3.0, 2.0, 1.0, 0.0}; // p(x) = 3x^3 + 2x^2 + x
double q_coeffs[] = {1.0, -1.0, 2.0}; // q(x) = x^2 - x + 2
Polynomial p, q, r;
init_polynomial(&p, p_coeffs, 3);
init_polynomial(&q, q_coeffs, 2);
add_polynomials(&p, &q, &r);
print_polynomial(r); // 输出两多项式的和
return 0;
}
```
在这个例子中,我们首先定义了一个多项式结构体,包含了系数数组和度数信息。然后创建了初始化、加法和打印多项式的方法。在`main()`函数中,创建了两个多项式并计算它们的和,最后打印出结果。
阅读全文