c语言一元多项式相加

Python07

c语言一元多项式相加,第1张

我稍微改了一下是你的数据两项都能输出但是这个程序在La有的指数Lb也有且Lb有的指数,La也有的情况下是对的

但在这种情况下是不对的:

La:1x^1+2x^3+3x^4+4x^5+5x^6

Lb:(3,2)+(4,3)+(5,5)+(6,7)

解决办法还未想出

#include<stdio.h>

#include<stdlib.h>

typedef int datatype

typedef struct node

{

datatype xishu,zhishu,xiangshu//

struct node*next

}node,*first

//*******************//

node* jianli(node*first)

{

node *p,*q

int x=1,t=1,y

first=(node*)malloc(sizeof(node))

p=first

p->next =NULL///////////

while(x)

{

printf("请输入第%d项,例如+2 3即表示2x^3(输入0 0结束):\n",t)

scanf("%d %d",&x,&y)

if(x==0)

{

p->next=NULL

return first

}

else

{

q=(node*)malloc(sizeof(node))

q->xishu=x

q->zhishu=y

q->next =p->next

p->next=q

p=q

t++//统计有多少项

}

}

return first

}

//排序

void paixu(node*first)

{

int i,j

node *p,*max

//排序

for(max=first->nextmax->next!=NULLmax=max->next)

{

for(p=max->nextp!=NULLp=p->next)

{

if(max->zhishu<p->zhishu)//排序

{

i=max->xishu

j=max->zhishu

max->xishu=p->xishu

max->zhishu=p->zhishu

p->xishu=i

p->zhishu=j

}

}

}

}

//计算

node*jia(node*first1,node*first2,node*first3)

{

node *f1,*f2,*p,*q

int i,j

first3=(node*)malloc(sizeof(node))

p=first3

first3->next =NULL

for(f1=first1->nextf1!=NULLf1=f1->next)

{///////////////////////////////////////////

for(f2=first2->nextf2!=NULLf2=f2->next)

if(f1->zhishu==f2->zhishu)

{

i=f1->xishu+f2->xishu

j=f1->zhishu

if(i!=0)

{

q=(node*)malloc(sizeof(node))

q->xishu=i

q->zhishu=j

q->next =p->next

p->next=q//p 指向 q

p=q//p到末尾

}

}

}//////////////////////////////////////////

//f1.length<=f2.length

if(f2!=NULL)//////

{

for(f2!=NULLf2=f2->next)

{

q=(node*)malloc(sizeof(node))

q->xishu=f2->xishu

q->zhishu=f2->zhishu

p->next=q

p=q

}

p->next=NULL

return

first3

}

else////////////////////////////

return first3//////////////

}

//计算长度

int changdu(node*first)

{

node *p

int i=0

p=first->next

while(p!=NULL)

{

p=p->next

i++

}

return i

}

//输出

void shuchu(node*first)

{

node *q

q=first->next

while(q!=NULL)

{

if(q->xishu>0)

{

printf("+%dx^%d",q->xishu,q->zhishu)

q=q->next

}

else

{

printf("%dx^%d",q->xishu,q->zhishu)

q=q->next

}

}

printf("\n")

}

void main()

{

node *La,*Lb,*Lc

int i,j

abc: La=jianli(La)//多项式La Lb

Lb=jianli(Lb)

i=changdu(La)//计算La Lb的长度

j=changdu(Lb)

printf("La.length=%d,Lb,length=%d\n",i,j)

if(i<j)

Lc=jia(La,Lb,Lc)

else

Lc=jia(Lb,La,Lc)

printf("La+Lb=:")

shuchu(Lc)

paixu(Lc)

printf("排序后 La+Lb=:")

shuchu(Lc)

goto abc

}

以下以一元n次多项式X的值均为整数为例:

#include<stdio.h>

int main()

{ int i,n,x,y=0,a

printf("输入多项式有次数和X的值:\nn x=")

scanf("%d%d",&n,&x)

printf("依次输入每一项的系数:\n")

for(i=0i<=ni++)

{scanf("%d",&a)

 y=y*x+a

}

printf("%d\n",y)

return 0

}