7-2 c语言求两个一元多项式的和
时间: 2024-09-30 15:05:33 浏览: 68
在C语言中,如果你需要求解两个一元多项式(即多项式函数,如ax^n + bx^(n-1) + ... + c)的和,可以创建一个结构体表示每个多项式,包含系数数组和幂次信息。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式结构
typedef struct {
int degree; // 次数
double* coefficients; // 系数数组
} Polynomial;
// 动态分配多项式内存
Polynomial* create_polynomial(int degree) {
Polynomial* poly = (Polynomial*)malloc(sizeof(Polynomial));
poly->degree = degree;
poly->coefficients = (double*)malloc(degree * sizeof(double));
return poly;
}
// 分配空间并设置多项式系数
void set_coefficient(Polynomial* poly, int exponent, double value) {
poly->coefficients[exponent] = value;
}
// 求和函数
Polynomial* add_polynomials(Polynomial* poly1, Polynomial* poly2) {
if (poly1->degree != poly2->degree) {
printf("两个多项式的次数不相等,无法直接相加。\n");
return NULL;
}
Polynomial* sum_poly = create_polynomial(poly1->degree);
for (int i = 0; i <= poly1->degree; ++i) {
sum_poly->coefficients[i] = poly1->coefficients[i] + poly2->coefficients[i];
}
return sum_poly;
}
// 打印多项式
void print_polynomial(Polynomial* poly) {
for (int i = 0; i <= poly->degree; ++i) {
if (poly->coefficients[i] != 0)
printf("%d: %.2f ", i, poly->coefficients[i]);
}
printf("\n");
}
int main() {
Polynomial* p1 = create_polynomial(3);
Polynomial* p2 = create_polynomial(3);
// 设置第一个多项式的系数
set_coefficient(p1, 2, 5); // a x^2
set_coefficient(p1, 1, 3); // b x
set_coefficient(p1, 0, 1); // c
// 设置第二个多项式的系数
set_coefficient(p2, 2, 2); // d x^2
set_coefficient(p2, 1, -4); // e x
set_coefficient(p2, 0, 7); // f
Polynomial* result = add_polynomials(p1, p2);
if (result != NULL) {
printf("两多项式之和为:\n");
print_polynomial(result);
free(result);
}
// 清理内存
free(p1);
free(p2);
return 0;
}
```
在这个例子中,`main` 函数中首先创建了两个多项式 `p1` 和 `p2`,然后设置了它们各自的系数。接着通过 `add_polynomials` 函数计算它们的和,并打印出来。注意,这个例子假设两个多项式的最高次数是一样的,如果不是,则需要先检查能否相加。
阅读全文