用c语言表现一元多项式的除法,c语言编程实例一元多项式的计算

#include 声明部分:源代码含有2个文件

#include

typedef struct pnode // 定义指针//

{int coef; //定义系数//

int exp; //定义指数//

struct pnode *next;

}pnode;

pnode * creat() //creat函数用来存放多项式//

{int m,n;

pnode *head,*rear,*s;

head=(pnode *)malloc(sizeof(pnode));

rear=head;

printf("\n输入指数(按递增顺序输入):");

scanf("%d",&m);

printf("输入一元式系数(0为退出):");

scanf("%d",&n);

do

{

s=(pnode *)malloc(sizeof(pnode));

s->coef=n; //n为系数//

s->exp=m; //m为指数//

rear->next=s;

s->next=NULL;

rear=s;

printf("\n输入指数(按递增顺序输入):");

scanf("%d",&m);

printf("输入一元式系数(0为退出):");

scanf("%d",&n);

}while(n);

return head;

}

pnode * add(pnode *heada,pnode *headb)

{pnode *headc,*a,*b,*s,*rearc;

int sum;

a=heada->next;b=headb->next;

headc=(pnode *)malloc(sizeof(pnode));

rearc=headc;

//多项式的存放//都放到s中里//

while(a!=NULL&&b!=NULL) //指数相等,则系数相加。//

{

if(a->exp==b->exp)

{ sum=a->coef+b->coef;

if(sum)

{s=(pnode *)malloc(sizeof(pnode));

s->coef=sum;

s->exp=a->exp;

rearc->next=s;

rearc=s;

a=a->next;

b=b->next;}

else

{a=a->next;

b=b->next;

}

}

else if(a->expexp)

//a指数如果小于b,则a放到s中//

{ s=(pnode *)malloc(sizeof(pnode));

s->coef=a->coef;

s->exp=a->exp;

rearc->next=s;

//用下一个结点s取代下一个c//

rearc=s;

a=a->next;

}

else //如果a的指数大,则b放到s中//

{ s=(pnode *)malloc(sizeof(pnode));

s->coef=b->coef;

s->exp=b->exp;

rearc->next=s;

rearc=s;

b=b->next;

}

}

if(a)

{while(a!=NULL) //b空了放a中的项//

{s=(pnode *)malloc(sizeof(pnode));

s->coef=a->coef;

s->exp=a->exp;

rearc->next=s;

s->next=NULL;

rearc=s;

a=a->next;

}

}

else if(b)

{while(b!=NULL) //a空了放b中的项//

{s=(pnode *)malloc(sizeof(pnode));

s->coef=b->coef;

s->exp=b->exp;

rearc->next=s;

s->next=NULL;

rearc=s;

b=b->next;

}}

return headc;

}

void main()

{pnode *a,*b,*c;

printf("建立A:");

a=creat();

printf("\n建立B:");

b=creat();

c=add(a,b);

c=c->next;

printf("%dx^%d",c->coef,c->exp);

c=c->next;

while(c!=NULL)

{printf("+%dx^%d",c->coef,c->exp);

c=c->next;

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值