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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整word版一元多项式计算器报告C语言编程.docx

1、完整word版一元多项式计算器报告C语言编程实 验 报 告题目:编制一个一元多项式基本运算的程序 姓名: 学号:PB110130 一、需求分析1在通常的应用中,多项式的次数可能很高且变化很大,使得顺序存储结构的最大长度很难确定。由稀疏多项式的特点,故采用链式存储结构,可以不会带来浪费存储空间。2程序中单链表存储,根据链表的指数域,对链表进行升序排序,可给运算带来方便。 3程序设计是在VC6.0环境下设计的的。4程序执行的命令为(程序主界面):二、概要设计抽象数据类型一元多项式的定义如下:1.LNode *MakeNode(double coef, int exp) 通过传入指数和系数创建一个节

2、点,返回该节点的地址。2.void InitList(LinkList &L) 初始化,带头节点3.void PrintPolyn (LinkList L) 传入链表的指针,打印该链表4.LinkList CreatPolyn(void)/输入m项的系数和指数,建立表示一元多项式的有序链表L5.double SumPolyn(LinkList L,double x) 传入链表的指针及x值,求多项式的值。6.void DestroyPolyn (LinkList &L) 销毁多项式,去掉头节点7.void ClearPolyn (LinkList L) 清空多项式,保留节点8.void Copy

3、Polyn (LinkList La, LinkList Lb) 将La位置的多项式复制到Lb位置9.void AddPolyn(LinkList L,LinkList J ,LinkList K) 将a和b多项式相加存到c10.void MultiplyPolyn(LinkList L,LinkList J,LinkList K) 将a和b相减存到c11. void MultiplyPolyn(LinkList L,LinkList J,LinkList K) 将a和b多项式相乘存到c12。 void OrderInsert(LinkList L,LNode *r) /根据链表的expn指数

4、域,对链表进行升序插入。13。 void DifferentialPolyn(LinkList L,LinkList L2) 对L1求导存到L214. void IntegralPolyn(LinkList L,LinkList &L2) 对L1积分存到L22。 主程序:void main( )初始化;While(1)Switch()选择命令;处理命令;三、详细设计1.元素类型、结点类型和指针类型 typedef struct PolyNode int expn; /指数 double coef;/系数 struct PolyNode next;LNode,*LinkList; 2几个基本操作

5、的函数 1. LNode *MakeNode (double coef,int expn)/制造节点LNode *p;p=(LNode*)malloc(sizeof(LNode));pcoef=coef;pexpn=expn;p-next=NULL;return p;2。 void OrderInsert(LinkList L,LNode r) /根据链表的expn指数域,对链表进行升序插入 if(!L) printf(error”); LNode *p,*q; p=L; while(pnext&p-nextexpnrexpn) p=p-next; if(pnext&p-next-expn=r

6、-expn) pnextcoef+=rcoef; if(p-nextcoef=0) q=pnext; pnext=q-next; free(q); free(r); else rnext=pnext; pnext=r; 3。 void AddPolyn(LinkList L,LinkList J,LinkList K)/多项式相加 if(!L!J) printf(errorn”); return; LNode *p,*q,m; p=L-next; q=J-next; InitList(K); while(p) m=MakeNode(pcoef,p-expn); OrderInsert(K,m)

7、; p=pnext; while(q) m=MakeNode(q-coef,q-expn); OrderInsert(K,m); q=qnext; 4. void MultiplyPolyn(LinkList L,LinkList J,LinkList K)/多项式相乘 if(!L!J) printf(”error); return; LNode p,*q,m; p=L-next; InitList(K); while(p) q=Jnext; while(q) m=MakeNode(pcoefqcoef,pexpn+q-expn); OrderInsert(K,m); q=q-next; p=

8、pnext; 5.LinkList CreatPolyn(void)/输入m项的系数和指数,建立表示一元多项式的有序链表L LNode *p; LinkList head; double c; int e; InitList(head); printf(输入系数、指数,系数为0时结束”); while(1) scanf(”%lf”,&c); if(c=0) break; scanf(”d,&e); p=MakeNode(c,e); OrderInsert(head,p); return head;6。void DifferentialPolyn(LinkList L,LinkList L2)

9、/求导 LNode p,r; if(!L) return; InitList(L2); r=L2; p=Lnext; while(p) if(pexpn=0) rnext=MakeNode(0,0); else rnext=MakeNode(pcoefp-expn,pexpn-1); r=rnext; p=p-next; r-next=NULL;3.主函数define N 12void main() LinkList PN=NULL; int menu,i,j,l; double k,sum; while(1) printf(”n”); printf( 多项式计算器 n”); printf(=

10、n); printf( 新建-1 打印2 复制-3n); printf(” 求值-4 相加-5 相减6n”); printf(” 微分-7 销毁-8 清空9n”); printf(” 积分-10 相乘-11 退出-0n); printf(”=n); printf( 请选择:n); scanf(”d”,&menu); switch(menu) case 0:return; case 1: printf(输入新多项式的下标(0-d):”,N-1); scanf(”d,i); Pi=CreatPolyn(); break; case 2: for(i=0;iN;i+) printf(” P%d =

11、,i); printPolyn(Pi); break; case 3: printf(输入被复制的多项式和新多项式的下标(0%d): ”,N1); scanf(”%dd”,&i,j); CopyPolyn(Pi,Pj); break; case 4: printf(”输入要求值多项式的下标(0-%d)和X值:,N-1); scanf(dlf,i,k); sum=SumPolyn(Pi,k); printf(”多项式值为%lf”,sum); break; case 5: printf(”输入相加两项的多项式和新多项式的下标(0d): ”,N-1); scanf(”%d%dd,i,j,l); Ad

12、dPolyn(Pi,Pj,Pl); break; case 6: printf(”输入减两项的多项式和新多项式的下标(0-%d): ”,N-1); scanf(%ddd”,i,j,l); MinusPolyn(Pi,Pj,Pl); break; case 7: printf(”输入求导的多项式的下标(0-d)和新多项式的下标(0-%d): ,N1,N1); scanf(dd,i,j); DifferentialPolyn(Pi,Pj); break; case 8: printf(”输入被销毁多项式的下标(0-d): ,N1); scanf(”d”,&i); DestroyPolyn(Pi);

13、 break; case 9: printf(”输入被清空多项式的下标(0-d): ”,N1); scanf(%d”,&i); ClearPolyn(Pi); break; case 10: printf(输入求积分的多项式的下标(0%d)和新多项式的下标(0-%d): ”,N-1,N-1); scanf(%dd,&i,j); IntegralPolyn(Pi,Pj); break; case 11: printf(”输入相乘两项的多项式和新多项式的下标(0-%d): ,N1); scanf(d%dd”,&i,j,&l); MultiplyPolyn(Pi,Pj,Pl); break; 四、调试分析1刚开始时,忽略了一些变量参数的标识,使调试程序时费了不少功夫。应注重确定参数的变量

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

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