欢迎来到天天文库
浏览记录
ID:41890267
大小:127.96 KB
页数:8页
时间:2019-09-04
《(C语言)加法运算实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一元多项式的加法运算一、需求分析1、程序的基本功能①按照指数升序次序,输入并建立多项式A与B。②计算多项式A与B的和,即建立多项式A+B。③按照指数升序次序,输出多项式A、B、A+B。2、输入输出要求:①输入多项式;确定多项式的项数,按照指数递增的顺序依次输入系数不为0的子项,当输入个数与预期相同时结束输入。②输出多项式:当链表为空吋,链表不为空且只有一个结点并且数据为0时,直接输出0;链表(至少有两个结点)不为空且第一个结点为0时,直接输出第二个结点;当结点存在时,输出结点。输出形式类似于数学表达式。要求:a.系数值为1的非零次项的输出形式屮略去系数1;b.指数为0的项输出形式中略去指数部
2、分;c.多项式的第一项的系数符号为正时,不输出“+”,其他项要输出“+”、“■”符号。3、测试数据①(x+xA3)+(-x-xA3)=0;②(x+xA100)+(xA100+xA200)=x+xA100+xA200;③(x+xA2+xA3)+0=x+xA2+xA3;@(3xA-3-x+4.1xA2-1.2xA9)+(-3xA-3-5.1xA2+7.8xA12)=-x-xA2-1.2xA9+7.8xA12;二、概要设计1、抽象数据类型的定义:对于一元n次多项式而言,每一项都由系数和指数两部分组成,因此可将多项式抽象成一个由“系数、指数”构成的线性表,其中多项式的每一个系数非零的子项作为线形表中
3、的一个元素。因此,定义一个带头结点的单链表來表示一元多项式。2、主模块的流程及各子模块的主要功能:①主函数模块:intmain(){定义A、B两个链表指针;链表初始化;输入A、B;输出A、B;输出A+B;}②输入模块:PolyLinkinput(PolyLinkA)按指数递增的顺序,依次输入多项式的各个子项,并插入到多项式链表中;①加法模块:PolyLinkadd(PolyLinkA,PolyLinkB){对于两个多项式中指数相同的子项,其系数相加,若系数非零,则构成“和多项式”中的一项;对于指数不同的项,直接构成“和多项式”屮的一项;}②结点输出模块:voidoutput(PolyNode
4、*p){按照系数为・1、1及其它与指数为0、1及其它分情况输出不同表达形式;}③链表输出模块:viodresult(PolyLinkA){当链表为空时,输出o:链表不为空时,输出第一个结点,Z后的结点输岀时,在前面加上相应的正负号;1④链表初始化:{对定义的链表屮请空间进行初始化;}3、模块之I'可的层次关系:主函数模块输入模块加法模块初始化模块链表输出模块结点输出模块图2・1三、详细设计1、定义的相关数据类型:typedefstructpnodefloatdata;intexp;structpnode*next;}PolyNode,*PolyLink;2、函数的调用关系:maininput
5、addIni.polynoderesultoutput图3・1四、调试分析1、调试中遇到的问题及对问题的解决方法:⑴遇到的问题:①运行加法吋出现内存不足导致程序无法进行;②当链表为空时无法正常输出结果0;③当链表为0时,做加法时输出结果仍会出现0;④某些情况下输出的结果不符合数学表达式。⑵解决方法:①进行链表的初始化,使链表;②当链表为空时,输出0后然后结朿程序。无法正常输出结果是因为指令不明确,p=p->next无法执行;③结点输出时分类不全面,增加分类即可;2、算法的时间复杂度:假设两个多项式分别有m项和n项,建立多项式吋,吋间复杂度为o(m+n),两个多项式相加的循环执行次数最多有m+
6、n次,时间复杂度为o(m+n),因此,时间复杂度为o(m+n)©五、使用说明及测试结果1、使用说明:①输入第一个多项式的项数并按指数递增的顺序输入;②输入第二个多项式的项数并按指数递增的顺序输入;③程序运行界面如下:
7、^r"C:UsersAdministratorDesktop£^^^^^wangdi—元參项式Debug玻验・exe1100100200Pressanykeytocontinue士.J扌DD数数系系M書入入X*入入厶刖4刖L厶也一刖式数项顶个式-项入入厶刖111100扌扌2DmuX数数0+系系10入入父厶刖4刖J=^式数项项0代式10二项1112、测试结果:①输入
8、A=x+3xA6-8xAll输入B=6-3xA6+21xA9输出A+B=6+x+21xA9-8xAll②输入A=x+xA3输入B=-x-xA3输出A+B=0③输入A=x+xA100输入B=xA100+xA200输出A+B=x+2xA100+xA200④输入A=x+xA2+xA3输入B=0输出A+B二x+xT+xT六、源程序#include#includetypede
此文档下载收益归作者所有