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

#define MAX_SIZE 100

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

typedef struct { Term terms[MAX_SIZE]; // 项数组 int num_terms; // 项数 } Polynomial;

void init(Polynomial *p); // 初始化多项式 void input(Polynomial *p); // 输入多项式 void add(Polynomial *p1, Polynomial *p2, Polynomial *result); // 多项式相加 void output(Polynomial *p); // 输出多项式

int main() { Polynomial p1, p2, result; init(&p1); init(&p2); init(&result); printf('Please input the first polynomial:\n'); input(&p1); printf('Please input the second polynomial:\n'); input(&p2); add(&p1, &p2, &result); printf('The result of addition is:\n'); output(&result); return 0; }

void init(Polynomial *p) { p->num_terms = 0; }

void input(Polynomial *p) { printf('Please input the number of terms: '); scanf('%d', &p->num_terms); printf('Please input the terms (coef exp): '); for (int i = 0; i < p->num_terms; i++) { scanf('%d %d', &p->terms[i].coef, &p->terms[i].exp); } }

void add(Polynomial *p1, Polynomial *p2, Polynomial *result) { int i = 0, j = 0, k = 0; while (i < p1->num_terms && j < p2->num_terms) { if (p1->terms[i].exp > p2->terms[j].exp) { result->terms[k++] = p1->terms[i++]; } else if (p1->terms[i].exp < p2->terms[j].exp) { result->terms[k++] = p2->terms[j++]; } else { result->terms[k].exp = p1->terms[i].exp; result->terms[k++].coef = p1->terms[i++].coef + p2->terms[j++].coef; } } while (i < p1->num_terms) { result->terms[k++] = p1->terms[i++]; } while (j < p2->num_terms) { result->terms[k++] = p2->terms[j++]; } result->num_terms = k; }

void output(Polynomial *p) { for (int i = 0; i < p->num_terms; i++) { printf('%d %d ', p->terms[i].coef, p->terms[i].exp); } printf('\n'); }

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

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

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