C语言实现一元多项式加法运算
#include <stdio.h> #include <stdlib.h>
#define MAX_TERMS 100
typedef struct { float coef; // 系数 int expon; // 指数 } term;
void attach(float coef, int expon, term *ptr) { ptr->coef = coef; ptr->expon = expon; }
void poly_add(term *a, int na, term *b, int nb, term *c, int *nc) { int i, j, sum; *nc = 0; i = j = 0; while (i < na && j < nb) { if (a[i].expon == b[j].expon) { sum = a[i].coef + b[j].coef; if (sum) attach(sum, a[i].expon, &c[(*nc)++]); i++; j++; } else if (a[i].expon > b[j].expon) { attach(a[i].coef, a[i].expon, &c[(*nc)++]); i++; } else { attach(b[j].coef, b[j].expon, &c[(*nc)++]); j++; } } for (; i < na; i++) attach(a[i].coef, a[i].expon, &c[(*nc)++]); for (; j < nb; j++) attach(b[j].coef, b[j].expon, &c[(*nc)++]); }
void read_poly(term *terms, int *n) { printf('请输入多项式的项数:'); scanf('%d', n); printf('请输入多项式的系数和指数,以空格分隔:\n'); for (int i = 0; i < *n; i++) { scanf('%f %d', &terms[i].coef, &terms[i].expon); } }
void print_poly(term *terms, int n) { printf('多项式为:'); for (int i = 0; i < n; i++) { if (terms[i].expon == 0) printf('%.2f', terms[i].coef); else if (terms[i].expon == 1) printf('%.2fx', terms[i].coef); else printf('%.2fx^%d', terms[i].coef, terms[i].expon); if (i < n - 1) printf(' + '); } printf('\n'); }
int main() { term a[MAX_TERMS], b[MAX_TERMS], c[MAX_TERMS]; int na, nb, nc;
read_poly(a, &na);
print_poly(a, na);
read_poly(b, &nb);
print_poly(b, nb);
poly_add(a, na, b, nb, c, &nc);
print_poly(c, nc);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/lRG6 著作权归作者所有。请勿转载和采集!