实验题目 一元多项式的加法运算
班级:数学班 姓名: 学号: 日期:2012
一 、 需求分析
1、)程序的主要功能:
1.1 输入两个稀疏的一元 n 次多项式。
1.2 计算两个多项式的和。
多项式相加的运算规则为:对于两个一元多项式中指数相同的子项,对应
的系数相加,若和非零,将其构成和多项式中的一项;对于两个一元多项
式中指数不同的子项,则分别复制到和多项式中。
1.3 多项式 a 和 b 相加,建立多项式 a+b,输出和多项式。
2、)输入输出:
2.1 输入要求:按照指数递增的顺序和指定的输入格式输入各个系数不为 0 的
子项:“系数、指数对”,直至遇到输入结束标志(“系数、指数对”为“0、0”)
的时候停止。
2.2 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,………cn,en,其中 n
是多项式的项数,ci 和 ei 分别是第 i 项的系数和指数,序列按指数降序排列。
3、)测试数据:
1、(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7);
2、(6x^-3-x+4.4x^2-1.2x^9+1.2x^9)-(-6x^-3+5.4x^2-x^2+7.8x^15
)=(-7.8x^15-1.2x^9+12x^-3-x);
3、(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5);
4、(x+x^3)+(-x-x^3)=0;
5、(x+x^100)+(x^100+x^200)=(x+2x^100+x^200);
6、(x+x^2+x^3)+0=x+x^2+x^3.
二、概要设计
1、)建立一个头指针为 head、项数为 m 的一元多项式, 建立新结点以接收数
据, 调用 Insert 函数插入结点:
Polyn CreatePolyn(Polyn head,int m){
int i;
Polyn p;
p=head=(Polyn)malloc(sizeof(struct Polynomial));
head->next=NULL;
for(i=0;i<m;i++)
{
p=(Polyn)malloc(sizeof(struct Polynomial));
printf("请输入第%d 项的系数与指数:",i+1);
scanf("%f %d",&p->coef,&p->expn);
Insert(p,head);