




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、课程设计题目一元多项式的形式为:pn(x) = anxn +anlxn + + %x +a0要求:(1) 能够按照指数降序排列建立并输出多项式。(2) 能够完成两个多项式的相加、相减,并输出结果。(3) 在课程设计报告中写明存储结构、多项式相加的 基本过程的算法(可以使用程序流程图)、源程序、测试数 据和结果。如能提出算法的改进方法可加分。二、需求分析n次多项式共有n+1项,在计算机中表示这个多项式时, 可以用一块连续的储存空间来依次存放这n+1个系数弧。显 然,在这种表示方式中,即即使某次项的系数为0,该系数 也必须储存。在多项式中存在大量的零系数时,这种表示方 式就显得太浪费储存空间。
2、为了有效而合理的利用储存空 间,可以用链表形式来表示。多项式的运算主要有以下5种:(1) 多项式链表的生成。(2) 多项式链表的释放。(3) 多项式的输入。(4) 多项式的相加。(5) 多项式的相乘。三、程序流程图/*计算 a-b*/四、多项式相加的基本过程void cal_a_sub_b() int i, mj;maxpower = (max power a + maxpowerb + abs(maxpowera maxpowerb) / 2; /*maxpowe是a和b中的最大幕数*/if(count_a && count_b)int minpower = (maxpowe
3、ra + maxpowerb abs(maxpowera - maxpowerb) / 2; /minpowe是a和b中的最小幕数*/intdifpower=maxpower a-maxpowerb;/*a,b幕数差*/dif = malloc(maxpower + 1)* 2 * sizeof(int);/*分配空间*/for(i = 0; i <= minpower; i+)/*这里的操作是说,把minpower以下的幕数先进行计算勺difi =ari | bil;difi + maxpower + 1 = ai + maxpowera + 1 - bi + maxpowerb +1
4、;if(difpower>0)/*a的最大幕数大于b时的操作*/for(i = minpower + 1; i <= maxpower; i+)difi=ai;difi + maxpower + 1 = ai + maxpowera + 1;if(difpower<0)/*a的最大幕数小于b时的操作*/for(i = minpower + 1; i <= maxpower; i+)difi + maxpower + 1 = 0 - bi 4- maxpowerb + 1 ;show_result(dif);/*显示结果*/五、程序主页面*c:usersqiqideskt
5、op元多项式.exe"多项式计算菜单1.input polynominal a.2.input polynominal b.3. calculate a - b4. calculate a * b5show poli/noninal a and b. 0.exit enter your choice:主菜单结果f c:usersqiqidesktop-7l多项式exe"enter your choice:1input the nax power of polynominal a:9input the coefficient of povier 9 :16input the
6、coefficient of power 8:14input the coefficient of power 7:13input the coefficient of povier 6:12input the coefficient of power 5:11input the coefficient of power 4:9input the coefficient of povier 3:8input the coefficient of power 2:?input the coefficient of power 1:6input the coefficient of povier
7、0:3polynominal a :pn<x> =16x9*14x8*13x/k7+12xyk6*11x5+9x4*8x3*7x2*6x*3polynoninal b:null多项式计算菜单1.input polynominal a.2.input polynoninal b3. calculate a - b4. calculate a b5 .sliow polynoninal a and b.o.exit enter your choice:2ppolynoninal a :pn<x> =16x914x8*13x7*12x%*11x5*7x2*6x3 ec:use
8、rsqiqidesktop元多项式exe”|polynoninal b:pn<x> =13x7+12x6 +10x5 +9x4+6x3 +11x2 +9x+4多项式计算菜单1.input polynominal a.2 . input polsrnoninal b.3. calculate a - b4. calculate a * b5.show polynominal a and b.b.exit enter your choice:5polynoninal a:pn<x>=16x9+14x813x7*12x6+11x5十9乂八4十8乂人3 +7x2+6x+3pol
9、ynominal b:pn<x> =13x?*12x6 *10x5*11x2 +9x*4多项式计算菜单1input polynominal a.2.input polynominal b.3. calculate a - b4. calculate a * b5.shou polynoninal a and b. 0exit enter your choice:展示多项式a和bc:usersqiqidesktop元多项式.exe'enter your choice:5polynominal b:pn<x> =13x7*12x6 +10x5 +9x4*6x3*11
10、x2 +9x*4多项式计算菜单1.input polynominal a.2.input polvnominal b.u.calculate a - b.calculate a + b show polsrnoninal fi and b.m.exit.enter your clwice:3result:pn<x>=16x9*14x8*0x7*0x6*1x5*0x4*2x3*-4x2多项式计算菜单1.input polynominal a.2input polynominal b.b.calculate a - b.calculate a + b6.shou polynominal
11、 a and b.0.exit.enter your choice:减法运算结果七、源程序#include <stdio.h>#include <math.h>int *a, *b, *dif, count_a = 0, count_b = 0; 结果的多项式*/int maxpowera, maxpowerb, maxpower; 幕*/int show_menu();void show_poly();void cal_a_plus_b();void cal_a_sub_b();void show_result(int *res);void input_poly(in
12、t choice);多项式*/int main() int choice; while(l) choice = show_menu(); switch(choice)的函数*/case 0: break;case 1: input_poly( i );break; case 2: input_poly(2);break;case 3: cal_a_sub_b();break; case 4: cal_a_plus_b();break;case 5: show_poly();break;null*/if(! choice) break;return 0;/*多项式a,b,dif是用来存放加减/*
13、多项式a,b,dif的最大次/*菜单显示函数*/*多项式显示*/ 八计算多项式a + b*/*计算多项式a-b*/*显示计算结果*/*这个函数用来指导用户输入/*主函数*/*你的选择*/*进入循环*/*通过不同的选择,进入不同/*按0推出程序*/*按提示输入多项式a*/*按提示输入多项式b*/*ab*/*a+b*/*显示多项式,没输入则显示int show_menu()/*文本输出 */int choice;printf(hnu);printf(" 多项式计算菜单nh);printf(hnu);printf("l.input polynominal a.n");p
14、rintf(h2.input polynominal b.n");printf("3.calculate a - bn");printf("4.calculate a + bnn);printf("5.show polynominal a and b.nh);/*输入你的选择*/printf(ho.exit.nn); printf(henter your choice:11); scanf("%d”, &choice); return choice;void input_poly(int choice)/*输入多项式*/int
15、 coef, i, m = 0, j = 0;printf("input the max power of polynominal %c:", choice + 64);/*输入多项式的最高次幕*/if(choice = 1) scanf(n%dn, &maxpowera);a = malloc(maxpowera + 1)*2* sizeof(int);/*根据/*%d:i);最高次幕maxpowera申请空间,用来存放多项式*/for(i = maxpowera; i >= 0; i)次输入多项式每一项的系数*/printf(hinput the coef
16、ficient of power/coefficient =系数,polynominal =多项式,power =幕*/ scanf("%d' &coef);if(coef 二二 0)ai = 0;/*a是二维数组,第一排表示第i次是否存在,1表示存在,0表示不存在*/else/*第二排表示第i次项的系数*/ai = 1;/*这里表示用一维ai + maxpowera + 1 = coef;数组模拟二维数组勺count_a = 1;if(choice = 2)/*这里表示输入多项式b,以下类似*/scanf(n%d", &maxpowerb);b =
17、 malloc(maxpowerb + 1)*2* sizeof(int);for(i = maxpowerb; i >= 0; i)printf("input the coefficient of power %d:",i); scanf(”d”,&coef);if(coef 二二 0)bi = 0;elsebi + maxpowerb + 1 = coef;count_b = 1; 一show_poly();/* 显示多项式 */void show_poly() /*这个函数用于把在数组屮存放的多项式显示成为一敲意义上的多项式*/int i;if(coun
18、t_a = 1)printf("polynominal a:”);/*显示多项式 a*/printf("pn(x)=");for(i = maxpowera; i >= 0; i)/*以下进行了各种情况的划分*/if(i = maxpowera) && (ai + maxpowera + 1 !=0) pi*intf(”dxa%d”,ai + maxpowera + 1, i);elseif(ai + maxpowera + 1 > 0) && (i > 1) printf(u4-%dxa%dn,ai + maxp
19、owera + 1, i);if(ai + maxpowera + 1 < 0 && (i > 1) printf(n%dxa%dn,afi + maxpowera + 1, i);if(ai + maxpowera + 1 > 0) && (i = 1) printf(',4-%dxn,ai + maxpowera + 1);if(ai + maxpowera + 1 < 0) && (i = 1) printf("%dxn,ai + maxpowera + 1);if(ai + maxpowera +
20、 1 > 0) && (i = 0) printf(”+%d”,ai + maxpowera + 1);if(ai + maxpowera + 1 < 0) && (i = 0) printf("%d",ai + maxpowera + 1);printf(nnh);elseprintf("polynominal a:nulln");if(count_b = 1)/*显示多项式 b*/printf(upolynominal b:”);printf("pn(x)=");for(i = maxp
21、owerb; i >= 0; i)if(i = maxpowerb) && (ai + maxpowerb + 1 !=0) pi*intf(”dxa%d”,bi + maxpowerb + 1, i);elseif(bi + maxpowerb + 1 >0) && (i > 1) printf(n+%dxa%dm,bi + maxpowerb + 1, i);if(bfi + maxpowerb + 1 v 0 && (i > 1) printf(n%dxa%dn,bi + maxpowerb + 1, i);if(b
22、i + maxpowerb + 1 > 0) && (i = 1) printf(”+%dx”,bi + maxpowerb + 1);if(bi 4- maxpowerb + i <0) && (i = 1) printf(” dx”,bi + maxpowerb + 1);if(bi + maxpowerb + l>0) && (i = 0) printf(h+%d,bi + maxpowerb + 1);if(bi + maxpowerb + 1 <0) && (i = 0) printf(n%d&q
23、uot;,bi + maxpowerb + 1);printf(nnnn);elseprintf(hpolynominal b:nullnnh);void cal_a_sub_b()/*计算 ab*/int i, m, j;maxpower = (maxpowera + maxpowerb + abs(maxpowera - maxpowerb) / 2; /maxpowe是a和b中的最大幕数*/if(count_a && count_b)abs(maxpowera maxpowerb;sizeof(int);int minpower 二(maxpowera + maxpowe
24、rbmaxpowerb) / 2; /minpowe 是 a 和 b 中的最小幕数*/int difpower = maxpowera /*a,b幕数差*/dif = malloc(maxpower +1)*2/*分配空间*/<=minpower;/*这里的操作是说,把for(i=0;i+)minpower以下的幕数先进行计算*/diffil =ail ii bfi;difi + maxpower + 1 = ai + maxpowera + 1 - bi + maxpowerb + 1;/*a的最大幕数大于b时的操作*/for(i = minpower + 1; i <= max
25、power; i+) difi=ai;difi + maxpower + 1 = ai + maxpowera + 1;if(difpower<0)/*a的最大幕数小于b时的操作勺for(i = minpower + 1; i <= maxpower; i+)difi = bi;difi + maxpower + 1 = 0 bi + maxpowerb + 1 ;show_result(dif);/*显示结果*/elseprintf(ninput 2 polynomianals first!nh); return;/*这个函/*其他void show_result(int *re
26、s)数和show_poly唯一的不同就是参数不一样*/ int i;都相同*/printf("result:");printf(npn(x)=n);for(i = maxpower; i >= 0; i)if(i = maxpower) && (resi + maxpower + 1 !=0)printf("%dxa%d",resi + maxpower + 1, i);elseif(ai + maxpower + 1 > 0) && (i > 1) printf(',+%dxa%d",resi + maxpower + 1, i);if(ai + maxpower + 1 < 0 && (i > 1) printf("%dxa%d",resi + maxpower + 1, i);if(ai + maxpower + 1 > 0) && (i 二二 1) printf("+%dxn ,res i + maxpower + 1);if(ai + maxpower + 1 < 0) && (i = 1) printf("%dx"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备检修安全管理制度
- 设备等级评估管理制度
- 2025年中国家庭影院立体声接收器行业市场全景分析及前景机遇研判报告
- 设计成果运用管理制度
- 评估公司价格管理制度
- 诊所医疗软件管理制度
- 诊所财务制度管理制度
- 贝壳门店分级管理制度
- 财务集中中心管理制度
- 账务实物分开管理制度
- 全过程咨询项目管理
- 基于STM32迷宫机器人设计与实现
- 2024年广东省广州市白云山风景名胜区管理局分支机构第一次公开招聘考试真题及答案
- DB65T 8020-2024 房屋建筑与市政基础设施工程施工现场从业人员配备标准
- 2024年江西省水利投资集团有限公司招聘考试真题
- 某咨询标杆企业分析(英文版)
- 2025年个人与企业投资合同模板
- 《中南大学》课件
- 2024年心理咨询师题库附参考答案(达标题)
- 幼儿园教师考核评价量化表
- 公开招聘编外聘用人员报名登记表
评论
0/150
提交评论