用C语言代码实现用C语言实现从标准输入中读入两个多项式。且该多项式中各项的系数均为0或正整数,最高幂次不超过1000000。对于多项式 anxn + an-1xn-1+.... + a1x1 + a0x0 (n<=1000000)的表示方法如下: an n an-1 n-1 ... a1 1 a0 0 第一、二行读入第一个多项式。第一行,表示多项式的项数。紧接着下一行输入该多项式的每一项。相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 第三、四行读入第二个多项式。将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。在行的末尾也输出一个空格符,并且最后要求换行。
时间: 2023-05-28 11:05:48 浏览: 87
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 1000001
struct node {
int coefficient;
int power;
};
struct node poly1[MAX_N], poly2[MAX_N], result[MAX_N];
int main() {
int n1, n2, i, j, k;
scanf("%d", &n1);
for (i = 0; i < n1; i++) {
scanf("%d%d", &poly1[i].coefficient, &poly1[i].power);
}
scanf("%d", &n2);
for (i = 0; i < n2; i++) {
scanf("%d%d", &poly2[i].coefficient, &poly2[i].power);
}
i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
if (poly1[i].power > poly2[j].power) {
result[k].coefficient = poly1[i].coefficient;
result[k].power = poly1[i].power;
i++;
} else if (poly1[i].power < poly2[j].power) {
result[k].coefficient = poly2[j].coefficient;
result[k].power = poly2[j].power;
j++;
} else {
result[k].coefficient = poly1[i].coefficient + poly2[j].coefficient;
result[k].power = poly1[i].power;
i++;
j++;
}
k++;
}
while (i < n1) {
result[k].coefficient = poly1[i].coefficient;
result[k].power = poly1[i].power;
i++;
k++;
}
while (j < n2) {
result[k].coefficient = poly2[j].coefficient;
result[k].power = poly2[j].power;
j++;
k++;
}
printf("%d ", k);
for (i = 0; i < k; i++) {
if (result[i].coefficient != 0) {
printf("%d %d ", result[i].coefficient, result[i].power);
}
}
printf("\n");
return 0;
}
```
阅读全文