【问题描述】编写一个程序实现两个一元多项式相加的运算。 【输入形式】从标准输入中读入两行以空格分隔的整数,每一行代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式 anxn + an-1xn-1+ ... + a1x1 + a0x0 (n<50)的表示方法如下: an n an-1 n-1 ... a1 1 a0 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 【输出形式】将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。在行的末尾也输出一个空格符,并且最后要求换行。用C语言实现
时间: 2024-03-06 11:51:21 浏览: 91
以下是C语言的实现代码:
```c
#include <stdio.h>
// 定义多项式结构体
typedef struct {
int coefficients[51]; // 多项式系数,最高次为50
} Polynomial;
// 读入多项式
void read(Polynomial *poly) {
int coef, exp;
while (scanf("%d%d", &coef, &exp) == 2) {
poly->coefficients[exp] += coef;
}
}
// 输出多项式
void print(Polynomial *poly) {
int first_term = 1;
for (int exp = 50; exp >= 0; exp--) {
int coef = poly->coefficients[exp];
if (coef != 0) {
if (!first_term) {
printf(" ");
}
printf("%d %d", coef, exp);
first_term = 0;
}
}
printf(" \n");
}
// 多项式加法
Polynomial add(Polynomial *poly1, Polynomial *poly2) {
Polynomial result;
for (int exp = 50; exp >= 0; exp--) {
result.coefficients[exp] = poly1->coefficients[exp] + poly2->coefficients[exp];
}
return result;
}
int main() {
Polynomial poly1, poly2, result;
read(&poly1);
read(&poly2);
result = add(&poly1, &poly2);
print(&result);
return 0;
}
```
注意,C语言中没有类的概念,因此我们使用了结构体来表示多项式,并通过函数来完成多项式的读入、输出和加法。另外,由于C语言中没有bool类型,因此我们使用了0和1来表示布尔值。
阅读全文