[问题描述] c语言编写一个程序实现两个一元多项式相乘。 [输入形式]首先输入第一个多项式中系数不为0的项的个数,然后在新的一行上输入以空格分隔的整数,代表-一个多项式,且该多项式中各项的系数均为0或正整数,最高夏次不超过50.对于多项式anx^+ an-1x-+..+a1x + agx (nS50) 的输入方法如下:an n an-1 n-1.. 211 ao 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 按照上述方式再输入第二个多项式。 [输出形式] 将运算结果输出到屏班。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
时间: 2024-03-06 11:50:14 浏览: 19
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 55
typedef struct {
int coef[MAXN]; // 存储各项系数的数组
} Polynomial;
Polynomial multiply(Polynomial a, Polynomial b) {
Polynomial c;
memset(c.coef, 0, sizeof(c.coef)); // 初始化c中各项系数为0
for (int i = 0; i < MAXN; i++) {
for (int j = 0; j < MAXN; j++) {
c.coef[i + j] += a.coef[i] * b.coef[j]; // 将a、b中对应项相乘并累加到c中
}
}
return c;
}
int main() {
Polynomial a, b, c;
int n, m;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int coef, exp;
scanf("%d %d", &coef, &exp);
a.coef[exp] = coef; // 将系数为coef、指数为exp的项添加到a中
}
scanf("%d", &m);
for (int i = 0; i < m; i++) {
int coef, exp;
scanf("%d %d", &coef, &exp);
b.coef[exp] = coef; // 将系数为coef、指数为exp的项添加到b中
}
c = multiply(a, b); // 计算结果
int first = 1; // 用于控制输出格式
for (int i = MAXN - 1; i >= 0; i--) {
if (c.coef[i] != 0) {
if (!first) printf(" "); // 输出项之间的空格
first = 0;
printf("%d %d", c.coef[i], i); // 输出系数和指数
}
}
printf("\n");
return 0;
}
```
输入示例:
```
3
2 2 3 1 4 0
2
-1 1 1 0
```
输出示例:
```
-8 3 11 2 -10 1
```