多项表达式的相加的代码c语言
时间: 2023-06-18 14:07:54 浏览: 155
以下是 C 语言中实现多项式相加的代码示例:
```c
#include <stdio.h>
#define MAX_TERMS 100
typedef struct {
int coef; // 系数
int expon; // 指数
} polynomial;
void poly_add(polynomial[], int, polynomial[], int, polynomial[], int *);
int main() {
polynomial terms_1[MAX_TERMS], terms_2[MAX_TERMS], terms_sum[MAX_TERMS];
int n_1, n_2, n_sum;
// 输入第一个多项式
printf("Enter the number of terms in polynomial 1: ");
scanf("%d", &n_1);
printf("Enter the coefficients and exponents of each term in polynomial 1:\n");
for (int i = 0; i < n_1; i++) {
printf("Term %d: ", i+1);
scanf("%d%d", &terms_1[i].coef, &terms_1[i].expon);
}
// 输入第二个多项式
printf("\nEnter the number of terms in polynomial 2: ");
scanf("%d", &n_2);
printf("Enter the coefficients and exponents of each term in polynomial 2:\n");
for (int i = 0; i < n_2; i++) {
printf("Term %d: ", i+1);
scanf("%d%d", &terms_2[i].coef, &terms_2[i].expon);
}
// 调用函数计算和
poly_add(terms_1, n_1, terms_2, n_2, terms_sum, &n_sum);
// 输出结果
printf("\nThe sum of the two polynomials is:\n");
for (int i = 0; i < n_sum; i++) {
printf("%dX^%d ", terms_sum[i].coef, terms_sum[i].expon);
if (i != n_sum-1) {
printf("+ ");
}
}
printf("\n");
return 0;
}
// 多项式相加函数
void poly_add(polynomial terms_1[], int n_1, polynomial terms_2[], int n_2, polynomial terms_sum[], int *n_sum) {
int i = 0, j = 0, k = 0;
while (i < n_1 && j < n_2) {
if (terms_1[i].expon > terms_2[j].expon) {
terms_sum[k++] = terms_1[i++];
} else if (terms_1[i].expon < terms_2[j].expon) {
terms_sum[k++] = terms_2[j++];
} else {
terms_sum[k].expon = terms_1[i].expon;
terms_sum[k++].coef = terms_1[i++].coef + terms_2[j++].coef;
}
}
while (i < n_1) {
terms_sum[k++] = terms_1[i++];
}
while (j < n_2) {
terms_sum[k++] = terms_2[j++];
}
*n_sum = k;
}
```
上述代码中,定义了一个 `polynomial` 结构体表示多项式中的项,包括系数和指数。`poly_add()` 函数实现了多项式相加的过程,其中需要传入两个多项式和它们的项数,以及一个用于存储和的多项式和它的项数指针。在函数中,使用了类似于归并排序的方法将两个多项式按指数从大到小合并,最终得到相加后的多项式。函数执行完毕后,和的多项式的项数会被存储在 `n_sum` 指针指向的变量中。最后在 `main()` 函数中,分别输入两个多项式,调用 `poly_add()` 函数计算它们的和,并输出结果。
阅读全文