分类：电脑/网络-软件
问题：一个编程的问题用C语言编程，要求解决下面的问题。1问题描述对任意 
   用编程，要求解决下面的问题。1 问题描述对任意输入的两个一元多项式完成计算：和，差，乘积，商等运算。2要求与提示（1）多项式可用链表表示（2）求和与差算法完全一致，多项式相加减运算规则为：若两项指数相等 ，则系数相加减，若两指数不等，则两项按指数大小次序复抄。（3）求乘积时的规则为：把一个多项式中的每一项分别乘以另一个多项式的每一项，完成后再合并同类项（相乘时，系数相乘，指数相加）（4）多项式相除规则为：以被除数和除数的指数为依据相除。PS：这是写论文哈，要详细哦！！！还要 有注解呢！！谢谢了，拜托，早点完成   用编程，要求解决下面的问题。1 问题描述对任意输入的两个一元多项式完成计算：和，差，乘积，商等运算。2要求与提示（1）多项式可用链表表示（2）求和与差算法完全一致，多项式相加减运算规则为：若两项指数相等 ，则系数相加减，若两指数不等，则两项按指数大小次序复抄。（3）求乘积时的规则为：把一个多项式中的每一项分别乘以另一个多项式的每一项，完成后再合并同类项（相乘时，系数相乘，指数相加）（4）多项式相除规则为：以被除数和除数的指数为依据相除。PS：这是写论文哈，要详细哦！！！还要 有注解呢！！谢谢了，拜托，早点完成哦！！！
回答：#include <tream.h>#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef int datatype;typedef struct LNode{float coef; /*多项式系数*/int expn; /*多项式指数*/struct LNode *next;}LNode,*linklist;/*---------创建带头结点的多项式链表--------*/linklist creat(){ linklist head,s,p,pre;float coef;int expn;head=(linklist)malloc(sizeof(LNode)); /*表头结点*/head->next=NULL;printf("输入系数：");scanf("%f",&coef);printf("输入指数：");scanf("%d",&expn);while (coef!=0.0) { printf("当系数等于零的时候结束！");s=(linklist)malloc(sizeof(LNode)); /*生成新结点*/s->coef=coef;s->expn=expn;s->next=NULL;pre=head; /*插入到有序的多项式链表中去*/p=head->next;while (p && p->expn <s->expn) { pre=p;p=p->next;}s->next=p;pre->next=s;printf("读下一项：\n");printf("输入系数：\n");scanf("%f",&coef); printf("\n");printf("输入指数:");scanf("%d",&expn);}return head;}/*-----------输出多项式链表-------------*/void print(linklist head) { linklist p;p=head->next;while (p){ printf("%fX^%d+",p->coef,p->expn);p=p->next;}}/*-------------多项式相加----------------*/linklist add(linklist pa,linklist pb){linklist p,q,pre,r,head;float x;head=pa; p=pa->next; //p,q 指向头接点的下一个接点，即多项式的第一个接点q=pb->next;pre=pa; //pre指向p的前驱while((p!=NULL)&&(q!=NULL)) //处理多项式的相加的问题if(p->expn<q->expn) {pre=p;p=p->next;}else if (p->expn==q->expn){x=p->coef+q->coef;if(x!=0) //系数相加不为0的情况{p->coef=x;pre=p;p=p->next;}else //系数相加为0的情况{pre->next=p->next;free(p);p=pre->next;}r=q;q=q->next;free(r);}else {r=q->next;q->next=p;pre->next=q;pre=q;q=r;}if(q!=NULL)pre->next=q;free(pb); return head;}/*----主程序------*/void main(){linklist a,b,c;printf("请输入第一个多项式：");a=creat(); /*创建多项式链表a*/printf("请输入第二个多项式：");b=creat(); /*创建多项式链表b*/cout<<"您输入的第一个多项式为："<<endl;print(a);cout<<"您输入的第二个多项式为："<<endl;print(b);cout<<endl;cout<<"两多项式相加后为："<<endl;c=add(a,b); /* 计算多项式a+b */print(c);