用c语言编写一个程序实现两个一元多项式相乘。 首先输入第一个多项式中系数不为0的项的个数,然后在新的一行上输入以空格分隔的整数,代表-一个多项式,且该多项式中各项的系数均为0或正整数,最高夏次不超过50.对于多项式anx^+ an-1x-+..+a1x + agx (nS50) 的输入方法如下:an n an-1 n-1.. 211 ao 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 按照上述方式再输入第二个多项式。 [输出形式] 将运算结果输出到屏班。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
时间: 2024-03-16 08:48:09 浏览: 149
以下是用C语言编写的两个一元多项式相乘的程序:
```c
#include<stdio.h>
#define MAXN 100
struct poly {
int c, e;
}a[MAXN], b[MAXN], ans[MAXN * MAXN];
int main() {
int n, m, cnt = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d%d", &a[i].c, &a[i].e);
}
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d%d", &b[i].c, &b[i].e);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ans[cnt].c = a[i].c * b[j].c;
ans[cnt].e = a[i].e + b[j].e;
cnt++;
}
}
for (int i = 0; i < cnt; i++) {
for (int j = i + 1; j < cnt; j++) {
if (ans[i].e == ans[j].e) {
ans[i].c += ans[j].c;
ans[j].c = 0;
}
}
}
for (int i = cnt - 1; i >= 0; i--) {
if (ans[i].c != 0) {
printf("%d %d ", ans[i].c, ans[i].e);
}
}
printf("\n");
return 0;
}
```
输入格式为:
```
n
a1 b1
a2 b2
...
an bn
m
c1 d1
c2 d2
...
cm dm
```
其中,n为第一个多项式中系数不为0的项的个数,ai和bi分别表示第一个多项式中第i项的系数和指数;m为第二个多项式中系数不为0的项的个数,ci和di分别表示第二个多项式中第i项的系数和指数。
输出格式为:
```
x1 y1 x2 y2 ... xk yk
```
其中,(xi, yi)表示结果多项式中第i项的系数和指数,按照指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
阅读全文