ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:56KB ,
资源ID:6259292      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6259292.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计一个一元多项式加法器.doc)为本站会员(wspkg9802)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

设计一个一元多项式加法器.doc

1、课程设计题目一:设计一个一元多项式加法器基本要求:(1)输入并建立多项式;(2)两个多项式相加;(3)输出多项式:n, c1, e1, c2, e2, cn , en, 其中,n 是多项式项数,ci和 ei 分别是第 i 项的系数和指数,序列按指数降序排列。#include#includetypedef struct Polynomialfloat coef;int expn;struct Polynomial *next;*Polyn,Polynomial; /Polyn 为结点指针类型void Insert(Polyn p,Polyn h) if(p-coef=0) free(p); /系

2、数为 0 的话释放结点elsePolyn q1,q2;q1=h;q2=h-next;while(q2q2=q2-next;if(q2free(p);if(!q2-coef) /系数为 0 的话释放结点q1-next=q2-next;free(q2);else /指数为新时将结点插入p-next=q2;q1-next=p;/InsertPolyn CreatePolyn(Polyn head,int m)/建立一个头指针为 head、项数为 m 的一元多项式int i;Polyn p;p=head=(Polyn)malloc(sizeof(struct Polynomial);head-next

3、=NULL;for(i=0;icoef,Insert(p,head); /调用 Insert 函数插入结点return head;/CreatePolynvoid DestroyPolyn(Polyn p)/销毁多项式 pPolyn q1,q2;q1=p-next;q2=q1-next;while(q1-next)free(q1);q1=q2;/指针后移q2=q2-next;void PrintPolyn(Polyn P) Polyn q=P-next; int flag=1;/项数计数器if(!q) /若多项式为空,输出 0putchar(0); printf(“n“);return; wh

4、ile (q)if(q-coef0 /系数大于 0 且不是第一项if(q-coef!=1 if(q-expn=1) putchar(X);else if(q-expn) printf(“X%d“,q-expn);elseif(q-coef=1)if(!q-expn) putchar(1); else if(q-expn=1) putchar(X); else printf(“X%d“,q-expn);if(q-coef=-1)if(!q-expn) printf(“-1“); else if(q-expn=1) printf(“-X“); else printf(“-X%d“,q-expn);

5、q=q-next; flag+;/whileprintf(“n“);/PrintPolynint compare(Polyn a,Polyn b)if(aelse if(!a|a-expnexpn) return -1;else return 0;else if(!a/a 多项式已空,但 b 多项式非空else return 1;/b 多项式已空,但 a 多项式非空/comparePolyn AddPolyn(Polyn pa,Polyn pb)/求解并建立多项式 a+b,返回其头指针Polyn qa=pa-next;Polyn qb=pb-next;Polyn headc,hc,qc;hc=

6、(Polyn)malloc(sizeof(struct Polynomial);/建立头结点hc-next=NULL;headc=hc;while(qa|qb)qc=(Polyn)malloc(sizeof(struct Polynomial);switch(compare(qa,qb)case 1:qc-coef=qa-coef;qc-expn=qa-expn;qa=qa-next;break;case 0: qc-coef=qa-coef+qb-coef;qc-expn=qa-expn;qa=qa-next;qb=qb-next;break;case -1:qc-coef=qb-coef;

7、qc-expn=qb-expn;qb=qb-next;break; /switchif(qc-coef!=0)qc-next=hc-next;hc-next=qc;hc=qc;else free(qc);/当相加系数为 0 时,释放该结点/whilereturn headc;/AddPolynPolyn SubtractPolyn(Polyn pa,Polyn pb)/求解并建立多项式 a+b,返回其头指针Polyn h=pb;Polyn p=pb-next;Polyn pd;while(p) /将 pb 的系数取反p-coef*=-1;p=p-next;pd=AddPolyn(pa,h);f

8、or(p=h-next;p;p=p-next) /恢复 pb 的系数p-coef*=-1;return pd;/SubtractPolynfloat ValuePolyn(Polyn head,float x)/输入 x 值,计算并返回多项式的值Polyn p;int i;float sum=0,t;for(p=head-next;p;p=p-next)t=1;for(i=p-expn;i!=0;)if(icoef*t;return sum;/ValuePolynPolyn Derivative(Polyn head)/求解并建立 a 的导函数多项式,并返回其头指针Polyn q=head-n

9、ext,p1,p2,hd;hd=p1=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点hd-next=NULL;while(q)if(q-expn!=0) /该项不是常数项时p2=(Polyn)malloc(sizeof(struct Polynomial);p2-coef=q-coef*q-expn;p2-expn=q-expn-1;p2-next=p1-next;/连接结点p1-next=p2;p1=p2;q=q-next;return hd;/DervativePolyn MultiplyPolyn(Polyn pa,Polyn pb)/求解并

10、建立多项式 a*b,返回其头指针Polyn hf,pf;Polyn qa=pa-next;Polyn qb=pb-next;hf=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点hf-next=NULL;for(;qa;qa=qa-next)for(qb=pb-next;qb;qb=qb-next)pf=(Polyn)malloc(sizeof(struct Polynomial);pf-coef=qa-coef*qb-coef;pf-expn=qa-expn+qb-expn;Insert(pf,hf);/调用 Insert 函数以合并指数相同的项r

11、eturn hf;/MultiplyPolynvoid DevicePolyn(Polyn pa,Polyn pb)/求解并建立多项式 a*b,返回其头指针Polyn hf,pf,af,temp1,temp2,q;Polyn qa=pa-next;Polyn qb=pb-next;hf=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点, 存储商hf-next=NULL;pf=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点,存储余数pf-next=NULL;temp1=(Polyn)malloc(sizeo

12、f(struct Polynomial);temp1-next=NULL;temp2=(Polyn)malloc(sizeof(struct Polynomial);temp2-next=NULL;temp1=AddPolyn(temp1,pa);while(qa!=NULLtemp2-next-coef=(qa-coef)/(qb-coef);temp2-next-expn=(qa-expn)-(qb-expn);Insert(temp2-next,hf);pa=SubtractPolyn(pa,MultiplyPolyn(pb,temp2);qa=pa-next;temp2-next=NU

13、LL;pf=SubtractPolyn(temp1,MultiplyPolyn(hf,pb);pb=temp1;printf(“商是:“);PrintPolyn(hf);printf(“余数是:“);PrintPolyn(pf);/DevicePolynint main()int m,n,flag=0;float x;Polyn pa=0,pb=0,pc,pd,pe,pf;/定义各式的头指针,pa 与 pb 在使用前付初值 NULLprintf(“请输入 a 的项数:“);scanf(“%d“,pa=CreatePolyn(pa,m);/建立多项式 aprintf(“请输入 b 的项数:“);

14、scanf(“%d“,pb=CreatePolyn(pb,n);/建立多项式 a/输出菜单printf(“*n“);printf(“操作提示:nt1.输出多项式 a 和 bnt2.建立多项式 a+bnt3.建立多项式 a-bn“);printf(“t4.计算多项式 a 在 x 处的值nt5.求多项式 a 的导函数nt6.建立多项式 a*bn“);printf(“t7.建立多项式 a/bnt8.退出n*n“);for(;flag=0)printf(“执行操作“);scanf(“%d“,if(flag=1)printf(“多项式 a:“);PrintPolyn(pa);printf(“多项式 b:

15、“);PrintPolyn(pb);continue;if(flag=2)pc=AddPolyn(pa,pb);printf(“多项式 a+b:“);PrintPolyn(pc);DestroyPolyn(pc);continue;if(flag=3)pd=SubtractPolyn(pa,pb);printf(“多项式 a-b:“);PrintPolyn(pd);DestroyPolyn(pd);continue;if(flag=4)printf(“输入 x 的值:x=“);scanf(“%f“,printf(“多项式 a 的值%gn“,ValuePolyn(pa,x);continue;i

16、f(flag=5)pe=Derivative(pa);printf(“多项式 a 的导函数: “);PrintPolyn(pe);DestroyPolyn(pe);continue;if(flag=6)pf=MultiplyPolyn(pa,pb);printf(“多项式 a*b:“);PrintPolyn(pf);DestroyPolyn(pf);continue;if(flag=7)DevicePolyn(pa,pb);continue;if(flag=8) break;if(flag8) printf(“Error!n“);continue;/forDestroyPolyn(pa);DestroyPolyn(pb);return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报