用c语言线性表实现一元多项式加法运算,以(0,0)结束
时间: 2023-06-01 16:02:54 浏览: 136
以下是一元多项式加法运算的C语言代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_TERM 100 // 多项式的最大项数
typedef struct {
float coef; // 系数
int expn; // 指数
} term;
typedef struct {
term data[MAX_TERM];
int len;
} polynomial;
void create_polynomial(polynomial *p) { // 创建多项式
printf("请输入多项式的项数:");
scanf("%d", &p->len);
for (int i = 0; i < p->len; ++i) {
printf("请输入第%d项的系数和指数:", i + 1);
scanf("%f%d", &p->data[i].coef, &p->data[i].expn);
}
}
void print_polynomial(polynomial p) { // 输出多项式
for (int i = 0; i < p.len; ++i) {
if (p.data[i].coef > 0 && i > 0) {
printf("+");
}
printf("%.2fx^%d", p.data[i].coef, p.data[i].expn);
}
printf("\n");
}
polynomial add_polynomial(polynomial p1, polynomial p2) { // 多项式加法
polynomial result = {0};
int i = 0, j = 0, k = 0;
while (i < p1.len && j < p2.len) {
if (p1.data[i].expn > p2.data[j].expn) {
result.data[k++] = p1.data[i++];
} else if (p1.data[i].expn < p2.data[j].expn) {
result.data[k++] = p2.data[j++];
} else {
float sum = p1.data[i].coef + p2.data[j].coef;
if (sum != 0) {
result.data[k].coef = sum;
result.data[k++].expn = p1.data[i].expn;
}
++i;
++j;
}
}
while (i < p1.len) {
result.data[k++] = p1.data[i++];
}
while (j < p2.len) {
result.data[k++] = p2.data[j++];
}
result.len = k;
return result;
}
int main() {
polynomial p1 = {0}, p2 = {0}, result = {0};
printf("请输入第一个多项式:\n");
create_polynomial(&p1);
printf("请输入第二个多项式:\n");
create_polynomial(&p2);
printf("第一个多项式为:");
print_polynomial(p1);
printf("第二个多项式为:");
print_polynomial(p2);
result = add_polynomial(p1, p2);
printf("两个多项式相加的结果为:");
print_polynomial(result);
return 0;
}
在代码中,我们首先定义了一个term结构体表示多项式的一项,其中包括系数和指数两个成员变量。然后定义了一个polynomial结构体表示多项式,其中包括一个term类型的数组和一个表示多项式长度的len变量。
接着,我们实现了三个函数:create_polynomial用于创建多项式,print_polynomial用于输出多项式,add_polynomial用于实现多项式加法。
在main函数中,我们先分别创建了两个多项式p1和p2,然后输出它们,再调用add_polynomial函数求出它们的和result,并输出结果。