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

#define MAX_SIZE 100

typedef struct { float coef; //系数 int exp; //指数 } Term;

typedef struct { Term term[MAX_SIZE]; int count; //项数 } Polynomial;

//函数定义 void read_polynomial(Polynomial *p); //读入多项式 void print_polynomial(Polynomial p); //输出多项式 void add_polynomial(Polynomial p1, Polynomial p2, Polynomial *p3); //多项式加法

int main() { Polynomial p1, p2, p3; printf('请输入第一个多项式:\n'); read_polynomial(&p1); printf('第一个多项式:'); print_polynomial(p1); printf('\n请输入第二个多项式:\n'); read_polynomial(&p2); printf('第二个多项式:'); print_polynomial(p2); printf('\n两个多项式相加的结果:'); add_polynomial(p1, p2, &p3); print_polynomial(p3); return 0; }

void read_polynomial(Polynomial *p) { p->count = 0; printf('请输入多项式的项数:'); scanf('%d', &p->count); printf('请输入多项式各项的系数和指数:\n'); for (int i = 0; i < p->count; i++) { scanf('%f%d', &p->term[i].coef, &p->term[i].exp); } }

void print_polynomial(Polynomial p) { for (int i = 0; i < p.count; i++) { if (i != 0 && p.term[i].coef > 0) { printf('+'); } printf('%.2f', p.term[i].coef); if (p.term[i].exp == 1) { printf('x'); } else if (p.term[i].exp != 0) { printf('x^%d', p.term[i].exp); } } }

void add_polynomial(Polynomial p1, Polynomial p2, Polynomial *p3) { int i = 0, j = 0, k = 0; while (i < p1.count && j < p2.count) { if (p1.term[i].exp == p2.term[j].exp) { p3->term[k].coef = p1.term[i].coef + p2.term[j].coef; p3->term[k].exp = p1.term[i].exp; i++; j++; } else if (p1.term[i].exp > p2.term[j].exp) { p3->term[k].coef = p1.term[i].coef; p3->term[k].exp = p1.term[i].exp; i++; } else { p3->term[k].coef = p2.term[j].coef; p3->term[k].exp = p2.term[j].exp; j++; } k++; } while (i < p1.count) { p3->term[k].coef = p1.term[i].coef; p3->term[k].exp = p1.term[i].exp; i++; k++; } while (j < p2.count) { p3->term[k].coef = p2.term[j].coef; p3->term[k].exp = p2.term[j].exp; j++; k++; } p3->count = k; }

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

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

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