2022年多项式相加、相乘程序设计类课程报告 .pdf

上传人:C****o 文档编号:40157120 上传时间:2022-09-08 格式:PDF 页数:10 大小:347.55KB
返回 下载 相关 举报
2022年多项式相加、相乘程序设计类课程报告 .pdf_第1页
第1页 / 共10页
2022年多项式相加、相乘程序设计类课程报告 .pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《2022年多项式相加、相乘程序设计类课程报告 .pdf》由会员分享,可在线阅读,更多相关《2022年多项式相加、相乘程序设计类课程报告 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、可编辑修改精品文档福建农林大学计算机与信息学院(程序设计类课程)实验报告课程名称:姓名:系:专业:年级:学号:指导教师:职称:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -可编辑修改精品文档福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术年级:姓名:学号:实验室号 _ 计算机号实验一 线性表及其应用(多项式相加、相乘)一、实验目的和要求1、熟悉 tc 的运行环境,并可以熟练的使用tc;2、掌握链表存储的方法以及基本操作;3、掌握内存的动态分配和释放方法;4、熟悉 C语言程序的基本格式与规范。二、实验内容和原理1、实验内容:设计一个一元多项式的简单

2、计算程序,其基本功能有:(1)输入并建立多项式;(2)输出多项式;(3)多项式的相加减;(4)多项式的相乘。利用单链表实现。2、实验原理:将两多项式存入链表lianbiao1、lianbiao2,用 pointer1扫描 lianbiao1,pointer2扫描lianbiao2,结果保存在lianbiao3中(用 pointer3来创建 lianbiao3)三、实验环境硬件:(1)学生用微机(2)多媒体实验教室(3)局域网环境软件:(1)Windows XP 中文操作系统(2)Turbo C 3.0四、算法描述及实验步骤1、描述1.定义创建链表的函数,然后创建三个链表,一个用于存放结果。2.

3、定义多项式相加的函数实现多项式的相加功能,定义多项式的相乘功能。3.定义打印链表和释放链表的函数。4.最后在主函数里面调用这些函数,实现多项式的相加和相乘。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -可编辑修改精品文档例子:A(X)=3X+7X6-9X9B(X)=2X-3+7-3X+8X3+X5(1)执行加法操作,输出“lianbiao1+lianbiao2:(2,-3)(7,0)(8,5)(1,5)(7,6)(-9,9)”(2)执行乘法操作,输出“lianbiao1*lianbiao2:(6,-2)(21,1)(-9,2)(14,3)(55,6)(3,6)(-2

4、1,7)(-63,9)(27,10)(56,11)(7,11)(-72,14)(-9,14)”2、框图名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -可编辑修改精品文档3、代码(注释)#include stdio.h /*输入输出函数的头文件*/#include alloc.h /*alloc.h是动态分配内存空间头文件*/typedef struct node/*定义节点,包含两个数据域(c 和 e)和一个指针域(*next)*/int c,e;/*c 是指多项式的系数,e是项的指数*/struct node*next;/*定义 next 为指向下一个结点的指针*/

5、Pn;/*定义 Pn类型*/Pn*create()/*创建链表*/Pn*pointer,*lianbiao;int n;lianbiao=malloc(sizeof(Pn);/*用 malloc 动态分配函数给链表分配内存空间*/printf(n:);/*提示用户输入多项式的项数*/scanf(%d,&n);/*接收用户输入的多项式的项数*/pointer=lianbiao;while(n)/*对 n 进行判断,当n 不为零时执行while 循环语句*/pointer-next=malloc(sizeof(Pn);/*为链表新的节点申请空间*/名师资料总结-精品资料欢迎下载-名师精心整理-第

6、4 页,共 10 页 -可编辑修改精品文档pointer=pointer-next;/*将 pointer下移*/printf(c e:);scanf(%d%d,&pointer-c,&pointer-e);/*将系数 c,指数 e 存入链表中的新节点*/n-;/*没当输入一项时,项数n 就减一*/pointer-next=NULL;/*如果 pointer指向的下一个结点的指针域为空,说明链表已经创建好了*/return lianbiao;void OUT(Pn*lianbiao)/*打印输出链表*/Pn*pointer=lianbiao-next;while(pointer)/*打印出当前

7、的结点系数c 和指数 e,直到链表为空*/printf(%d,%d),pointer-c,pointer-e);/*打印出多项式系数c 和指数 e*/pointer=pointer-next;/*打印出当前结点后,将指针移到下一个节点*/printf(n);/*用n 换行*/void Free(Pn*lianbiao)/*释放链表空间*/Pn*pointer=lianbiao;/*将 pointer指向头节点*/while(pointer)/*释放链表中的结点,直到 pointer链表为空时推出循体*/lianbiao=lianbiao-next;/*删除当前节点*/free(pointer)

8、;/*释放当前结点的空间*/pointer=lianbiao;/*当 pointer指向头结点指针时结束循环*/Pn*add(Pn*lianbiao1,Pn*lianbiao2)/*多项式相加*/名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -可编辑修改精品文档Pn*lianbiao3,*pointer3,*pointer1=lianbiao1-next,*pointer2=lianbiao2-next;/*建立新的链表lianbiao3,用于存放lianbiao1与 lianbiao2相加后的结果*/int c,e;/*这里的 c 为多项式相加后的系数,而 e 为结

9、点相加后的指数*/pointer3=lianbiao3=malloc(sizeof(Pn);/*用 malloc 为 lianbiao3申请空间*/lianbiao3-next=NULL;while(pointer1|pointer2)/*当 pointer1或 pointer2不为空时,分成3 种情况*/if(pointer1&(pointer2=NULL|pointer1-ee)/*第一种是当pointer1不空并且 pointer2为空,或者 pointer1所指的指数e 小于 pointer2所指的指数e 时*/c=pointer1-c;/*将 pointer1当前所指结点的系数c 赋

10、值给 c*/e=pointer1-e;/*将 pointer1当前所指结点的系数e 赋值给 e*/pointer1=pointer1-next;/*将 pointer1移到下一结点*/else if(pointer2&(pointer1=NULL|pointer2-ee)/*第二种是当pointer2不空且 pointer1为空或者pointer2所指的指数e 小于 pointer1所指的指数e 时*/c=pointer2-c;e=pointer2-e;pointer2=pointer2-next;else /*第三种是当pointer1、pointer2都不为空且pointer1的指数 e

11、等于pointer2的指数 e 时*/c=pointer1-c+pointer2-c;/*将 pointer1与 pointer2所指的系数相加*/e=pointer1-e;pointer1=pointer1-next;/*将 pointer1下移*/pointer2=pointer2-next;/*将 pointer2下移*/if(c)pointer3-next=malloc(sizeof(Pn);/*申请新结点的空间*/pointer3=pointer3-next;/*pointer3下移*/pointer3-c=c;/*把系数 c 放入新结点*/名师资料总结-精品资料欢迎下载-名师精心整

12、理-第 6 页,共 10 页 -可编辑修改精品文档pointer3-e=e;/*把指数 e 放入新结点*/pointer3-next=NULL;/*当所指的指针为NULL时,链表结束*/return lianbiao3;/*返回两个多项式相加的结果lianbiao3*/Pn*mx1(Pn*pointer1,Pn*lianbiao2)/*多项式相乘*/Pn*lianbiao3,*pointer3,*pointer2=lianbiao2-next;/*定义链表lianbiao3*/pointer3=lianbiao3=malloc(sizeof(Pn);/*为 lianbiao3申请空间,并将 p

13、ointer3指向 lianbiao3*/lianbiao3-next=NULL;while(pointer2)/*当 pointer2不为空时,执行 while 循环*/pointer3-next=malloc(sizeof(Pn);/*为新创结点申请空间*/pointer3=pointer3-next;/*将 pointer3指向新结点*/pointer3-c=pointer1-c*pointer2-c;/*将 pointer1的系数乘以pointer2-c*/pointer3-e=pointer1-e+pointer2-e;/*将 pointer1的指数乘以pointer2-e*/poi

14、nter2=pointer2-next;/*pointer2下移*/pointer3-next=NULL;return lianbiao3;/*将结果 lianbiao3返回*/Pn*mxm(Pn*lianbiao1,Pn*lianbiao2)/*多项式相乘*/Pn*lianbiao3,*pointer1=lianbiao1-next,*htemp;lianbiao3=malloc(sizeof(Pn);lianbiao3-next=NULL;while(pointer1)/*当 pointer1不为空,执行while 循环*/htemp=mx1(pointer1,lianbiao2);/*将

15、相乘结果放到链表htemp*/lianbiao3=add(lianbiao3,htemp);/*将 htemp 中的多项式加上lianbiao3中的多项式*/pointer1=pointer1-next;Free(htemp);/*释放链表htemp*/名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -可编辑修改精品文档return lianbiao3;/*返回结果lianbiao3*/main()Pn*lianbiao1,*lianbiao2,*lianbiao3;/*定义三个链表lianbiao1,lianbiao2,lianbiao3*/clrscr();prin

16、tf(Create lianbiao1n);lianbiao1=create();/*创建链表lianbiao1*/printf(nPrintf lianbiao1n);OUT(lianbiao1);/*打印出链表lianbiao1*/printf(nCreate lianbiao2n);lianbiao2=create();/*创建链表lianbiao2*/printf(nPrintf lianbiao2n);OUT(lianbiao2);/*打印出链表lianbiao2*/printf(nlianbiao1+lianbiao2:);lianbiao3=add(lianbiao1,lianb

17、iao2);/*把 lianbiao1和 lianbiao2相加的结果赋给lianbiao3*/OUT(lianbiao3);/*打印出 lianbiao3*/Free(lianbiao3);/*释放 lianbiao3*/printf(nlianbiao1*lianbiao2:);lianbiao3=mxm(lianbiao1,lianbiao2);/*把 lianbiao1和 lianbiao2相乘的结果赋给lianbiao3*/OUT(lianbiao3);/*输出 lianbiao3*/Free(lianbiao1);/*释放 lianbiao1*/Free(lianbiao2);Fr

18、ee(lianbiao3);getch();五、调试过程#include malloc.h语句出错,多了一个m,后来改为#include alloc.h,就编译通过了。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -可编辑修改精品文档六、实验结果测试数据(1):取两项多项式为:9+3x取一项多项式为:2X-3实验结果(1):这两个项式相加结果为:lianbiao1+lianbiao2:2X-3+9+3X 这两个项式相乘结果为:lianbiao1*lianbiao2:18X-3+6X-2实验截图(1):测试数据(2):取三项多项式为:(3,1)(7,6)(-9,9)取五

19、项多项式为:(2,-3)(7,0)(-3,1)(8,5)(1,5)实验结果(2):这两个项式相加:lianbiao1+lianbiao2:(2,-3)(7,0)(8,5)(1,5)(7,6)(-9,9)这两个项式相乘:lianbiao1*lianbiao2:(6,-2)(21,1)(-9,2)(14,3)(55,6)(3,6)(-21,7)(-63,9)(27,10)(56,11)(7,11)(-72,14)(-9,14)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -可编辑修改精品文档实验截图(2):七、总结通过这次实验我熟悉tc 的运行环境,并可以熟练的使用tc,掌握链表存储的方法以及基本操作、内存的动态分配和释放方法并且熟悉C语言程序的基本格式与规范。附录:参考文献1 宁正元、王秀娟算法与数据结构,北京:清华大学出版社,2006;2 严蔚敏、佩娟等数据结构,北京:国防工业出版社,1981;3 宁正元数据结构用C语言描述,北京:中国水利水电出版社,20004 中国计算机科学与技术学科教程2002 研究组中国计算机科学与技术学科教程2002,北京:清华大学出版社,2002;5 陈小平数据结构,南京:南京大学出版社,1994。.名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁