用c语言编写一个程序实现两个一元多项式相乘。【输入形式】 首先输入第一个多项式中系数不为0的项的个数,然后在新的一行上输入以空格分隔的整数,代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式 a,x" + an_1xn-1+...+ a,x1 + ax(n<50)的输入方法如下:ann an-1 n-1... a1 1 3。0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 按照上述方式再输入第二个多项式,【输出形式】 将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
时间: 2024-03-17 09:39:53 浏览: 218
C C++程序设计 求两个一元多项式相乘的算法.txt
好的,我可以帮你实现这个程序。以下是代码实现:
```c
#include <stdio.h>
#define MAX_DEGREE 50
int main() {
int a[MAX_DEGREE + 1] = {0}, b[MAX_DEGREE + 1] = {0}, c[2 * MAX_DEGREE + 1] = {0};
int n, m, i, j;
// 读入第一个多项式
scanf("%d", &n);
for (i = 0; i < n; i++) {
int coef, exp;
scanf("%d %d", &coef, &exp);
a[exp] = coef;
}
// 读入第二个多项式
scanf("%d", &m);
for (i = 0; i < m; i++) {
int coef, exp;
scanf("%d %d", &coef, &exp);
b[exp] = coef;
}
// 计算两个多项式的乘积
for (i = 0; i <= MAX_DEGREE; i++) {
for (j = 0; j <= MAX_DEGREE; j++) {
c[i + j] += a[i] * b[j];
}
}
// 输出结果
int flag = 0;
for (i = 2 * MAX_DEGREE; i >= 0; i--) {
if (c[i] != 0) {
printf("%d %d ", c[i], i);
flag = 1;
}
}
if (!flag) {
printf("0 0");
}
printf("\n");
return 0;
}
```
程序首先定义了三个数组 `a`、`b` 和 `c`,分别表示两个输入的多项式和它们的乘积。其中,数组 `a` 和 `b` 的下标表示多项式中每一项的指数,数组元素表示该项的系数;数组 `c` 的下标表示乘积多项式中每一项的指数,数组元素表示该项的系数。
程序读入两个多项式的系数和指数,分别存储在数组 `a` 和 `b` 中。然后,程序对这两个多项式进行乘法运算,将结果存储在数组 `c` 中。最后,程序输出乘积多项式的系数和指数,按指数从高到低的顺序输出,每次输出两个整数,用一个空格分隔。
需要注意的是,程序中使用了一个 `flag` 变量来判断乘积多项式是否为零多项式。如果乘积多项式为零多项式,则输出 `0 0`。
阅读全文