用C语言 编写程序实现一元多项式的创建以及两个一元多项式相加和相乘的操作。
时间: 2024-12-04 20:27:03 浏览: 63
在C语言中,我们可以使用结构体和指针来实现一元多项式的操作。首先,我们定义一个`Polynomial`结构体,包含系数数组和次数:
```c
typedef struct {
int coefficients[10]; // 预计最多有10项
int degree; // 一元多项式的最高次幂
} Polynomial;
// 创建一个一元多项式
void create_polynomial(Polynomial* poly, int coefficients[], int num_terms) {
poly->degree = num_terms - 1;
for (int i = 0; i <= num_terms; i++) {
poly->coefficients[i] = coefficients[i];
}
}
// 相加两个多项式
void add_poly(Polynomial* result, const Polynomial* poly1, const Polynomial* poly2) {
if (poly1->degree != poly2->degree) {
printf("错误:两个多项式的次数不同,无法相加。\n");
return;
}
result->degree = poly1->degree;
for (int i = 0; i <= poly1->degree; i++) {
result->coefficients[i] = poly1->coefficients[i] + poly2->coefficients[i];
}
}
// 相乘两个多项式
void multiply_poly(Polynomial* result, const Polynomial* poly1, const Polynomial* poly2) {
int new_degree = poly1->degree + poly2->degree;
result->degree = new_degree;
result->coefficients[0] = 0; // 初始化结果多项式的常数项
for (int i = 0; i <= poly1->degree; i++) {
for (int j = 0; j <= poly2->degree; j++) {
result->coefficients[i + j] += poly1->coefficients[i] * poly2->coefficients[j];
}
}
}
```
然后你可以像这样使用这个结构:
```c
int main() {
Polynomial poly1, poly2, sum, product;
// 创建并初始化多项式
create_polynomial(&poly1, {1, 2, 3}, 3);
create_polynomial(&poly2, {4, 5, 6}, 3);
// 打印多项式
print_polynomial(&poly1); // 输出类似 "1x^2 + 2x + 3"
// 相加和相乘
add_poly(&sum, &poly1, &poly2);
multiply_poly(&product, &poly1, &poly2);
// 打印结果
print_polynomial(&sum); // 输出相加后的多项式
print_polynomial(&product); // 输出相乘后的多项式
return 0;
}
```
请注意,这里仅实现了基础功能,并未处理一些特殊情况,例如处理输入数据的有效性、内存分配等。在实际项目中,你需要添加适当的错误检查。
阅读全文
相关推荐


















