具备一元多项式加、减、乘的运算功能.(多项式系数的输入和输出均按次数从高到低排列形式安排系数.,最右面的为零次项系数,从右向左依次增加.)例如:多项式加法 输入:2 -5 0 7 (表示多

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/17 02:29:17
具备一元多项式加、减、乘的运算功能.(多项式系数的输入和输出均按次数从高到低排列形式安排系数.,最右面的为零次项系数,从右向左依次增加.)例如:多项式加法 输入:2 -5 0 7 (表示多
xW[OH+Ӭ@I$jUp~AoZɉ:Vv"M-`,` H~zlaxv*>/\;9s<xru/~ ߔ?38_\T֚ZW7zPωD-^,AwrQ9݇]>ąsvUY} aJ-eg.ۻ`LW N>F`ׇrs{ hrs }ٲF\# iz 8K'|]ǁ˕}KlPiɍ"ǦQF'DGA,xb Ґ0uDY 0 3+[l씷`IZZpݑV+Zu{,})S/p>t1er8'W):?Zz-z XW Ʃv*]apWޫrwMTݮ+Fk8RH -aUQ͂Z Vk6&+I{b<9 ȓTp҃Ϲd2ld_H/LL6="SL}%,TI1uj>\؛F%hL1.+yLjL &g2d.Ap롩tdCLHֆx~(z|N)p*HEySdڼ8ASe(*gVH֖IkċEDz|fy3_Z(gL ,Y7&|ƨ R==!@8;ILAtgx31âT6^D"iD\BD DIA!)&Vԇ=K1$QU/ȑJK8JHWk[{U:Hg*ճMΘ Y0fz)6쳇2<  !Ɍ]WUL׬F))44 M)Ӯebzx$12!v88{)J1J|9uRz$VKUha@V-J9+.;c6WW ^ec=cwFޓbC%vww3H4._@wlӶ9ݷY~]Y'VY&'f〾aUYPN?^)cϹ踗 pQG74^Fw'b]m՗k`d; 2r;M\ScCfkw2HF(Xf]

具备一元多项式加、减、乘的运算功能.(多项式系数的输入和输出均按次数从高到低排列形式安排系数.,最右面的为零次项系数,从右向左依次增加.)例如:多项式加法 输入:2 -5 0 7 (表示多
具备一元多项式加、减、乘的运算功能
.(多项式系数的输入和输出均按次数从高到低排列形式安排系数.,最右面的为零次项系数,从右向左依次增加.)
例如:多项式加法
输入:2 -5 0 7 (表示多项式 2x3-5x2+7)
3 1 -8 (表示多项式 3x2+x-8)
输出 2 -2 1 -1
(2x3-5x2+7)+( 3x2+x-8)= 2x3-2x2+x-1
输入的数据项数是不定长的,最多不超过10项,用菜单让用户选择运算类别.
菜单格式如下:

具备一元多项式加、减、乘的运算功能.(多项式系数的输入和输出均按次数从高到低排列形式安排系数.,最右面的为零次项系数,从右向左依次增加.)例如:多项式加法 输入:2 -5 0 7 (表示多
这个程序是我们课设题目,只实现了一元多项式的相加,然后对(addpoly )实现相加的函数修改一下,很简单就能达到相减的目的.
代码如下:
#include "stdio.h"
#include "malloc.h"
typedef struct polynode
{
int coef;
int expn;
struct polynode *next;
} *pnode;
pnode createpoly()
{
int a,n,i=1;
pnode head,s,p;
printf("输入一元多项式(以0,0标志结束):\n");
printf("要求:1.按幂从大到小次序输入各节点\n");
printf(" 2.没有两个节点具有相同的幂:\n");
head=(pnode) malloc (sizeof (struct polynode ));
head->next=NULL;
p=head;
do
{
printf("第%d次->系数,幂:",i++);
scanf("%d,%d",&a,&n);
if (a!=0 || n!=0)
{
s=(pnode) malloc ( sizeof (struct polynode));
s->coef=a; s->expn=n; s->next=NULL;
p->next=s; p=s;
}
}
while (a!=0 || n!=0);
printf("\n");
return (head);
}
void printpoly(pnode head)
{
int first=1;
head=head->next;
while (head!=NULL)
{
if (first)
{
if (head->expn==1)
printf("%dx",head->coef);
else if (head->expn==0)
printf("%d",head->coef);
else
printf("%dx^%d",head->coef,head->expn);
first=0;
}
else
{
if (head->expn==1)
printf("%+dx",head->coef);
else if (head->expn==0)
printf("%+d",head->coef);
else
printf("%+dx^%d",head->coef,head->expn);
}
head=head->next;
}
printf("\n");
}
pnode addpoly(pnode pa,pnode pb)
{
int n;
pnode pc,s,p;
pa=pa->next;
pb=pb->next;
pc=(pnode) malloc (sizeof (struct polynode));
pc->next=NULL;p=pc;
while (pa!=NULL && pb!=NULL)
{
if (pa->expn>pb->expn)
{
s= (pnode) malloc (sizeof (struct polynode));
s->coef=pa->coef; s->expn=pa->expn;
s->next=NULL; p->next=s; p=s;
pa=pa->next;
}
else if (pa->expnexpn)
{
s=(pnode) malloc (sizeof (struct polynode));
s->coef=pb->coef; s->expn=pb->expn;
s->next=NULL; p->next=s; p=s;
pb=pb->next;
}
else
{
n=pa->coef+pb->coef;
if (n!=0)
{
s=(pnode) malloc (sizeof (struct polynode));
s->coef=n; s->expn=pb->expn; s->next=NULL;
p->next=s; p=s;
}
pa=pa->next; pb=pb->next;
}
}
while (pa!=NULL)
{
s=(pnode) malloc (sizeof (struct polynode));
s->coef=pa->coef; s->expn=pa->expn;
s->next=NULL; p->next=s;
p=s; pa=pa->next;
}
while (pb!=NULL)
{
s= (pnode) malloc (sizeof (struct polynode ));
s->coef=pb->coef; s->expn=pb->expn;
s->next=NULL; p->next=s;
p=s; pb=pb->next;
}
return(pc);
}
main()
{
pnode poly1,poly2,poly3;
printf("建立第一个一元多项式=>\n");
poly1=createpoly();
printf("建立第二个一元多项式=>\n");
poly2=createpoly();
poly3=addpoly(poly1,poly2);
printf("第一个一元多项式为:");
printpoly (poly1);
printf("第二个一元多项式为:");
printpoly(poly2);
printf("相加后一元多项式为:");
printpoly(poly3);
}