该代码整体运行下来没有问题,但有一些小地方没有很好的优化,仅供参考。
实验要求
- 实验内容
设有一元多项式Am(x)和Bn(X),编程实现多项式Am(x)和Bn(x)的加法、减法和乘法运算。其中多项式描述为: Am(x)=A0+A1x1+A2x2+A3x3….+Amxm;
Bn(x)=B0+B1x1+B2x2+B3x3+….+Bnxn。 - 实验说明
1.输入和输出:
(1)输入:
从键盘输入运算指令(相加、相减、相乘),根据运算指令进行相应运算;
从键盘输入两个多项式的系数和指数;
系数和指数采用int类型,运算结果不超出int取值范围。
(2)输出:
每种运算结果以多项式形式输出,要输出升幂和降幂两种情况。
结果多项式中无重复阶项、无零系数项,输出多项式时请采用如下易读形式(一元多项式,总变元为x): x^4 - 3 x^2 + 5
2.实验要求:
实现一个简单的交互式界面,包括系统菜单、输入提示等。
根据多项式不同的运算要求选择合适的存储结构;
上机编辑、调试出完整正确的程序,包括相加、相减、相乘运算。
程序代码
#include <stdio.h>
#include <stdlib.h>
typedef struct PolyNode *Polynimial;
struct PolyNode
{
int coef;
int expon;
Polynimial link;
};
void Attach(int c,int e,Polynimial *pRear);//多项式结点的创建
Polynimial ReadPoly();//创建多项式
void PrintPolyn(Polynimial P);//升幂输出多项式
Polynimial Add(Polynimial P1,Polynimial P2);//多项式相加
Polynimial Decrease(Polynimial P1,Polynimial P2);//多项式相减
int Compare(int a,int b);//比较多项式系数大小
Polynimial Mult(Polynimial P1,Polynimial P2);//多项式相乘
Polynimial ReverseList(Polynimial P);//多项式的转置
void mune();//菜单选项
Polynimial ReadPoly()
{
Polynimial P,Rear,t;
int c,e,N;
printf("请输入多项式的项数\n");
scanf("%d",&N);
P=(Polynimial)malloc(sizeof(struct PolyNode));
P->link=NULL;
Rear=P;
printf("请输入多项式(以系数c 指数e的格式输入)\n");
while(N--)
{
scanf("%d%d",&c,&e);
Attach(c,e,&Rear);
}
t=P;
P=P->link;
free(t);
return P;
}
void Attach(int c,int e,Polynimial *pRear)
{
Polynimial P;
P=(Polynimial)malloc(sizeof(struct PolyNode));
P->coef=c;
P->expon=e;
P->link=NULL;
(*pRear)->link=P;
*pRear=P;
}
void PrintPolyn(Polynimial P