欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    程序语言课程设计-一元多项式简单的计算器.doc

    • 资源ID:14937252       资源大小:310KB        全文页数:37页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序语言课程设计-一元多项式简单的计算器.doc

    课程设计报告设计名称: 程序语言课程设计 设计题目: 一元多项式简单的计算器 i / 37 课程设计任务书学生姓名 学号1402120135专业班级1班设计题目一元多项式简单的计算器内容概要: 设计或开发环境:Microsoft Visual Studio 2010 关键技术:C语言 主要功能: 1建立一元多次多项式 2多项式相加 3多项式相减 4多项式相乘文献资料:1谭浩强C语言程序设计(第三版) 清华大学出版社 20072姜敏芝 余健 C语言程序设计案例精编 清华大学出版社 20083李健学 余健 数据结构课程设计案例精编 20074唐国民 王国均数据结构(C语言版) 清华大学出版社5网上相关文献资料设计要求:A.功能要求1)输入并建立多项式;2)输出多项式;3)两个多项式相加,输出和多项式;4)两个多项式相减,输出差多项式。B.文档格式*.c工作期限:设计工作自2013年12月9日至2013年12月23日止。指导教师: 院长: 日 期:2013年12月9日软件学院课程设计进度安排表学生姓名: 张文东 学号: 1402120135 专业: 软件工程 班级: 一班 起止日期内 容备注12月9日下达任务书,制定进度安排计划 12月10日12月12日系统整体设计和详细设计12月13日12月17日系统编码实现12月18日12月19日系统测试 12月20日12月23日撰写课程设计报告 12月25日演示软件和答辩 指导教师签名: 2013年12月11日成绩评定表学生姓名: 张文东 学号: 1402120135 专业: 软件工程 班级: 一班 类别合计分值各项分值评分标准实际得分合计得分平时表现1010按时参加设计指导,无违反纪律情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。5参考文献数量在2篇以上,格式符合要求,在正文中正确引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩: 分 指导教师: (签字) 日期:2013 年12月 25 日摘 要 摘要:随着科技的不断发展,人们生活水平的不断提高,方便、高效、快捷成为了人们所追求的主要目标,面对一些复杂的技术总会花费大量时间进行计算,因此有一个多项式功能的计算器是很有必要的。 开发这样一个程序需要用到C结点、链表方面的知识,系统分为多项式的输入输出、多项式的加法、多项式的减法、多项式的乘法四个模块。 该报告主要是通过系统的程序段、程序设计的要求以及计算器的功能来介绍该计算器实现过程。关键字:多项式;C语言;结点;链表目 录目 录1第一章 课题背景21.1 绪论21.2 主要内容2第二章 设计简介及设计方案论述32.1 系统分析32.2 总体设计3第三章 详细设计53.1 建立多项式53.2 多项式相加73.3 多项式相减93.4 多项式相乘10主要代码如下:12主要代码如下:14第四章 设计结果及分析174.1 调试与测试174.2 运行结果194.3 结果分析21总结22参考文献23附录24第一章 课题背景1.1 绪论随着科技的进步,社会的不断发展,计算器已普遍应用于各行各业,为了帮助人们提高工作效率,节约运算时间,设计一个多功能的计算器是很有必要的,在此设计一个多项式计算器可以很方便的对多项式相加、相减、相乘,对提高人们的运算效率很有帮助。一个计算器需要用到C多方面的知识,要实现多项式的建立和输入输出等功能,必须要熟练的掌握C,在此尤其是链表和结点。1.2 主要内容用C语言实现多项式的输入输出和多项式的加减乘等运算,其中主要用到链表和结点的相关知识,具体功能如下:1)输入并建立多项式;2)输出多项式;3)两个多项式相加,输出和多项式;4)两个多项式相减,输出差多项式。第二章 设计简介及设计方案论述2.1 系统分析2.1.1 功能需求多项式的建立 多项式的输入输出 多项式的加减乘等运算2.1.2 数据需求在输入过程中,首先要给定输入的数据,数据只能是数字,不能是字母或其他,不能连续输入数据,必须要求以空格分开要输入的数据。2.1.3 系统需求系统必须安全可靠,不会出现无故死机状态,运算速度要快。2.2 总体设计2.2.1 系统设计方案采用菜单设计,选择你需要的功能,用单链表储存你输入的数据。(1) 菜单菜单包括计算器加减乘等功能的选择(2) 文件保存方式运用带头节点的单链表储存多项式(3) 抽象数据类型定义主要定义多项式的系数和指数。系数项用浮点类型定义,指数项用整型定义(4) 存储结构采用链式结构,建立链表储存输入的多项式(5) 算法设计运用链表知识,建立链表,给链表分配一定量的存储空间,查找链表,插入链表和链表的连接2.2.2 功能模块设计一元多项式计算器建立多项式 多项式相加 多项式相减 多项式相乘将输入的多项式相乘将输入的多项式相减将输入的多项式相加建立一元多项式输出一元多项式图 2-1 功能模块设计第三章 详细设计一元多项式计算器主要分为4大部分,多项式建立,多项式加法,多项式减法和多项式乘法。多项式的建立主要需要建立新链表,并分配给这个新链表一定量的存储空间,分配的存储空间内进行运算;多项式加减乘等运算主要运用了链表的建立,链表存储空间分配,链表的查找,插入与连接进行计算。3.1 建立多项式此阶段是多项式的建立,可以对计算器进行输入输出等功能。主要运用链表方面的知识如图 3-1所示:开始PLOY *head,*inpt;NX!=0Yinpt=(PLOY *)malloc(sizeof(PLOY)Return head结束图 3-1 多项式的建立主要代码如下:PLOY *creat(char ch)/建立多项式PLOY *head,*inpt;float x;int y;head=(PLOY *)malloc(sizeof(PLOY); head->next=NULL;printf("请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)n",ch);scanf("%f %d",&x,&y);while(x!=0)inpt=(PLOY *)malloc(sizeof(PLOY); inpt->coef=x;inpt->expn=y;inpt->next=NULL;insert(head,inpt); printf("请输入一元多项式%c:(以0 0 结束!)n",ch);scanf("%f %d",&x,&y);return head;3.2 多项式相加此阶段是计算器的加法运用功能,对你输入的多项式进行相加计算,主要运用了链表,及链表的插入等知识,如图 3-2所示:开始PLOY *inpt;N flag=0YN pre->next=NULLY Flag=1 pre=pre->next Return head结束图 3-2 多项式相加主要代码如下:PLOY *addPLOY(PLOY *head,PLOY *pre)/多项式相加PLOY *inpt;int flag=0;while(flag=0)if(pre->next=NULL)flag=1;elsepre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=pre->coef;inpt->expn=pre->expn;inpt->next=NULL;insert(head,inpt);return head;3.3 多项式相减此阶段是计算器的减法运用功能,对你输入的多项式进行相减计算,主要运用了链表,链表查询,及链表的插入等知识,如图 3-3所示:开始PLOY *inpt;N flag=0YN pre->next=NULLY Flag=1 pre=pre->next Return head结束图 3-3 多项式相减主要代码如下:PLOY *minusPLOY(PLOY *head,PLOY *pre)/多项式相减PLOY *inpt;int flag=0;while(flag=0)if(pre->next=NULL)flag=1;elsepre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=0-pre->coef;inpt->expn=pre->expn;inpt->next=NULL;insert(head,inpt);return head;3.4 多项式相乘此阶段是计算器的乘法运用功能,对你输入的多项式进行相乘计算,主要运用了链表,链表查询,及链表的插入等知识,如图 3-4所示:开始PLOY *inpt,*flag,*pre; Nflag=0Y pre-> Nnext=NULLYpre=head2Continuehead1=NULLYNflag=1continuepre=pre->nextreturn res结束图 3-4多项式相乘主要代码如下:PLOY *byPLOY(PLOY *head1,PLOY *head2)/多项式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res->next=NULL;head1=head1->next;pre=head2;while(flag=0)if(pre->next=NULL)pre=head2;head1=head1->next;continue;if(head1=NULL)flag=1;continue;pre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=pre->coef*head1->coef;inpt->expn=pre->expn+head1->expn;inpt->next=NULL;insert(res,inpt);return res;3.5 计算器主函数 开始PLOY *f,*gN sign!=0Yscanf(“%d”,&sign)Nsign=0YN sign=1breakY printf(“你选择 的操作是多项式N 相加n”); sign=2 Y break printf(“你选择 的操作是多项式N 相减n”);sign=3 Y break printf(“你选择 的操作是多项式N 相乘n”);sign=4 Y printf(“Error!breaksign=-1 请重新输入”); break break结束 图 3-5 计算器主函数主要代码如下:void main()PLOY *f,*g;int sign=-1;start();while(sign!=0)scanf("%d",&sign);switch(sign)case 0:break;case 1:printf("你选择的操作是多项式相加:n");f=creat('f');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("-nn");printf("两个多项式相加结果为:nn");printf(" F(x)=f(x)+g(x)=");f=addPLOY(f,g);print(f);printf("n-n");sign=-1;start();break;case 2:printf("你选择的操作是多项式相减:n");f=creat('f');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("-nn");printf("两个多项式相减结果为:nn");printf(" F(x)=f(x)-g(x)=");f=minusPLOY(f,g);print(f);printf("n-n");sign=-1;start();break;case 3:printf("你选择的操作是多项式相乘:n");f=creat('f');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("-nn");printf("两个多项式相乘结果为:nn");printf(" F(x)=f(x)*g(x)=");f=byPLOY(f,g);print(f);printf("n-n");sign=-1;start();break;case 4:sign=-1;start();break;default:printf("Error!请重新选择操作!n");start();break;printf(" *n");printf(" * 谢谢使用! *n");printf(" *n"); 第四章 设计结果及分析4.1 调试与测试4.1.1 调试调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。(1) cannot open Debug/Cpp1.exe for writing执行窗口没关闭就修改程序段关闭执行窗口后从新执行程序。(2) 系统提示的错误error C2065: 'addPLOY' : undeclared identifieraddPLOY没有被明确的定义。到程序段里仔细寻找addPLOY,并将其定义。4.1.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。测试数据过程如下:(1) 输入功能测试输入数据1:2 3 0 0预期结果:2.000000x3运行结果: 2.000000x3说明:符合输入的要求输入数据2:a b 0 0 预期结果:a.000000xb运行结果:死循环说明:不符合输入要求(2) 运算功能测试输入数据1:2 3 0 0 5 6 0 0预期结果:2.000000x3+5.000000x6运行结果:2.000000x3+5.000000x6说明:符合计算的要求输入数据2:a b 0 0 c d 0 0预期结果:a.000000xb+c.000000xd运行结果:死循环4.2 运行结果4.2.1 欢迎界面图 4-1 欢迎界面4.2.2 多项式加法图 4-2 多项式加法4.2.3 多项式减法图 4-3 多项式减法4.2.4 多项式乘法图4-4多项式的乘法4.3 结果分析经过一段时间的设计,我的程序大体完成,任务书中所要求实现多项式的输入输出、多项式的加法、多项式的减法都实现了,而且实现了多项式的乘法,但程序还存在一些缺点,例如,无法输入字母计算,无法进行多项连续计算。总结 数据结构体现的是解决问题的一种思想,怎样把这种思想体现出来,需要我们对每个方面的系统了解。并发现了许多自己的不足,平时没掌握的的知识在实践中暴露,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分的问题,还有一些小问题。但是,我相信在今后的学习中,一定能把它解决好。当今计算机应用在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好c语言版数据结构课程设计是十分必要的。我不仅巩固了数据结构程序设计的内容,掌握设计的基本方法,强化了上机动手能力,还进一步掌握了以下知识:数据类型,链表,结点,分支控制,循环控制,结构体及数组,指针,文件操作,编译预处理等;通过课程设计,掌握了程序的局部测试,调试方法,建立程序系统调试,测试的基本概念和思想,学会较大程序的系统测试和调试方法。当我选择这个多项式计算器系统时,首先系统分析主要思路和框架哦,与同学讨论,联系所学的知识。我知道书上和老师讲的有限,所以上网搜也是一种利用资源的表现。在编程中,特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体把课本上的知识点看了一遍,知识点也基本上掌握了,所以下一步就是开始正式的编程序了。当读懂了C语言编程的基本过程和方法,经过一波三折,终于开始正式编程。 编译过程中,算法至关重要,多项式加法:系数相同时指数相加,不同时两项做加法;多项式减法:和加法相差无几,只是把加换成减;多项式乘法:指数相乘,系数相加,当然在设计过程中还要注意一些特殊值,如0,1等。通过这次课程设计,我感觉到要自己动手真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,问老师,问同学,想尽办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多的人生哲理,懂得了怎么去制定计划,怎么去实现这个计划,并掌握了在执行的过程中怎样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定把课程设计的精神带到生活中,使生活变得更好。参考文献1 谭浩强. C语言程序设计(第三版)M. 清华大学出版社, 2007.2 姜敏芝,余健. C语言程序设计案例精编M. 清华大学出版社, 2008.3 李健学,余健. 数据结构课程设计案例精编M. 2007.4 唐国民,王国均. 数据结构(C语言版)M. 北京:清华大学出版社.5 王路明. C语言程序设计教程M. 北京:北京邮电大学出版社,2005年5月.6 谭浩强. C+程序设计M. 北京:清华大学出版社.2004.7 范策. 算法与数据结构(C语言版)M. 北京:机械工业出版社,2004.8 詹春华,杨沙. C语言程序设计教程M. 科学出版社,2011.8.9 董志民,崔建平,肖利娜. C语言程序设计教学改革探索与实践J.福建电脑.附录#include<stdio.h>#include<malloc.h>typedef struct myNode/数据结构float coef;/系数coefficientint expn;/指数exponentstruct myNode * next;PLOY;void start()/用户选择界面printf(" n");printf(" *n");printf(" * 欢迎使用一元多项式计算器 *n");printf(" *n");printf("n");printf(" 请选择操作:nn");printf(" 0.退出操作n");printf(" 1.一元多项式相加n");printf(" 2.一元多项式相减n");printf(" 3.一元多项式相乘nn");void insert(PLOY *head,PLOY *inpt)PLOY *pre,*now;int signal=0;pre=head; if(pre->next=NULL)pre->next=inpt;elsenow=pre->next;while(signal=0)if(inpt->expn<now->expn) if(now->next=NULL)now->next=inpt;signal=1;elsepre=now;now=pre->next;elseif(inpt->expn>now->expn)inpt->next=now;pre->next=inpt;signal=1;elsenow->coef=now->coef+inpt->coef;signal=1;free(inpt); if(now->coef=0)pre->next=now->next;free(now);PLOY *creat(char ch)/建立多项式PLOY *head,*inpt;float x;int y;head=(PLOY *)malloc(sizeof(PLOY); head->next=NULL;printf("请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)n",ch);scanf("%f %d",&x,&y);while(x!=0)inpt=(PLOY *)malloc(sizeof(PLOY); inpt->coef=x;inpt->expn=y;inpt->next=NULL;insert(head,inpt); printf("请输入一元多项式%c:(以0 0 结束!)n",ch);scanf("%f %d",&x,&y);return head;PLOY *addPLOY(PLOY *head,PLOY *pre)/多项式相加PLOY *inpt;int flag=0;while(flag=0)if(pre->next=NULL)flag=1;elsepre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=pre->coef;inpt->expn=pre->expn;inpt->next=NULL;insert(head,inpt);return head;PLOY *minusPLOY(PLOY *head,PLOY *pre)/多项式相减PLOY *inpt;int flag=0;while(flag=0)if(pre->next=NULL)flag=1;elsepre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=0-pre->coef;inpt->expn=pre->expn;inpt->next=NULL;insert(head,inpt);return head;PLOY *byPLOY(PLOY *head1,PLOY *head2)/多项式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res->next=NULL;head1=head1->next;pre=head2;while(flag=0)if(pre->next=NULL)pre=head2;head1=head1->next;continue;if(head1=NULL)flag=1;continue;pre=pre->next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt->coef=pre->coef*head1->coef;inpt->expn=pre->expn+head1->expn;inpt->next=NULL;insert(res,inpt);return res;void print(PLOY *fun)PLOY *printing;int flag=0;printing=fun->next;if(fun->next=NULL)printf("0n");return;while(flag=0)if(printing->coef>0&&fun->next!=printing)printf("+");if(printing->coef=1); else if(printing->coef=-1)printf("-");elseprintf("%f",printing->coef);if(printing->expn!=0) printf("x%d",printing->expn);else if(printing->coef=1)|(printing->coef=-1)printf("1");if(printing->next=NULL)flag=1;elseprinting=printing->next;printf("n");void main()PLOY *f,*g;int sign=-1;start();while(sign!=0)scanf("%d",&sign);switch(sign)case 0:break;case 1:printf("你选择的操作是多项式相加:n");f=creat('f');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("-nn");printf("两个多项式相加结果为:nn");printf(" F(x)=f(x)+g(x)=");f=addPLOY(f,g);print(f);printf("n-n");sign=-1;start();break;case 2:printf("你选择的操作是多项式相减:n");f=creat('f');printf("f(x)=");print(f);g=creat('g');printf("g(x)=");print(g);printf("-

    注意事项

    本文(程序语言课程设计-一元多项式简单的计算器.doc)为本站会员(doc321)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开