cjlruby 2016-10-23 06:25 采纳率: 100%
浏览 836
已采纳

关于一元多项式乘法的程序我运行后菜单栏出现问题,数字输不进去哪位能帮忙修改一下?

#include
#include

typedef struct LNode
{
int coef,ex;
struct LNode *next;
}LNode;

LNode *create_LNode(void);

LNode *add_LNode(LNode *,LNode *);

LNode *mul_LNode(LNode *,LNode *);

void print_LNode(LNode *);

int main(void)
{
LNode *heada,*headb,*headsum,*headmul;
heada=NULL;headb=NULL; headsum=NULL;headmul=NULL;

printf("1.  please create mul 1\n");
printf("2.  please create mul 2\n");
printf("please input coef and exponent:\n");


printf("3. The mul is: \n");
}

//创建
LNode *create_LNode()
{
int iX=0,iZ=0;
LNode *head=NULL,*c=NULL,*d=NULL;
head=(LNode *)malloc(sizeof(LNode));
d=head;
printf("please input coef and exponent:\n");
scanf("%d%d",&iX,&iZ);
while(iX != 0)
{
c=(LNode *)malloc(sizeof(LNode));
c->coef=iX,c->ex=iZ;
d->next=c;
d=c;
scanf("%d%d",&iX,&iZ);
}
d->next=NULL;
return head;
}

//相加
LNode *add_LNode(LNode *p1, LNode *p2)

{

LNode *head, *tmp, *c;

int value;

p1=p1->next;

p2=p2->next;

head=tmp=(LNode*)malloc(sizeof(LNode));

head->next=NULL;

while(p1 && p2)

{

if(p1->ex == p2->ex)

{

value=p1->coef+p2->coef;

if(value != 0)

{

c=(LNode *)malloc(sizeof(LNode));

c->coef=value;

c->ex=p1->ex;

c->next=NULL;

}

p1=p1->next;

p2=p2->next;

}

else

if(p1->ex < p2->ex)

{

c=(LNode *)malloc(sizeof(LNode));

c->coef=p1->coef;

c->ex=p1->ex;

c->next=NULL;

p1=p1->next;

}

else

{

c=(LNode *)malloc(sizeof(LNode));

c->coef=p2->coef;

c->ex=p2->ex;

c->next=NULL;

p2=p2->next;

}

if(head->next==NULL)

{

head->next=c;

tmp=c;

}

else

{

tmp->next=c;

tmp=c;

}

}

tmp->next=p1?p1:p2;

return head;

}

//相乘
LNode *mul_LNode(LNode *p1, LNode *p2)

{

LNode *head;

LNode *t,*q,*c,*d;

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

head->next=NULL;

d=(LNode *)malloc(sizeof(LNode));

d->next=NULL;

for(t=p1->next;t;t=t->next)

{

for(q=p2->next;q;q=q->next)

{

c=(LNode *)malloc(sizeof(LNode));

d->next=c;

c->coef=q->coef * t->coef;

c->ex=q->ex + t->ex;

c->next=NULL;

head=add_LNode(d,head);

}

}

return head;

}

//输出
void print_LNode(LNode *head)
{
LNode *p=NULL;
p=head->next;
if(p == NULL)
printf("The multinomial is NULL.\n");
else
{
do
{
if(p->coef>=0)
printf("+%dx^%d",p->coef,p->ex);
else
printf("%dx^%d",p->coef,p->ex);
p=p->next;
}while(p != NULL);
printf("\n");
}
}

  • 写回答

1条回答 默认 最新

  • devmiao 2016-10-23 09:04
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP