C语言实现一元多项式加法运算
#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'); }
原文地址: https://www.cveoy.top/t/topic/lRG5 著作权归作者所有。请勿转载和采集!