c语言 设计程序计算任意两个最高阶不超过10的一元多项式的和,约定各项系数均为整数。要求:(1)从键盘输入多项式各项,并输出计算结果。(2)分别用顺序表和链表为存储结构进行实现。
时间: 2024-10-14 12:07:25 浏览: 31
任意两个高次多项式的加法和乘法运算课程设计
5星 · 资源好评率100%
设计C语言程序来计算任意两个一元多项式的和,可以分为两部分:输入、处理和输出,以及选择顺序表还是链表作为存储结构。这里给出基本步骤:
1. **顺序表实现**:
- 使用数组来表示多项式的系数,数组的大小由给定的最大多项式次数(10次)决定。
- 用户输入第一个多项式的系数及其指数,保存到数组中。
- 对于第二个多项式,同样输入并合并到数组中。
- 使用循环遍历数组,累加对应位置的系数,得到结果。
```c
#include <stdio.h>
#define MAX_DEGREE 10
// 顺序表函数声明
void input_poly(int poly[], int degree);
int add_polys(int poly1[], int poly2[], int max_degree);
int main() {
int poly1[MAX_DEGREE], poly2[MAX_DEGREE];
input_poly(poly1, MAX_DEGREE);
input_poly(poly2, MAX_DEGREE);
int sum_poly = add_polys(poly1, poly2, MAX_DEGREE);
// 输出结果
for (int i = 0; i <= MAX_DEGREE; i++) {
printf("x^%d + ", i);
if (sum_poly[i] != 0)
printf("%d", sum_poly[i]);
else
printf("0");
}
return 0;
}
// 输入多项式函数
void input_poly(int poly[], int degree) {
int coef, exp;
for (int i = 0; i <= degree; i++) {
printf("请输入第%d项系数和指数(输入0结束): ", i + 1);
scanf("%d %d", &coef, &exp);
if (coef == 0)
break;
poly[i] = coef * pow(10, exp); // 将指数转换为十进制形式
}
}
// 序列相加函数
int add_polys(int poly1[], int poly2[], int max_degree) {
int sum_poly[max_degree + 1] = {0};
for (int i = 0; i <= max_degree; i++)
sum_poly[i] = poly1[i] + poly2[i]; // 直接相加
return sum_poly;
}
```
2. **链表实现**:
- 创建一个节点结构,包含系数和指向下一个节点的指针。
- 用单链表存储每个多项式的系数,分别构建和合并。
- 遍历链表计算总和,将结果插入新链表中。
```c
// 链表头结点结构
typedef struct Node {
int coef;
struct Node* next;
} Node;
// 添加多项式链表函数
Node* add_polys_linked(Node* poly1, Node* poly2, int max_degree) {
// ...此处省略链表操作实现...
}
int main() {
Node* poly1_head = create_poly_list(); // 创建第一个多项式链表
Node* poly2_head = create_poly_list(); // 创建第二个多项式链表
Node* sum_poly_head = add_polys_linked(poly1_head, poly2_head, MAX_DEGREE);
// 输出结果
print_poly_list(sum_poly_head);
// 清理链表
destroy_poly_list(sum_poly_head);
return 0;
}
```
阅读全文