用C语言、数据结构写一个多项式运算的程序,实现多项式的表示和相加运算。多项式由一系列系数和指数组成,例如 P(x) = 3x^2 + 5x + 6。要求能够表示多项式,并实现两个多项式的相加运算。给出其可实现的代码
时间: 2024-10-21 12:07:27 浏览: 50
在C语言中,我们可以使用结构体来表示多项式,并结合数组来存储系数和指数。这里是一个简单的实现,包括多项式的表示以及两个多项式的相加:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式结构体
typedef struct {
int degree; // 指数的最大值
double coefficients[100]; // 系数数组,大小足够处理大部分多项式
} Polynomial;
// 初始化多项式
Polynomial init_polynomial() {
Polynomial poly;
poly.degree = -1; // 初始时没有项,degree为-1
return poly;
}
// 添加多项式项
void add_term(Polynomial* poly, double coefficient, int exponent) {
if (poly->degree == exponent) {
poly->coefficients[poly->degree] += coefficient;
} else if (poly->degree < exponent) {
poly->degree = exponent;
for (int i = poly->degree; i >= 0; i--) {
poly->coefficients[i + 1] = poly->coefficients[i];
}
poly->coefficients[0] = coefficient;
} else {
poly->coefficients[exponent] += coefficient;
}
}
// 相加两个多项式
void add_poly(Polynomial* poly1, Polynomial* poly2, Polynomial* result) {
Polynomial temp = *init_polynomial();
for (int i = 0; i <= poly1->degree || i <= poly2->degree; i++) {
double coeff1 = poly1->coefficients[i] ? poly1->coefficients[i] : 0;
double coeff2 = poly2->coefficients[i] ? poly2->coefficients[i] : 0;
temp.add_term(&temp, coeff1 + coeff2, i);
}
*result = temp; // 将临时结果赋给结果多项式
}
// 打印多项式
void print_polynomial(const Polynomial& poly) {
printf("P(x) = ");
for (int i = 0; i <= poly.degree; i++) {
if (poly.coefficients[i]) {
printf("%.2fx^%d + ", poly.coefficients[i], i);
}
}
printf("0\n");
}
int main() {
Polynomial p1 = init_polynomial();
Polynomial p2 = init_polynomial();
// 添加多项式项示例
add_term(&p1, 3, 2); // 3x^2
add_term(&p1, 5, 1); // 5x
add_term(&p2, 2, 2); // 2x^2
Polynomial sum;
add_poly(&p1, &p2, &sum);
printf("First polynomial:\n");
print_polynomial(p1);
printf("Second polynomial:\n");
print_polynomial(p2);
printf("Sum of polynomials:\n");
print_polynomial(sum);
return 0;
}
```
这个代码实现了多项式的初始化、添加项、相加和打印功能。你可以根据需要修改这个基础框架,比如增加输入函数来让用户直接输入多项式。请注意,这个实现假设了多项式的最高次幂不会超过100。
阅读全文