C语言编写一个程序实现两个一元多项式相乘。 【输入形式】 首先输入第一个多项式中系数不为0的项的个数,然后在新的一行上输入以空格分隔的整数,代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式 anxn + an-1xn-1+ ... + a1x1 + a0x0 (n<50)的输入方法如下: an n an-1 n-1 ... a1 1 a0 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 按照上述方式再输入第二个多项式。 【输出形式】 将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
时间: 2023-12-03 14:47:16 浏览: 79
C语言实现多项式相乘
5星 · 资源好评率100%
以下是实现两个一元多项式相乘的C语言程序:
```c
#include <stdio.h>
#define MAX_DEGREE 50
int main()
{
int p1[MAX_DEGREE + 1] = {0}, p2[MAX_DEGREE + 1] = {0}, result[MAX_DEGREE * 2 + 1] = {0}; // 多项式系数数组
int n1, n2, i, j;
// 输入第一个多项式
scanf("%d", &n1);
for (i = 0; i < n1; i++) {
int a, b;
scanf("%d%d", &a, &b);
p1[b] = a;
}
// 输入第二个多项式
scanf("%d", &n2);
for (i = 0; i < n2; i++) {
int a, b;
scanf("%d%d", &a, &b);
p2[b] = a;
}
// 多项式相乘
for (i = 0; i <= MAX_DEGREE; i++) {
for (j = 0; j <= MAX_DEGREE; j++) {
result[i+j] += p1[i] * p2[j];
}
}
// 输出结果
for (i = MAX_DEGREE * 2; i >= 0; i--) {
if (result[i] != 0) {
printf("%d %d ", result[i], i);
}
}
printf("\n");
return 0;
}
```
程序中用一个数组来存储多项式的系数,数组下标表示多项式中的指数。首先输入第一个多项式和第二个多项式,然后进行多项式相乘,最后输出结果。
需要注意的是,两个多项式相乘后的结果的最高次数可能是 $2 \times \text{MAX_DEGREE}$,所以需要定义一个长度为 $2 \times \text{MAX_DEGREE} + 1$ 的数组来存储结果。同时,输出时需要注意系数为0的项不需要输出。
阅读全文