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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(C语言多项式运算.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言多项式运算.docx

1、C语言多项式运算#include#include#includetypedef struct PolyNode float coef; /系数 int expn; /指数 struct PolyNode *next;LNode,*LinkList;LNode *MakeNode(float coef, int expn) LNode *p; p=(LNode*)malloc(sizeof(LNode); p-coef=coef; p-expn=expn; p-next=NULL; return p;void InitList(LinkList &L) L=MakeNode(0,-1); ret

2、urn;void PrintPolyn(LinkList L) LNode *p; if(!L) printf(NULLn); else if(L-next=NULL) printf(0n); else p=L-next; while(p) printf(%gX%d,p-coef,p-expn); p=p-next; if(p&p-coef0)printf(+); printf(n); void OrderInsert(LinkList L, LNode *s) LNode *p,*q; p=L; while(p-next & p-next-expnexpn) p=p-next; if(p-n

3、ext & p-next-expn=s-expn) p-next-coef+=s-coef; if(p-next-coef=0) q=p-next; p-next=q-next; free(q); free(s); else s-next=p-next; p-next=s; LinkList creatlist(void) LinkList head; LNode *p; float c; int e; InitList(head); printf(输入系数指数,系数为0时结束:); while(1) scanf(%f,&c); if(c=0)break; scanf(%d,&e); p=Ma

4、keNode(c,e); OrderInsert(head,p); return head;void DestroyPolyn(LinkList &L) LNode *p=L,*q; while(p) q=p-next; free(p); p=q; L=NULL;void ClearPolyn(LinkList &L) LNode *p,*q; if(L=NULL) return; p=L-next; L-next=NULL; while(p) q=p-next; free(p); p=q; void CopyPolyn(LinkList La, LinkList &Lb) LNode *p,

5、*r; if(!La) return; InitList(Lb); r=Lb; p=La-next; while(p) r-next=MakeNode(p-coef,p-expn); r=r-next; p=p-next; r-next=NULL;void AddPolyn(LinkList La,LinkList Lb,LinkList &Lc) LNode *p,*q,*r; InitList(Lc); if(!Lc) return; p=La-next; q=Lb-next; r=Lc; while(p!=NULL&q!=NULL) r-next=(LNode*)malloc(sizeo

6、f(LNode); if(p-expn=q-expn) r-next-coef=p-coef+q-coef; r-next-expn=p-expn; r=r-next; p=p-next; q=q-next; else if(p-expnq-expn) r-next-coef=q-coef; r-next-expn=q-expn; q=q-next; r=r-next; else r-next-coef=p-coef; r-next-expn=p-expn; p=p-next; r=r-next; if(q=NULL) while(p!=NULL) printf(4n); r-next=(LN

7、ode*)malloc(sizeof(LNode); r-next-coef=p-coef; r-next-expn=p-expn; r=r-next; p=p-next; if(p=NULL) while(q!=NULL) printf(5n); r-next=(LNode*)malloc(sizeof(LNode); r-next-coef=q-coef; r-next-expn=q-expn; r=r-next; q=q-next; r-next=NULL;void SubPolyn(LinkList La,LinkList Lb,LinkList &Lc) LNode *p,*q,*r

8、,*h; float min; InitList(Lc); if(!Lc) return; p=La-next; q=Lb-next; r=Lc; while(p!=NULL&q!=NULL) r-next=(LNode*)malloc(sizeof(LNode); if(p-expn=q-expn) min=p-coef-q-coef; if(min!=0) r-next-coef=min; r-next-expn=p-expn; r=r-next; p=p-next; q=q-next; else h=r-next; free(h); p=p-next; q=q-next; else if

9、(p-expnq-expn) printf(2n); r-next-coef=-q-coef; r-next-expn=q-expn; q=q-next; r=r-next; else printf(3n); r-next-coef=p-coef; r-next-expn=p-expn; p=p-next; r=r-next; if(q=NULL) while(p!=NULL) printf(4n); r-next=(LNode*)malloc(sizeof(LNode); r-next-coef=p-coef; r-next-expn=p-expn; r=r-next; p=p-next;

10、if(p=NULL) while(q!=NULL) r-next=(LNode*)malloc(sizeof(LNode); r-next-coef=-q-coef; r-next-expn=q-expn; r=r-next; q=q-next; r-next=NULL;double SumPolyn(LinkList La,double &x) double Sum=0; if(!La) printf(error); LNode *p; p=La-next; while(p) Sum+=p-coef*pow(x,p-expn); p=p-next; return Sum;void DaoSh

11、uPolyn(LinkList La,LinkList &Lb,int &x) LNode *p,*q,*k; int i; CopyPolyn(La,Lb); if(!La|!Lb) printf(error); p=La; q=Lb; for(i=0;inext&q-next-expn0) q-next-coef=q-next-coef*q-next-expn; q-next-expn=q-next-expn-1; q=q-next; else if(q-next&q-next-expn=0) k=q-next; q-next=k-next; free(k); else q=q-next;

12、 q=Lb; void JifenPolyn(LinkList La,LinkList &Lb,int &x) LNode *p,*q; int i; CopyPolyn(La,Lb); if(!La|!Lb) printf(error); p=La; q=Lb; for(i=0;inext) q-next-expn=q-next-expn+1; q-next-coef=q-next-coef/q-next-expn; q=q-next; q=Lb;double DingJifenPolyn(LinkList La,int &w,double &a,double &b) LinkList Lb

13、; double A; JifenPolyn(La,Lb,w); A=SumPolyn(Lb,a)-SumPolyn(Lb,b); return A;void MulityPolyn(LinkList La,LinkList Lb,LinkList &Lc) LNode *p,*q,*r; LinkList Lr; InitList(Lr); InitList(Lc); r=Lr; p=La; q=Lb; if(!La|!Lb|!Lc) printf(error); while(p-next) while(q-next) r=(LNode*)malloc(sizeof(LNode); r-co

14、ef=p-next-coef*q-next-coef; r-expn=p-next-expn+q-next-expn; OrderInsert(Lc,r); q=q-next; p=p-next; q=Lb; void PowPolyn(LinkList La,LinkList &Lb,int v) CopyPolyn(La,Lb); int i=0; for(i=0;iv-1;i+) MulityPolyn(La,Lb,Lb); #define N 15void main() LinkList PN=NULL; int i,j,k,menu; while(1) printf(n); prin

15、tf( 0 - Exitn); printf( 1 - Createn); printf( 2 - Printn); printf( 3 - Copyn); printf( 4 - Addn); printf( 5 - Subn); printf( 6 - Destroyn); printf( 7 - Clearn); printf( 8 - Sumn); printf( 9 - DaoShun); printf( 10 - Mulityn); printf( 11 - Jifenn); printf( 12 - DingJifenn); printf( 13 - Pown); printf(

16、n Please Choose: ); scanf(%d,&menu); switch(menu) case 0: return; case 1: printf(输入新多项式的下标(0-%d): ,N-1); scanf(%d,&i); Pi=creatlist(); break; case 2: for(i=0;iN;i+) printf( P%d = ,i); PrintPolyn(Pi); break; case 3: printf(输入被复制的多项式和新多项式的下标(0-%d): ,N-1); scanf(%d%d,&i,&j); CopyPolyn(Pi,Pj); break; ca

17、se 4: printf(输入两相加的多项式的和生成多项式的下标(0-%d),N-1); scanf(%d%d%d,&i,&j,&k); AddPolyn(Pi,Pj,Pk); break; case 5: printf(输入两相减的多项式和生成多项式的下标(0-%d),N-1); scanf(%d%d%d,&i,&j,&k); SubPolyn(Pi,Pj,Pk); break; case 6: printf(输入被销毁多项式的下标(0-%d): ,N-1); scanf(%d,&i); DestroyPolyn(Pi); break; case 7: printf(输入被清空多项式的下标(

18、0-%d): ,N-1); scanf(%d,&i); ClearPolyn(Pi); break; case 8: double Sum,x; printf(输入要求多项式的下标(0-%d)和x的值,N-1); scanf(%d%lf,&i,&x); Sum=SumPolyn(Pi,x); printf(Sum=%lf,Sum); break; case 9: int y; printf(输入要求导的多项式下标和求导后多项式下标(0-%d)以及求导次数yn,N-1); scanf(%d%d%d,&i,&j,&y); DaoShuPolyn(Pi,Pj,y); break; case 10:

19、printf(输入两个相乘多项式的下标和生成多项式的下标(0-%d),N-1); scanf(%d%d%d,&i,&j,&k); MulityPolyn(Pi,Pj,Pk); break; case 11: int z; printf(输入要积分的多项式下标和积分后的多项式下标(0-%d)以及积分的次数zn,N-1); scanf(%d%d%d,&i,&j,&z); JifenPolyn(Pi,Pj,z); break; case 12: int w; double a,b,S; printf(输入要积分的多项式下标(0-%d)以及积分的次数w,以及上下限a,bn,N-1); scanf(%d%d%lf%lf,&i,&w,&a,&b); S=DingJifenPolyn(Pi,w,a,b); printf(积分后的值S=%lf,S); break; case 13: int v; printf(输入要乘方的多项式下标和乘方后的多项式下标(0-%d)以及乘方次数vn,N-1); scanf(%d%d%d,&i,&j,&v); PowPolyn(Pi,Pj,v); break; default: ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1