用c语言写一元多项式相加,包含以下部分,一元多项式的定义,创建一元多项式,一元多项式相加,打印一元多项式,主函数
时间: 2024-10-16 08:16:06 浏览: 32
Add_Multiply_Polyn.rar_一元多项式_一元多项式相加
在 C 语言中,我们可以使用结构体来表示一元多项式,并通过指针操作来实现多项式的相加和打印。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式结构体
typedef struct {
int coef; // 系数
int exp; // 指数
} Term;
typedef struct {
Term* coefficients; // 多项式的系数数组
int degree; // 最高指数
int size; // 当前元素数量
} Polynomial;
// 创建一个新的多项式并分配内存
Polynomial* create_polynomial(int size) {
Polynomial* poly = (Polynomial*) malloc(sizeof(Polynomial));
poly->coefficients = (Term*)malloc(size * sizeof(Term));
poly->degree = -1;
poly->size = size;
return poly;
}
// 添加一个新项到多项式
void add_term(Polynomial* poly, int coef, int exp) {
if (poly-1) {
poly->degree = exp;
}
poly->coefficients[poly->size].coef = coef;
poly->coefficients[poly->size].exp = exp;
poly->size++;
}
// 合并两个多项式
void merge_poly(Polynomial* dest, Polynomial* src) {
for (int i = 0; i <= src->degree; ++i) {
if (src->coefficients[i].coef != 0) {
add_term(dest, src->coefficients[i].coef, i);
}
}
}
// 打印多项式
void print_polynomial(Polynomial* poly) {
printf("多项式:");
for (int i = 0; i <= poly->degree; ++i) {
if (poly->coefficients[i].coef != 0) {
printf("%d*x^%d + ", poly->coefficients[i].coef, i);
} else if (i > 0) {
printf("x^%d + ", i);
}
}
printf("0\n"); // 输出常数项
}
// 主函数
int main() {
Polynomial* p1 = create_polynomial(5); // 创建一个大小为5的多项式
Polynomial* p2 = create_polynomial(5);
// 添加一些项到p1
add_term(p1, 2, 1);
add_term(p1, 3, 2);
add_term(p1, 1, 0); // 常数项
// 添加一些项到p2
add_term(p2, 4, 1);
add_term(p2, 1, 3);
// 合并多项式
merge_poly(p1, p2);
// 打印结果
print_polynomial(p1);
// 清理内存
free(p1->coefficients);
free(p1);
free(p2);
return 0;
}
```
在这个例子中,我们首先定义了多项式的结构,然后分别实现了创建、添加项、合并和打印多项式的方法。在主函数中,我们创建两个多项式,添加各自的项,然后将它们合并并打印。
阅读全文