使用C语言设计一个算法,实现两个一元n次多项式相加。列如,有两个一元二次多项式A(x)和B(x): A(x)=5x³+3x+6 B(x)=4x²+7x-1 相加后得到C(x)=5x³+4x+10x+5
时间: 2023-04-06 11:01:18 浏览: 96
可以使用以下的 C 语言代码实现两个一元 n 次多项式相加:
```
#include <stdio.h>
#define MAX_DEGREE 100
typedef struct {
int degree;
int coef[MAX_DEGREE + 1];
} Polynomial;
void add_polynomial(const Polynomial *a, const Polynomial *b, Polynomial *c) {
int i;
c->degree = a->degree > b->degree ? a->degree : b->degree;
for (i = 0; i <= c->degree; i++) {
c->coef[i] = a->coef[i] + b->coef[i];
}
}
void print_polynomial(const Polynomial *p) {
int i;
for (i = p->degree; i >= 0; i--) {
if (p->coef[i] != 0) {
if (i == p->degree) {
printf("%dx^%d", p->coef[i], i);
} else if (i == 1) {
printf("%+dx", p->coef[i]);
} else {
printf("%+dx^%d", p->coef[i], i);
}
}
}
printf("\n");
}
int main() {
Polynomial a = {3, {5, 0, 3, 6}};
Polynomial b = {2, {4, 7, -1}};
Polynomial c = {0, {0}};
add_polynomial(&a, &b, &c);
print_polynomial(&c);
return 0;
}
```
在这个代码中,我们定义了一个结构体 `Polynomial`,用来表示一个一元多项式。其中,`degree` 表示多项式的最高次数,`coef` 数组表示多项式各项的系数。我们还定义了两个函数,`add_polynomial` 用来实现两个多项式相加,`print_polynomial` 用来打印一个多项式。
在 `main` 函数中,我们定义了两个一元二次多项式 `a` 和 `b`,并将它们相加得到多项式 `c`。最后,我们打印出多项式 `c`。
对于上面的例子,程序的输出应该是:
```
5x^3+4x^2+10x+5
```
阅读全文