C语言实现一元多项式加法运算
#include <stdio.h> #include <stdlib.h>
#define MAX_TERMS 100
typedef struct { float coef; // 系数 int exp; // 指数 } Term;
void read_poly(Term *p, int *np) { printf("请输入多项式的项数:"); scanf("%d", np);
for (int i = 0; i < *np; i++) {
printf("请输入第 %d 项的系数和指数:", i + 1);
scanf("%f %d", &p[i].coef, &p[i].exp);
}
}
void print_poly(Term *p, int np) { for (int i = 0; i < np; i++) { if (i == 0) { if (p[i].coef >= 0) { printf("%.2fx^%d", p[i].coef, p[i].exp); } else { printf("- %.2fx^%d", -p[i].coef, p[i].exp); } } else { if (p[i].coef >= 0) { printf(" + %.2fx^%d", p[i].coef, p[i].exp); } else { printf(" - %.2fx^%d", -p[i].coef, p[i].exp); } } } printf("\n"); }
void add_poly(Term *p1, int np1, Term *p2, int np2, Term *p3, int *np3) { int i = 0, j = 0, k = 0; while (i < np1 && j < np2) { if (p1[i].exp == p2[j].exp) { float sum = p1[i].coef + p2[j].coef; if (sum != 0) { p3[k].coef = sum; p3[k].exp = p1[i].exp; k++; } i++; j++; } else if (p1[i].exp > p2[j].exp) { p3[k].coef = p1[i].coef; p3[k].exp = p1[i].exp; i++; k++; } else { p3[k].coef = p2[j].coef; p3[k].exp = p2[j].exp; j++; k++; } } while (i < np1) { p3[k].coef = p1[i].coef; p3[k].exp = p1[i].exp; i++; k++; } while (j < np2) { p3[k].coef = p2[j].coef; p3[k].exp = p2[j].exp; j++; k++; } *np3 = k; }
int main() { Term poly1[MAX_TERMS], poly2[MAX_TERMS], poly3[MAX_TERMS]; int n1, n2, n3;
read_poly(poly1, &n1);
printf("多项式1:");
print_poly(poly1, n1);
read_poly(poly2, &n2);
printf("多项式2:");
print_poly(poly2, n2);
add_poly(poly1, n1, poly2, n2, poly3, &n3);
printf("多项式1 + 多项式2 = ");
print_poly(poly3, n3);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/lRHe 著作权归作者所有。请勿转载和采集!