用C语言实现一元多项式的相加
时间: 2024-10-18 21:19:20 浏览: 40
在C语言中,我们可以使用结构体来表示一元多项式,并通过链表或者数组来存储系数。下面是一个简单的例子,我们将创建两个结构体节点来代表多项式的每一项,然后添加它们的系数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式的系数结构体
typedef struct {
double coefficient; // 系数
int exponent; // 指数
} PolynomialTerm;
// 结构体表示多项式
typedef struct {
PolynomialTerm *terms; // 链表头指针
int count; // 项的数量
} Polynomial;
// 添加新项到多项式
void addTerm(Polynomial *poly, double coef, int exp) {
PolynomialTerm *newTerm = (PolynomialTerm *)malloc(sizeof(PolynomialTerm));
newTerm->coefficient = coef;
newTerm->exponent = exp;
if (!poly->count) {
poly->terms = newTerm;
} else {
PolynomialTerm *lastTerm = poly->terms;
while (lastTerm->next) {
lastTerm = lastTerm->next;
}
lastTerm->next = newTerm;
}
poly->count++;
}
// 相加两个多项式
void addPolynomials(Polynomial *dest, const Polynomial *src) {
for (int i = 0; i < src->count; i++) {
addTerm(dest, src->terms[i].coefficient, src->terms[i].exponent);
}
}
// 打印多项式
void printPolynomial(const Polynomial *poly) {
PolynomialTerm *term = poly->terms;
printf("( ");
for (int i = 0; i < poly->count; i++, term++) {
if (i > 0) printf(" + ");
printf("%.2f*x^%d", term->coefficient, term->exponent);
}
printf(" )");
}
int main() {
Polynomial poly1 = {NULL, 0};
Polynomial poly2 = {NULL, 0};
// 添加多项式1的项
addTerm(&poly1, 1.0, 2); // x^2
addTerm(&poly1, 2.0, 1); // 2x
// 添加多项式2的项
addTerm(&poly2, -1.5, 1); // -1.5x
addTerm(&poly2, 0.5, 0); // 0.5
// 相加多项式
addPolynomials(&poly1, &poly2);
// 输出结果
printf("Polynomial 1 + Polynomial 2 = ");
printPolynomial(&poly1);
return 0;
}
```
在这个示例中,我们首先定义了`PolynomialTerm`和`Polynomial`结构,接着实现了添加、相加和打印多项式函数。在`main()`函数中,创建并初始化两个多项式,然后将它们相加并输出结果。
阅读全文