3、程序编写题:随机输入两个一元多项式,实现两个多项式相加,输出相加后的一元多项式。要求用标准的C语言实现,提交可执行代码。(50分)
时间: 2024-10-10 11:08:27 浏览: 18
在C语言中,要编写一个程序实现两个一元多项式的相加,你可以创建一个结构体来表示多项式的系数和次数。首先,我们定义一个多项式结构体,然后通过循环读取用户输入的系数和次数,接着计算相加后的结果,并最后打印出新的多项式。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式结构体
typedef struct {
int coef; // 系数
int exp; // 次数
} Polynomial;
// 功能:读取多项式
Polynomial read_polynomial() {
Polynomial poly;
printf("请输入一元多项式的系数(当系数为0结束输入):");
while (scanf("%d", &poly.coef) == 1 && poly.coef != 0) {
scanf("%d", &poly.exp);
if (poly.exp >= 0)
return poly;
}
// 如果输入的是0,说明输入结束,返回空多项式
return (Polynomial){0, -1};
}
// 功能:多项式相加
void add_poly(Polynomial poly1, Polynomial poly2, Polynomial* result) {
*result = poly1; // 初始化结果为第一个多项式
if (poly2.exp >= 0) { // 只有当第二个多项式的次数大于等于0时才进行相加
result->coef += poly2.coef; // 相加系数
result->exp = poly2.exp; // 更新最高次幂
}
}
int main() {
Polynomial poly1, poly2, sumPoly;
poly1 = read_polynomial();
if (poly1.exp >= 0) {
poly2 = read_polynomial();
// 保证两个多项式都是有效的
if (poly2.exp >= 0) {
add_poly(poly1, poly2, &sumPoly);
printf("两个多项式相加的结果为:");
if (sumPoly.exp > 0)
printf("%dx^%d + ", sumPoly.coef, sumPoly.exp);
else
printf("%d", sumPoly.coef); // 当结果是一个常数时不需要乘方
} else {
printf("输入错误,第二个多项式无效。\n");
}
}
return 0;
}
```