早教吧 育儿知识 作业答案 考试题库 百科 知识分享

两个一元多项式相加,为什么0+0时输出的结果是空白,哪位大虾帮忙看一下,小弟急求,在线等Polytype*polyadd(Polytype*ha,Polytype*hb){/*多项式相加*/Polytype*hc=malloc(sizeof(Polytype)),*pc=hc,*pa=ha->nex

题目详情
两个一元多项式相加,为什么0+0时输出的结果是空白,哪位大虾帮忙看一下,小弟急求,在线等Polytype *polyadd(Polytype *ha,Polytype *hb){/*多项式相加*/ Polytype *hc=malloc(sizeof(Polytype)),*pc=hc,*pa=ha->next,*pb=hb->next; int e,c; /*c 为系数,e为指数*/ while(pa || pb){ if(pa&&(pb==NULL||(pa->e<pb->e))){ c=pa->c; e=pa->e; pa=pa->next; } else if(pb&&(pa==NULL||(pa->e>pb->e))){ c=pb->c; e=pb->e; pb=pb->next; } else{ c=pa->c+pb->c; e=pa->e; pa=pa->next; pb=pb->next; } if(c){ pc->next=malloc(sizeof(Polytype)); pc=pc->next; pc->c=c; pc->e=e; } } pc->next=NULL; return hc; }
▼优质解答
答案和解析
虽然不知道你这个Polytype类内部的定义是怎样的,但是如果说两个都是0,相加不输出结果的话,问题应该是出在 while(pa || pb)这一行,当两个多项式均是0多项式时,pa和pb都是false,这样一来,while循环里的东西全部不能执行。只剩下 pc->next=NULL; return hc; 这两行,结果自然是没有输出。。 想要有输出的话,你需要在while循环外多设计一个处理零多形式的过程。