我希望你能给我加分啥,我帮你调试了大概2个小时了。
这程序是不是你写的??
如果是的话,希望你好好加强C的基本功,很多思想上和语法上的问题。
其实我也不是帮你改,基本上我帮你重写了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct LNode
{ /*多项式的存储结构定义*/
int coef;
int expn;
struct LNode *next;
}LNode,*polynomail;
void creatpolyn(polynomail &p,int m)
{
printf("creatpolyncreatpolyncreatpolyncreatpolyny\n");
int i;
int coef;
int expn;
polynomail s;
p=(polynomail)malloc(sizeof(LNode));
p->next=NULL;
for(i=1;i<=m;++i)
{
s=(polynomail)malloc(sizeof(LNode));
printf("请输入一元多项式的系数和指数:");
scanf("%d %d",&coef,&expn);
s->coef=coef;
s->expn=expn;
s->next=p->next;
p->next=s;
}
}//CreatPolyn
polynomail addpolyn(polynomail &pa,polynomail &pb)
{
polynomail c,pc;
pc=(polynomail)malloc(sizeof(LNode));
pc->next=NULL;
pa=pa->next;
pb=pb->next;
while(pa && pb)
{
if((pa->expn)==(pb->expn))
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=pa->expn;
c->coef=((pa->coef)+(pb->coef));
pa=pa->next;
pb=pb->next;
} //if
else if((pa->expn)>(pb->expn))
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=pb->expn;
c->coef=pb->coef;
pb=pb->next;
} //if
else
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=pa->expn;
c->coef=pa->coef;
pa=pa->next;
} //if
c->next=pc->next;
pc->next=c;
}//while
if(!pa && pb)
{ while(c->next!=NULL)
{
c=c->next;
}//while
c->next=pb; }
if(!pb && pa)
{ while(c->next!=NULL)
{
c=c->next;
}//while
c->next=pa;}
return pc;
}//AddPolyn
void printpolyn(polynomail &p)
{
while(p->next!=NULL)
{ printf("test_print");
p=p->next;
printf(" %dX^%d+ ",p->coef,p->expn);
printf("\n");
}//while
}//printpolyn
void main(void)
{
int n,m;
polynomail pa,pb,pc;
printf("请输入一元多项式pa的项数:");
scanf("%d",&n);
creatpolyn(pa,n);
printf("请输入一元多项式pb的项数:");
scanf("%d",&m);
creatpolyn(pb,m);
pc=addpolyn(pa,pb);
printf("结果是:pa+pb=\n");
printpolyn(pc);
}