#include <stdio.h> #include <stdlib.h>

#define MAX_SIZE 100

typedef struct { float coef; // 系数 int expn; // 指数 } term;

typedef struct { term data[MAX_SIZE]; // 存储一元多项式的数组 int length; // 一元多项式的项数 } polynomial;

// 输入一元多项式 void input_polynomial(polynomial *p) { printf("请输入一元多项式的项数:\n"); scanf("%d", &p->length); printf("请输入每一项的系数和指数:\n"); for (int i = 0; i < p->length; i++) { scanf("%f%d", &p->data[i].coef, &p->data[i].expn); } }

// 输出一元多项式 void output_polynomial(polynomial p) { for (int i = 0; i < p.length; i++) { printf("%.2fx^%d", p.data[i].coef, p.data[i].expn); if (i < p.length - 1) { printf(" + "); } } printf("\n"); }

// 一元多项式加法 polynomial add_polynomial(polynomial p1, polynomial p2) { polynomial p; int i = 0, j = 0, k = 0; while (i < p1.length && j < p2.length) { if (p1.data[i].expn == p2.data[j].expn) { if (p1.data[i].coef + p2.data[j].coef != 0) { p.data[k].coef = p1.data[i].coef + p2.data[j].coef; p.data[k].expn = p1.data[i].expn; k++; } i++; j++; } else if (p1.data[i].expn > p2.data[j].expn) { p.data[k].coef = p1.data[i].coef; p.data[k].expn = p1.data[i].expn; i++; k++; } else { p.data[k].coef = p2.data[j].coef; p.data[k].expn = p2.data[j].expn; j++; k++; } } while (i < p1.length) { p.data[k].coef = p1.data[i].coef; p.data[k].expn = p1.data[i].expn; i++; k++; } while (j < p2.length) { p.data[k].coef = p2.data[j].coef; p.data[k].expn = p2.data[j].expn; j++; k++; } p.length = k; return p; }

int main() { polynomial p1, p2, p3; printf("请输入第一个一元多项式:\n"); input_polynomial(&p1); printf("第一个一元多项式为:"); output_polynomial(p1); printf("请输入第二个一元多项式:\n"); input_polynomial(&p2); printf("第二个一元多项式为:"); output_polynomial(p2); p3 = add_polynomial(p1, p2); printf("两个一元多项式相加的结果为:"); output_polynomial(p3); return 0; }

C语言实现一元多项式加法运算

原文地址: https://www.cveoy.top/t/topic/lRHf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录