版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
卧式钻孔组合机床液压系统设计目录1题目…………………32技术参数和设计要求………………33工况分析……………34拟定液压系统原理图………………44.1确定供油方式……………………44.2调速方式的选择…………………54.3速度换接方式的选择……………55液压系统的计算和选择液压元件……………………55.1液压缸主要尺寸的确定………55.1.1工作压力P的确定…………55.1.2计算液压缸内径D和活塞杆直径d……55.1.3计算在各工作阶段液压缸所需的流量…………65.2确定液压泵的流量、压力和选择泵的规格…………………65.2.1泵的工作压力的确定………………65.2.2泵的流量确定……………………75.2.3选择液压泵的规格………………75.2.4与液压泵匹配的电动机的选定……75.3液压阀的选择………………85.4确定管道尺寸………………95.5液压油箱容积的确定…………96液压系统的验算……………………96.1压力损失的验算………………96.1.1工作进给时进油路压力损失……………96.1.2工作进给时回油路的压力损失…………106.1.3变量泵出口处的压力Pp…………………106.1.4快进时的压力损失………106.2系统温升的验算……………117液压缸的设计………………………117.1液压缸工作压力的确定………117.2液压缸的内径D和活塞杆d前面已经计算…………………127.3液压缸的壁厚和外径的计算…………………127.4缸盖厚度的确定………………128参考文献……………131.设计题目:卧式钻孔组合机床液压系统设计2.技术参数和设计要求设计一台卧式钻孔组合机床的液压系统,要求完成如下工作循环:快进→工进→快退→停止。机床的切削力为2×104N,工作部件的重量为7.8×103N,快进与快退速度均为6m/min,工进速度为0.05m/min,快进行程为100mm,工进行程为50mm,加速、减速时间要求不大于0.2s,采用平导轨,静摩擦系数为0.2,动摩擦系数为0.1。设计该组合机床的液压传动系统。3.工况分析根据已知条件,绘制运动部件的速度循环图,如图速度循环图然后计算各阶段的外负载并绘制负载图,如图液压缸所受外负载F包括三种类型,即F=Fw+Ff+Fm式中:Fw—工作负载;Fm—运动部件速度变化时的惯性负载;Ff—导轨摩擦阻力负载,启动时为静摩擦阻力,启动后为动摩擦阻力,对于平导轨Ff可由下式求得:Ff=f(G-Ffn)G—运动部件重力;Fn—垂直于导轨的工作负载;f—导轨摩擦系数于是可得:Ffs=0.2×7.8×103=1560NFfd=0.1×7.8×103=780N上式中,Ffs为静摩擦阻力,Ffd为动摩擦阻力。Fm=GΔv/(g.Δt)式中:g—重力加速度;Δt—加速或减速时间;Δv—Δt时间内的进度变化量在本例中Fm=7.8×103×6/(9.8×0.2×60)=398N根据上述计算结果,列出各工作阶段所受外负载工作循环外负载F(N)工作循环外负载F(N)启动、加速F=Ffs+Fm1928工进F=Ffd+Fw20780快进F=Ffd780快退F=Ffd7804.拟定液压系统原理图4.1确定供油方式考虑到该机床在工作进给时负载较大,速度较低,而在快进、快退时负载较小,速度较高,从节省能量,减少发热考虑,泵源系统宜选用双泵供油或变量泵供油,现采用带压力反馈的限压式变量叶片泵。4.2调速方式的选择在中小型专业机床的液压系统中,进给速度的控制一般采用节流阀或调速阀。根据钻孔类专用机床工作时对低速性能和速度负载特性都有一定要求的特点,决定采用限压式变量泵和调速阀组成的容积节流调速。这种调速回路具有效率高、发热小和速度刚性好的特点,并且调速阀装在回油路上,具有承受负切削力的能力。4.3速度换接方式的选择本系统采用电磁阀的快慢速换接回路,它的特点是结构简单、调节行程比较方便、阀的安装也较简单,但速度换接的平稳性较差。若要提高系统的换接平稳性,则可改用行程阀切换的速度换接回路。5.液压系统的计算和选择液压元件5.1液压缸主要尺寸的确定5.1.1工作压力P的确定工作压力P可根据负载大小及机器的类型来初步确定,现参阅指导书表2-1取液压缸的工作压力为3-5Mpa,本系统取液压缸的工作压力为5Mpa.5.1.2计算液压缸内径D和活塞杆直径d由负载图知最大负载F为20780N,按指导书表2-2执行元件背压的估算值:可取P2为0.5MPa,ηcm为0.95,考虑到快进、快退速度相等,取d/D为0.7。将上述数据代入公式可得D={(4×20780)/[3.14×50×100000×0.95(1-5(1-0.72)/50)]}1/2=0.077(m)圆整为标准值80mm.根据指导书表2-4液压缸内径尺寸系列(GB2348-80),将液压缸内径圆整为标准系列直径D=80mm,活塞杆直径d,按d/D=0.7及指导书表2-5活塞杆直径尺寸系列(GB2348-80)活塞杆直径系列取d=56mm。按最低工进速度验算液压缸的最小稳定速度,可得:A≥Qmin/Vmin=0.05×1000/5=10(cm2)式中:Qmin是由产品样本查得GE系列调速阀AQF3-E10B的最小稳定流量为0.05L/min。A=π×(D2-d2)/4=π×(82-5.62)/4=25(cm2)可见上述不等式能满足,液压缸能达到所需低速。5.1.3计算在各工作阶段液压缸所需的流量Q(快进)=πd2V(快进)/4=π(0.0056)2×6/4=14.8(L/min)Q(工进)=πD2V(工进)/4=π(0.08)2×0.05/4=2.5(L/min)Q(快退)=π(D2-d2)V(快退)/4=π(0.082-0.0562)×6/4=15.4(L/min)5.2确定液压泵的流量、压力和选择泵的规格5.2.1泵的工作压力的确定考虑到正常工作中进油管路有一定的压力损失,所以泵的工作压力为Pp=P1+ΣΔp式中:Pp—液压泵最大工作压力;P1—执行元件最大工作压力;ΣΔp—进油管路中的压力损失,初算是简单系统可取0.2~0.5MPa,复杂系统可取0.5~1.5MPa。本题中取0.5MPa。因此Pp=P1+ΣΔp=5+0.5=5.5(MPa)上述计算所得的Pp是系统的静态压力,考虑到系统在各种工况的过渡阶段出现的动态压力往往超过静态压力。另外考虑到一定的压力贮备量,并确保泵的寿命,因此选泵的额定压力Pa应满足Pa≥(1.25~1.6)Pp。中低压系统取小值,高压系统取大值。在本题中Pa=1.3Pp,Pp=5.5MPa。5.2.2泵的流量确定液压泵的最大流量应为Qp≥KL(ΣQ)max式中:Q—液压泵的最大流量;(ΣQ)max—各执行元件所需流量之和的最大值。如果这时溢流阀正进行工作,尚须加1溢流阀的最小流量2~3L/min;KL—系统泄露系数,一般取1.1~1.3,现取KL=1.2。因此Qp=KL(ΣQ)max=1.2×15.4=18.48(L/min)5.2.3选择液压泵的规格根据以上算得的Pp和Qp,查阅有关手册,现选用YBX—25限压式变量叶片泵,该泵的基本参数为:每转排量q=16mL/r,泵的额定压力P0=6.3MPa,电动机转速n0=1450r/min,容积效率ηv=0.85,总效率η=0.72。5.2.4与液压泵匹配的电动机的选定首先分别算出快进与工进两种不同工况时的功率,取两者较大值作为选择电动机规格的依据。由于在慢进时泵输出的流量减小,泵的效率急剧降低,一般当流量在0.2~1L/min范围内时,可取η=0.03~0.14。同时还应注意到,为了使所选择的电动机在经过泵的流量特性曲线最大功率点时不致停转,需进行验算,即Pb=Qp/η≤Pd式中:Pd—所选电动机额定功率;Pb—限压式变量泵的限定压力;Qp—压力为Pb时,泵的输出流量。首先计算快进时的功率,快进时的外负载为780N,进油路的压力损失定为0.3MPa,由公式可得:Pb=[780/(π0.00562/4)×10-6+0.3]=0.62MPa快进时所需电机功率为:P=PbQp/η=0.62×14.8/(60×0.72)=0.212(kW)工进时:Pb=[20780/(π0.082/4)×10-6+0.3]=4.44(MPa)工进时所需电机功率为:P=PbQp/η=4.44×2.5/(60×0.72)=0.257(kW)查阅电动机产品样本,选用Y90S—4型电动机,其额定功率为1.1kW,额定转速为1400r/min。根据产品样本可查得YBX—25的流量压力特性曲线。再由已知的快进时流量为23.08L/min,工进时的流量为3.93L/min,压力为4.5MPa,作出泵的实际工作时的流量压力特性曲线,如图3-1所示,查得该曲线拐点处的流量为30L/min,压力为3MPa,该工作点对应的功率为P=3×30/(60×0.7)=2.14(kW)所选电动机功率满足要求,拐点处能正常工作。.图3-1YBX—25液压泵特性曲线1—额定压力下的特性曲线;2—实际工作时的特性曲线5.3液压阀的选择该液压系统可采用力士乐系列阀或GE系列阀。本题均选用GE系列阀。根据所拟定的液压系统图,按通过各元件的最大流量来选择液压元件的规格。选定的液压元件如下表:5.4确定管道尺寸油管内径尺寸一般可参照选用的液压元件接口尺寸而定,也可按管路允许流速进行计算。本系统油路流量为差动时流量Q=30L/min,压油路的允许流速取V=4m/s,则内径d=4.6(Q/V)1/2=4.6(30/4)1/2=12.60(mm)若系统主油路流量按快退时取Q=15.4L/min,则可算得油路内径d=9.0mm。综合诸因素,现取油管的内径d为10mm。吸油管同样可按上式计算,现参照YBX—25变量泵吸油口连接尺寸,出吸油管内径d为25mm。5.5液压油箱容积的确定本题为中压液压系统,液压油箱有效容量按泵的流量的5~7倍来确定,现选用容量为160L的油箱。6液压系统的验算已知该液压系统的进、回油管的内径均为15mm,各段管道的长度分别为:AB=0.3m,AC=1.7m,AD=1.7m,DE=2m。选用L—HL32液压油,考虑到油的最低温度为15℃,查得15℃υ=150cst=1.5cm2/s油的密度ρ=920kg/m36.压力损失的验算6.1.1工作进给时进油路压力损失运动部件工作进给时的速度为0.05m/min,进给时的最大流量为2.5L/min,则液压油在管内流速v1为:v1=Q/(πd2/4)=4×2.5×1000/(3.14×12)=3184(cm/min)=53.1(cm/s)管道流动雷诺数Re1为Re1=v1d/υ=53.1×1.5/1.5=53.1<2300可见油液在管道中流态为层流,其沿程阻力系数λ1=75,Re1=0.68.进油管道的沿程压力损失Δp1-1为Δp1-1=λ(l/d)/(ρv2/2)=0.68×(1.7+0.3)/(0.015×920×0.5312/2)=1.05MPa查得换向阀34EF3P—E10B的压力损失Δp1-2=0.5MPa。忽略油液通过管接头、油路板等处的局部压力损失,则进油路的总压力损失Δp1=Δp1-1+Δp1-2=1.05+0.5=1.55(MPa)6.1.2工作进给时回油路的压力损失由于选用单活塞杆液压缸,且液压缸有杆腔的工作面积是无杆腔的工作面积的二分之一,则回油管道的流量为进油管道的二分之一,则v2=v1/2=53.1/2=26.55(cm/s)Re2=v2d/υ=26.55×1.5/1.5=26.55<2300λ2=75/Re2=75/26.55=2.83回油管道的沿程压力损失Δp2-1为Δp2-1=λ2(l/d)/(ρv2/2)=2.83(1.7+0.3)/(0.01×920×0.2652/2)=1.75Mpa查产品样本知换向阀24EF3M—E10B的压力损失为Δp2-2=0.025MPa,调速阀QF3—E10B的压力损失Δp2-3=0.5MPa。回油路总压力损失Δp2为Δp2=Δp2-1+Δp2-2+Δp2-3=1.75+0.025+0.5=2.275(MPa)6.1.3变量泵出口处的压力PpPp=(F/ηcm+A2Δp2)/A1+Δp1=(20780/0.95+40.05×0.6×100)/0.007854+1.55=2.65(MPa)6.1.4快进时的压力损失快进时液压缸为差动连接,流量为液压泵出口流量的两倍,取40L/min。管路的沿程压力损失Δp1-1为:v1=Q/(πd2/4)=4×40×1000/(3.14×12×60)=590(cm/s)Re1=v1d/υ=590×1.5/1.5=590λ1=75/Re1=75/590=0.159Δp1-1=λ1(l/d)/(ρv1/2)=0.159×(1.7/0.01)/(900×5.92/2)=0.36(MPa)同样可求沿程压力损失Δp1-2和Δp1-3为:Δp1-2=0.024MPa、Δp1-3=0.13MPa查产品样本知,流经各阀的局部压力损失为:换向阀Δp2-1=0.15MPa调速阀Δp2-2=0.15MPa故差动连接时,泵的出口压力Pp为:Pp=2Δp1-1+Δp1-2+Δp1-3+Δp2-1+Δp2-2+F/(A2ηcm)=1.70(MPa)快退时压力损失验算从略,上述验算表明,无需修改原设计。6.2系统温升的验算在整个工作循环中,工进阶段所占的时间最长,为了简化计算,主要考虑工进时的发热量。一般情况下,工进速度大时发热量较大,计算如下:v=0.05m/min:流量Q=v(πd2/4)=π×0.12×0.05/4=0.393(L/min)此时泵的效率为0.1,泵的出口压力为2.65Mpa则有:P(输入)=2.65×0.393/(60×0.1)=0.174(kW)P(输入)=Fv=20780×10/60×102×103=0.0346(kW)此时的压力损失为:ΔP=P(输入)-P(输入)=0.174Kw-0.0346KW=0.139KW假定系统的散热状况一般,取K=10×10-3=kW/(cm2℃),油箱的散热面积A为1.92cm2ΔT=ΔP/KA=0.139/(10×10-3×1.92)=7.24(℃)验算表明系统的温升在许可范围内。7.液压缸的设计7.1液压缸工作压力的确定选择5MP液压缸工作压力主要根据液压设备类型确定,对不同用途的液压设备,由于工作条件不同,通常采用的压力也不同。7.2液压缸的内径D和活塞杆d前面已经计算D=80mm;d=56mm7.3液压缸的壁厚和外径的计算液压缸的壁厚由液压缸的强度条件来计算液压缸的壁厚一般是指缸筒结构中最薄处的厚度,从材料力学可知,承受内压力的圆筒,其内应力分布规律因壁厚的不同而各异,一般计算时可分为薄壁圆筒,起重运输机械和工程机械的液压缸一般用无缝钢管材料,大多属于薄壁圆筒结构,其壁厚按薄壁圆筒公式计算ζ≥PD/2[δ]公式中:ζ为液压缸壁厚(m)D为液压缸内径(m)P试验压力,一般取最大工作压力的(1.25-1.5倍)(Mpa)[δ]缸筒材料的许用应力:锻钢110-120,铸钢100-110,无缝钢管100-110高强度铸铁60,灰铸铁25,单位(Mpa)ζ≥PD/2[δ]=8×0.80/(2×110)故取ζ=5mm液压缸壁厚算出后,即可求出缸体的外径D1为D1≥D+2ζ=80+2×5=90mm取D1=907.4缸盖厚度的确定一般液压缸多为平底缸盖,其有效厚度t按强度要求可用下面两个公式进行近似计算无孔时:t≥0.433D(P/【ζ】)有孔时:t≥0.433D{PD/【ζ】(D-d)}式中,t----------缸盖有效厚度D---------缸盖止口内直径d----------缸盖孔的直径8.参考文献左健民.液压与气动传动.北京,机械工业出版社,2005宋锦春,苏东海,张志伟.液压与气动传动.北京,科学出版社,2006崔广臣,谢群.液压与气动技术—课程设计指导书.沈阳,沈阳理工大学机械工程学院流体传动与控制教研室,2007池州学院CHIZHOUCOLLEGE池州学院CHIZHOUCOLLEGE《数据结构》课程设计报告学号:姓名:班级:计算机科学与技术(2)班指导教师:成绩:数学与计算机科学系课程设计基本情况1、设计名称一元多项式计算2、主要功能能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输出;3、设计平台电脑、Visualc++6.0系统设计1、算法思想根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。一元多项式加法运算它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。一元多项式的减法运算它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。2、概要设计(1)主函数流程图:(注:a代表第一个一元二次方程,b代表第二个一元二次方程)开始开始定义结构体定义函数类型及名称构造指数比较函数排列顺序(降序)用单链接储存a,b项目的系数和指数开始进行加减法运算输出构造出的多项式指数不同输出多项式,求项数创建并初始化多项式链表输入系数和指数指数相同合并同类项按指数排序结束将单链表的节点释放,使已建立的多项式销毁a项的指数值=b项的指数值选择语句a项指数值<b项指数值输出计算后的多项式摘取b的指数值到“和多项式”按指数值按降序排列摘取a指数值到“和多项式”释放a和b的结点将a和b的系数相加(减)a项指数值>b项指数值 (2)一元多项式计算算法用类C语言表示:Typedefstruct00{//项的表示,多项式的项作为LinkList的数据元素Floatcoef;//细数Intexpn;//指数}term,ElemType;//两个类型名:term用于本ADT,ElemType为LinkList的数据对象名TypedefLinkListpolynomial://用带表头的节点的有序链表表示多项式//基本操作的函数原型说明VoidCreatePolyn(polynomail&P);//输入n的系数和指数,建立表示一元多项式的有序链表P销毁一元多项式PVoidDestroyPolyn(polynomailP);销毁一元多项式PvoidPrintPoly(polynomailP);//打印输入一元多项式PIntPolynLength(polynnomailP);//返回一元多项式P中的项数voidCreatPolyn(polynomail&Pa.polunomail&Pb);//完成多项式相加运算,即:Pa=Pa+Pb,并贤惠一元多项式PbvoidSubtractPolyn(polunomail&Papolunomail&Pb);//完成多项式相减运算,即:Pa=Pa-Pb,并销毁一元多项式Pb//基本操作的算法描述Intcmp(tema,tempb);//依a的指数值<(或=)(或>b的住数值,分别返回-1、0和+1VoidCreatePolyn(polynomail&P,intm){//输入m项的系数和指数,建立表示一元多项式的有序链表PInitList(P); h=GetHead(P);E.coef=0.0; e.expn=-1; SerCurElem(h,e);//设置头结点的数据元素For(i=1;i<=m;++i) { //依次输入m个非零项Scanf(e.coef,e.epn);If(!LocateElem(P,e,q,(*cmp)())) {//当前链表中不存在该指数项If(MakeNode(s,e)) InsFirst(q,s); //生成节点并插入链表}}}//CreatPolun详细设计1、算法实现输入一元多项式函数:voidshuchu(pnode*head){pnode*p;intone_time=1;p=head;while(p!=NULL)/*如果不为空*/{if(one_time==1){if(p->zhishu==0)/*如果指数为0的话,直接输出系数*/printf("%5.2f",p->xishu);/*如果系数是正的话前面就要加+号*/elseif(p->xishu==1||p->xishu==-1)printf("X^%d",p->zhishu);/*如果系数是1的话就直接输出+x*//*如果系数是-1的话就直接输出-x号*/elseif(p->xishu>0)/*如果系数是大于0的话就输出+系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);elseif(p->xishu<0)/*如果系数是小于0的话就输出系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);one_time=0;}else{if(p->zhishu==0)/*如果指数为0的话,直接输出系数*/{if(p->xishu>0)printf("+%5.2f",p->xishu);/*如果系数是正的话前面就要加+号*/}elseif(p->xishu==1)/*如果系数是1的话就直接输出+x号*/printf("+X^%d",p->zhishu);elseif(p->xishu==-1)/*如果系数是-1的话就直接输出-x号*/printf("X^%d",p->zhishu);elseif(p->xishu>0)/*如果系数是大于0的话就输出+系数x^指数的形式*/printf("+%5.2fX^%d",p->xishu,p->zhishu);elseif(p->xishu<0)/*如果系数是小于0的话就输出系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);}p=p->next;/*指向下一个指针*/}printf("\n");}加法函数/*两个多项式的加法运算*/pnode*add(pnode*heada,pnode*headb){pnode*headc,*p,*q,*s,*r;/*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并向右移动*/floatx;/*x为系数的求和*/p=heada;/*指向第一个多项式的头*/q=headb;/*指向第二个多项式的头*/headc=(pnode*)malloc(sizeof(pnode));/*开辟空间*/r=headc;while(p!=NULL&&q!=NULL)/*2个多项式的某一项都不为空时*/{if(p->zhishu==q->zhishu)/*指数相等的话*/{x=p->xishu+q->xishu;/*系数就应该相加*/if(x!=0)/*相加的和不为0的话*/{s=(pnode*)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/s->xishu=x;s->zhishu=p->zhishu;r->next=s;r=s;}q=q->next;p=p->next;/*2个多项式都向右移*/}elseif(p->zhishu<q->zhishu)/*p的系数小于q的系数的话,就应该复制q节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;/*q向右移动*/}else/*p的系数大于q的系数的话,就应该复制p节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;/*p向右移动*/}}/*当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生*/while(p!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;}/*当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生*/while(q!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;}r->next=NULL;/*最后指向空*/headc=headc->next;/*第一个头没有用到*/returnheadc;/*返回头接点*/}减法函数/*两个多项式的加法运算*/pnode*add(pnode*heada,pnode*headb){pnode*headc,*p,*q,*s,*r;/*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并向右移动*/floatx;/*x为系数的求和*/p=heada;/*指向第一个多项式的头*/q=headb;/*指向第二个多项式的头*/headc=(pnode*)malloc(sizeof(pnode));/*开辟空间*/r=headc;while(p!=NULL&&q!=NULL)/*2个多项式的某一项都不为空时*/{if(p->zhishu==q->zhishu)/*指数相等的话*/{x=p->xishu+q->xishu;/*系数就应该相加*/if(x!=0)/*相加的和不为0的话*/{s=(pnode*)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/s->xishu=x;s->zhishu=p->zhishu;r->next=s;r=s;}q=q->next;p=p->next;/*2个多项式都向右移*/}elseif(p->zhishu<q->zhishu)/*p的系数小于q的系数的话,就应该复制q节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;/*q向右移动*/}else/*p的系数大于q的系数的话,就应该复制p节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;/*p向右移动*/}}/*当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生*/while(p!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;}/*当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生*/while(q!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;}r->next=NULL;/*最后指向空*/headc=headc->next;/*第一个头没有用到*/returnheadc;/*返回头接点*/}程序代码/*一元多项式计算*//*程序功能:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输出;*//*提示:输入完一元多项式之后,输入“00”结束本一元多项式的输入*//*注意:系数只精确到百分位,最大系数只能为999.99,指数为整数.如果需要输入更大的系数,可以对程序中5.2%f进行相应的修改*/#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>/*建立结构体*/typedefstructpnode{floatxishu;/*系数*/intzhishu;/*指数*/structpnode*next;/*下一个指针*/}pnode;/*用头插法生成一个多项式,系数和指数输入0时退出输入*/pnode*creat(){intm;floatn;pnode*head,*rear,*s;/*head为头指针,rear和s为临时指针*/head=(pnode*)malloc(sizeof(pnode));rear=head;/*指向头*/scanf("%f",&n);/*系数*/scanf("%d",&m);/*输入指数*/while(n!=0)/*输入0退出*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=n;s->zhishu=m;s->next=NULL;rear->next=s;/*头插法*/rear=s;scanf("%f",&n);/*输入系数*/scanf("%d",&m);/*输入指数*/}head=head->next;/*第一个头没有用到*/returnhead;}/*调整多项式*/voidtiaozhen(pnode*head){pnode*p,*q,*t;floattemp;p=head;while(p!=NULL){q=p;t=q->next;while(t!=NULL){if(t->zhishu>q->zhishu)q=t;t=t->next;}temp=p->xishu;p->xishu=q->xishu;q->xishu=temp;temp=p->zhishu;p->zhishu=q->zhishu;q->zhishu=temp;p=p->next;}}/*显示一个多项式*/voidshuchu(pnode*head){pnode*p;intone_time=1;p=head;while(p!=NULL)/*如果不为空*/{if(one_time==1){if(p->zhishu==0)/*如果指数为0的话,直接输出系数*/printf("%5.2f",p->xishu);/*如果系数是正的话前面就要加+号*/elseif(p->xishu==1||p->xishu==-1)printf("X^%d",p->zhishu);/*如果系数是1的话就直接输出+x*//*如果系数是-1的话就直接输出-x号*/elseif(p->xishu>0)/*如果系数是大于0的话就输出+系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);elseif(p->xishu<0)/*如果系数是小于0的话就输出系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);one_time=0;}else{if(p->zhishu==0)/*如果指数为0的话,直接输出系数*/{if(p->xishu>0)printf("+%5.2f",p->xishu);/*如果系数是正的话前面就要加+号*/}elseif(p->xishu==1)/*如果系数是1的话就直接输出+x号*/printf("+X^%d",p->zhishu);elseif(p->xishu==-1)/*如果系数是-1的话就直接输出-x号*/printf("X^%d",p->zhishu);elseif(p->xishu>0)/*如果系数是大于0的话就输出+系数x^指数的形式*/printf("+%5.2fX^%d",p->xishu,p->zhishu);elseif(p->xishu<0)/*如果系数是小于0的话就输出系数x^指数的形式*/printf("%5.2fX^%d",p->xishu,p->zhishu);}p=p->next;/*指向下一个指针*/}printf("\n");}/*两个多项式的加法运算*/pnode*add(pnode*heada,pnode*headb){pnode*headc,*p,*q,*s,*r;/*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并向右移动*/floatx;/*x为系数的求和*/p=heada;/*指向第一个多项式的头*/q=headb;/*指向第二个多项式的头*/headc=(pnode*)malloc(sizeof(pnode));/*开辟空间*/r=headc;while(p!=NULL&&q!=NULL)/*2个多项式的某一项都不为空时*/{if(p->zhishu==q->zhishu)/*指数相等的话*/{x=p->xishu+q->xishu;/*系数就应该相加*/if(x!=0)/*相加的和不为0的话*/{s=(pnode*)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/s->xishu=x;s->zhishu=p->zhishu;r->next=s;r=s;}q=q->next;p=p->next;/*2个多项式都向右移*/}elseif(p->zhishu<q->zhishu)/*p的系数小于q的系数的话,就应该复制q节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;/*q向右移动*/}else/*p的系数大于q的系数的话,就应该复制p节点到多项式中*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;/*p向右移动*/}}/*当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生*/while(p!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;}/*当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生*/while(q!=NULL){s=(pnode*)malloc(sizeof(pnode));s->xishu=q->xishu;s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;}r->next=NULL;/*最后指向空*/headc=headc->next;/*第一个头没有用到*/returnheadc;/*返回头接点*/}/*两个多项式的减法运算*/pnode*sub(pnode*heada,pnode*headb){pnode*headc,*p,*q,*s,*r;floatx;/*x为系数相减*/p=heada;/*指向第一个多项式的头*/q=headb;/*指向第二个多项式的头*/headc=(pnode*)malloc(sizeof(pnode));/*开辟空间*/r=headc;while(p!=NULL&&q!=NULL)/*两个多项式的某一项都不为空时*/{if(p->zhishu==q->zhishu)/*指数相等的话*/{x=p->xishu-q->xishu;/*系数相减*/if(x!=0)/*相减的差不为0的话*/{s=(pnode*)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/s->xishu=x;s->zhishu=p->zhishu;r->next=s;r=s;}q=q->next;p=p->next;/*2个多项式都向右移*/}elseif(p->zhishu<q->zhishu)/*p的系数小于q的系数的话*/{s=(pnode*)malloc(sizeof(pnode));s->xishu=-q->xishu;/*建立的节点的系数为原来的相反数*/s->zhishu=q->zhishu;r->next=s;r=s;q=q->next;}else{s=(pnode*)malloc(sizeof(pnode));s->xishu=p->xishu;s->zhishu=p->zhishu;r->next=s;r=s;p=p->next;/*p向右移动*/}}while(p!=NULL)/*当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生*/{s=(pnode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度关于解除企业合规审查律师代理协议书2篇
- 二零二五年度高科技温室大棚出租服务协议3篇
- 2025年度文化公司股份转让协议书范本3篇
- 二零二五年度租赁合同租赁物租赁期满续租条件协议范本
- 二零二五年度2025年商业地产租赁管理服务合同3篇
- 2025年度员工股权激励与公司员工福利待遇提升的专项合同3篇
- 二零二五年度太阳能光伏系统定期检修与维修合同3篇
- 2025年度养殖场地承包与农业废弃物资源化利用合作协议3篇
- 二零二五年度竞业禁止协议期限及竞业限制解除程序3篇
- 二零二五年度回迁房更名与教育资源共享合同3篇
- 胃肠外科病人围手术期营养管理专家共识护理课件
- 2024届高考语文复习:小说叙述特色专题复习 课件
- 四川省普通高中2024届高三上学期学业水平考试数学试题(解析版)
- 石油钻井机械设备故障预防与维护保养范本
- 浙江省温州市2023-2024学年七年级上学期期末数学试卷(含答案)
- 【全国最火爆的团建项目】旱地冰壶(拓展训练服务综合供应平台)
- 北京市西城区2023-2024学年五年级上学期期末数学试卷
- 工程结算课件
- CNAS-CL02-A001:2023 医学实验室质量和能力认可准则的应用要求
- 海康威视枪机摄像机检测报告.文档
- 部编小语一下三单元(《小公鸡和小鸭子》《树和喜鹊》《怎么都快乐》)大单元学习任务群教学设计
评论
0/150
提交评论