用c语言struct写一个多项式求和
时间: 2024-05-03 13:21:16 浏览: 9
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_TERMS 100
typedef struct {
int coef; // 系数
int exp; // 指数
} Term;
typedef struct {
Term terms[MAX_TERMS];
int num_terms;
} Polynomial;
Polynomial read_poly();
void print_poly(Polynomial poly);
Polynomial add_poly(Polynomial poly1, Polynomial poly2);
int main() {
Polynomial poly1, poly2, sum;
printf("输入第1个多项式:\n");
poly1 = read_poly();
printf("第1个多项式:");
print_poly(poly1);
printf("输入第2个多项式:\n");
poly2 = read_poly();
printf("第2个多项式:");
print_poly(poly2);
sum = add_poly(poly1, poly2);
printf("两个多项式的和为:");
print_poly(sum);
return 0;
}
Polynomial read_poly() {
Polynomial poly;
int i, coef, exp;
printf("输入多项式的项数:");
scanf("%d", &poly.num_terms);
printf("输入多项式的各项:\n");
for (i = 0; i < poly.num_terms; i++) {
printf("第%d项系数和指数:", i + 1);
scanf("%d%d", &coef, &exp);
poly.terms[i].coef = coef;
poly.terms[i].exp = exp;
}
return poly;
}
void print_poly(Polynomial poly) {
int i;
for (i = 0; i < poly.num_terms; i++) {
printf("%+dx^%d", poly.terms[i].coef, poly.terms[i].exp);
}
printf("\n");
}
Polynomial add_poly(Polynomial poly1, Polynomial poly2) {
Polynomial sum;
int i, j, k;
i = j = k = 0;
while (i < poly1.num_terms && j < poly2.num_terms) {
if (poly1.terms[i].exp == poly2.terms[j].exp) {
sum.terms[k].coef = poly1.terms[i].coef + poly2.terms[j].coef;
sum.terms[k].exp = poly1.terms[i].exp;
i++;
j++;
k++;
} else if (poly1.terms[i].exp > poly2.terms[j].exp) {
sum.terms[k].coef = poly1.terms[i].coef;
sum.terms[k].exp = poly1.terms[i].exp;
i++;
k++;
} else {
sum.terms[k].coef = poly2.terms[j].coef;
sum.terms[k].exp = poly2.terms[j].exp;
j++;
k++;
}
}
while (i < poly1.num_terms) {
sum.terms[k].coef = poly1.terms[i].coef;
sum.terms[k].exp = poly1.terms[i].exp;
i++;
k++;
}
while (j < poly2.num_terms) {
sum.terms[k].coef = poly2.terms[j].coef;
sum.terms[k].exp = poly2.terms[j].exp;
j++;
k++;
}
sum.num_terms = k;
return sum;
}
```