C语言 数据结构 多项式相乘
时间: 2023-12-04 08:36:58 浏览: 46
好的,针对您的问题,我可以给出以下思路:
1. 首先定义一个结构体来表示多项式,包括系数和指数两个成员变量。
2. 然后定义两个多项式,分别存储要相乘的两个多项式。
3. 接着,使用嵌套循环遍历两个多项式,将每一项相乘,并将结果存储到一个新的多项式中。
4. 最后,将新的多项式按照指数从高到低的顺序输出即可。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式结构体
typedef struct {
int coef; // 系数
int expn; // 指数
} PolyNode, *Polynomial;
// 创建多项式
Polynomial createPoly(int n) {
Polynomial poly = (Polynomial)malloc(sizeof(PolyNode) * n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &poly[i].coef, &poly[i].expn);
}
return poly;
}
// 输出多项式
void printPoly(Polynomial poly, int n) {
for (int i = 0; i < n; i++) {
printf("%d %d ", poly[i].coef, poly[i].expn);
if (i != n - 1) {
printf("+ ");
}
}
printf("\n");
}
// 多项式相乘
Polynomial multiplyPoly(Polynomial poly1, int n1, Polynomial poly2, int n2) {
Polynomial result = (Polynomial)malloc(sizeof(PolyNode) * n1 * n2);
int k = 0;
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
result[k].coef = poly1[i].coef * poly2[j].coef;
result[k].expn = poly1[i].expn + poly2[j].expn;
k++;
}
}
return result;
}
int main() {
int n1, n2;
printf("请输入第一个多项式的项数:");
scanf("%d", &n1);
Polynomial poly1 = createPoly(n1);
printf("第一个多项式为:");
printPoly(poly1, n1);
printf("请输入第二个多项式的项数:");
scanf("%d", &n2);
Polynomial poly2 = createPoly(n2);
printf("第二个多项式为:");
printPoly(poly2, n2);
Polynomial result = multiplyPoly(poly1, n1, poly2, n2);
printf("相乘后的多项式为:");
printPoly(result, n1 * n2);
return 0;
}
```