c语言课程设计简易计算器报告

上传人:第*** 文档编号:57159579 上传时间:2018-10-19 格式:PDF 页数:17 大小:521.84KB
返回 下载 相关 举报
c语言课程设计简易计算器报告_第1页
第1页 / 共17页
c语言课程设计简易计算器报告_第2页
第2页 / 共17页
c语言课程设计简易计算器报告_第3页
第3页 / 共17页
c语言课程设计简易计算器报告_第4页
第4页 / 共17页
c语言课程设计简易计算器报告_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《c语言课程设计简易计算器报告》由会员分享,可在线阅读,更多相关《c语言课程设计简易计算器报告(17页珍藏版)》请在金锄头文库上搜索。

1、xxxxxxxx 大学信息科学与工程学院大学信息科学与工程学院课程设计报告课程设计报告班班级:级:通信工程一班通信工程一班姓名姓名 (学号(学号) :xxxxxx实验项目名称:实验项目名称:简易计算器简易计算器实验室实验室( (中心中心) ):信息科学与工程学院信息技术实验室信息科学与工程学院信息技术实验室指指 导导 教教 师师 :xxxxxx实验完成时间:实验完成时间:20122012年年6 6月月1919日日C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班2/17刘 秀目录目录一一:课程设计题目课程设计题目3二二:功能描述功能描述3三三:概要设计概要设计4四四:详细

2、设计详细设计5五五:测试结果及存在的问题测试结果及存在的问题9六六:课程设计心得体会课程设计心得体会12七七:附录附录12C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班3/17刘 秀序 号项目标准评分1系统演示(功能) (50%)按要求完成系统功能且界面友好容错能力强(45-50)按要求完成系统功能界面一般有较好的容错能力 (40-44)基本完成系统功能有一定的容错能力(35-39)基本完成系统功能(30-34 分)未完成系统功能或他人代做或抄袭(15)2课程设计说明书 (50%)课程设计书各项目认真填写,具有清晰的设计思路及 软件测试结果分析(45-50)课程设计书

3、各项目认真填写,具有较为清晰的设计思 路并对软件测试结果进行了较为清晰的分析(40-44)课程设计书各项目认真填写,设计思路正确(35-39)课程设计书进行为较为认真的填写(30-34)课程设计书有未完成项或各项填写不属实或他人代做 或抄袭(15)教师签字总分一、题目:一、题目:简易计算器设计简易计算器设计二、功能描述:二、功能描述:此简易计算器根据算符优先算法原则可以计算由此简易计算器根据算符优先算法原则可以计算由“+,-,*,/, (, ) ”组成的任意算术表达式的值。其中此程序中包含对负数和字符数据转组成的任意算术表达式的值。其中此程序中包含对负数和字符数据转换功能。换功能。如:如:-9

4、+( (2+3)*9/8-5)/(-3);C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班4/17刘 秀三、概要设计:三、概要设计:根据算符优先算法设计将函数功能模块分布如下根据算符优先算法设计将函数功能模块分布如下:利用结构体数组中脚码的变换达到符号和数据进栈和出栈的目的。功能功能:完成栈的定义和初始化及完成栈的定义和初始化及函数的类型定义及运算符函数的类型定义及运算符集合定义集合定义.功能功能:完成负数转换成完成负数转换成(0-负数负数)形形N式以便数据读入式以便数据读入 (Translate).功能功能:完成判断表达式是否符合完成判断表达式是否符合一般计算表达式规

5、则一般计算表达式规则(Can).Y功能功能:完成运算符和数据的进栈完成运算符和数据的进栈和出栈和出栈.功能功能:完成数据完成数据转换和运算符转换和运算符比较比较.功能功能:完成函数调用以完成完成函数调用以完成数值计算数值计算.算符优先算法计算表达式的值定义运算符栈和数据栈及各个函数的类型和数据的类型(自定义完成)字符型数据表达式的输入 并对负数处理以符合算法 规则(Translate 函数完成)字符型数据转换成浮点型数据(Getdouble 函数完成)算符优先级比较(Precede 函数完成)运算符和数据的进栈 和出栈(自定义函数完 成)数 据 运 算 的 过 程 及 输 出 (Operate

6、 和 EvaluateExpression 函数完成)判断表达式是否正确(Can 函数完成)C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班5/17刘 秀四、详细设计:四、详细设计:各功能模块的实现过程如下各功能模块的实现过程如下:1:栈的应用:栈的应用:通过运用结构体数组中通过运用结构体数组中 top 值的改变来达到数据进栈和出栈的目的,而栈的初始化值的改变来达到数据进栈和出栈的目的,而栈的初始化 只需将只需将 top 的初始值赋为的初始值赋为-1 即可即可 ;2:表达式负数的处理表达式负数的处理(由由 Translate 函数完成函数完成):算法说明算法说明:函数中

7、,先扫描数组,若函数中,先扫描数组,若 s0=- , 则将数组的所有元素向后则将数组的所有元素向后移一位移一位 且首位赋值为且首位赋值为0 ,若数组首位之后若数组首位之后 含有形如含有形如(-5)则将负号及其以后的元则将负号及其以后的元 素全向后移一位且负号位置赋值为素全向后移一位且负号位置赋值为 0 ,然后返回新的数组;,然后返回新的数组;Y NYN NY开始开始读入字符串数组读入字符串数组(s)S0=-?S 数组首位加数组首位加 0si=(且且 si+1=-i+1 之后元素向后移一位之后元素向后移一位,si+1=0it?(t 为数组长度为数组长度)结束返回新的数组结束返回新的数组 si=i

8、+1,t=t+1C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班6/17刘 秀3:表达式正误的判断表达式正误的判断(由由 Can 函数完成函数完成):函数说明函数说明:函数中将错误归为几类函数中将错误归为几类:括号的完整性、运算符后的数据类型、除号后的括号的完整性、运算符后的数据类型、除号后的 数据不能为数据不能为 0、小数点及运算符不能多个在一起、右括号后的数据必须为、小数点及运算符不能多个在一起、右括号后的数据必须为 运算符或结束标志运算符或结束标志; 函数通过函数通过 p 和和 s 记录对这些错误的判断记录对这些错误的判断, 并返回结果并返回结果;4:进栈和出栈:

9、进栈和出栈:说明说明:运算符和数据的进栈是通过给结运算符和数据的进栈是通过给结 构体数组赋值并增加构体数组赋值并增加 top 的值来的值来 记 录 栈 的 栈 顶 元 素 的 位 置记 录 栈 的 栈 顶 元 素 的 位 置 以便取用;出栈是使以便取用;出栈是使 top 的减的减 1 后的那个数组中的数据作为新栈后的那个数组中的数据作为新栈 的栈顶元素,并返回栈顶元素的栈顶元素,并返回栈顶元素. 即实质上是通过改变数组的位置即实质上是通过改变数组的位置 来达到进栈出栈;来达到进栈出栈;C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班7/17刘 秀5:字符串数据转换成浮点

10、型数据字符串数据转换成浮点型数据(由由 Getdouble 函数完成函数完成):函数说明函数说明:从字符数组的运算符开始扫描,直从字符数组的运算符开始扫描,直 到遇到下一个运算符结束到遇到下一个运算符结束, 然后将这然后将这 两个运算符间的字符记录在数组两个运算符间的字符记录在数组 S 中中, 再用库函数再用库函数 atof 将字符数据转换将字符数据转换 成浮点型数据并返回数据和数组成浮点型数据并返回数据和数组 a 中新的元素的起点中新的元素的起点(即扫描到的第二即扫描到的第二 个运算符个运算符);6:算符优先级的比较算符优先级的比较:函数说明函数说明:此函数是记录运算符栈的栈顶元素在运算符此

11、函数是记录运算符栈的栈顶元素在运算符 集合中的位置与读入运算符在运算符集合中集合中的位置与读入运算符在运算符集合中 的位置的位置,将这两个值作为运算符优先级表数组将这两个值作为运算符优先级表数组 的脚码,然后返回这个元素所代表的字符;的脚码,然后返回这个元素所代表的字符;7:算符优先算法求表达式的值的核心算法算符优先算法求表达式的值的核心算法: 说明说明:此函数中使用两个工作栈此函数中使用两个工作栈, 一个是一个是 OPTR, 用以寄存运算符用以寄存运算符; 另一个是另一个是 OPND, 用以寄存浮点型数据。基本思想是用以寄存浮点型数据。基本思想是:首先置数栈为空栈,表达式的起始符号为首先置数

12、栈为空栈,表达式的起始符号为 #算符栈的栈底元素;然后依次读入表达式中的每一个字符,若为数则算符栈的栈底元素;然后依次读入表达式中的每一个字符,若为数则进进 OPND 数栈,若为运算符则和数栈,若为运算符则和 OPTR 算符栈的栈顶运算符比较优先级后,如算符栈的栈顶运算符比较优先级后,如 果栈顶算符优先级低果栈顶算符优先级低, 则此算符进栈并返回新的栈顶算符则此算符进栈并返回新的栈顶算符; 如果栈顶算符优先如果栈顶算符优先 级高级高,则取算符栈栈顶算符则取算符栈栈顶算符 theta 并删除此算符并删除此算符,同时去数栈的最上面的两个同时去数栈的最上面的两个 数数 a 和和 b 并删除这两个数,

13、作并删除这两个数,作 a theta b 运算并将结果进数栈;如果两个算符运算并将结果进数栈;如果两个算符 优先级相同优先级相同, 则删除算符栈顶算符并返回新的栈顶算符则删除算符栈顶算符并返回新的栈顶算符。 直到整个表达式求值直到整个表达式求值 完毕完毕(即即 OPTR 的栈顶算符和当前读入的字符均为的栈顶算符和当前读入的字符均为#时求值完毕时求值完毕)。C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班8/17刘 秀程序框图如下程序框图如下:YN Y开始开始定义并初始化栈定义并初始化栈ch=算符栈顶元素算符栈顶元素,k=0ch!=# | sk!=#sk是算符?是算符?c

14、h 和算符栈顶元素优先级和算符栈顶元素优先级算符进栈算符进栈删除栈顶元素删除栈顶元素 去算符栈顶元素去算符栈顶元素(theta)删除删除 theta 并返回新栈顶元素并返回新栈顶元素取数栈栈顶的两元素取数栈栈顶的两元素 a,b删除数栈的最上面的两元素删除数栈的最上面的两元素计算计算 a(theta)b 的值的值k=k+1ch=算符栈顶元素算符栈顶元素字符串转换为字符串转换为浮点型数据浮点型数据结果进数栈结果进数栈x=数栈顶元素数栈顶元素输出输出 x 的值结束的值结束C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班9/17刘 秀五、测试结果及存在的问题五、测试结果及存在的

15、问题:1:系统运行效果系统运行效果:输入界面输入界面:正确的计算:正确的计算:C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班10/17刘 秀再计算界面再计算界面错误报告错误报告:C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班11/17刘 秀修正再计算修正再计算:2:存在的不足及预期的解决办法存在的不足及预期的解决办法:C 语言课程设计语言课程设计-简易计算器简易计算器通信工程 11 级一班12/17刘 秀不足之处不足之处: 1计算器的操作界面不是很美观;计算器的操作界面不是很美观; 2而且程序循环使用不能在指定的位置退出;而且程序循环使用不能

16、在指定的位置退出; 3目前只能用于计算目前只能用于计算+、-、*、/ 四则运算;四则运算;预期的解决办法预期的解决办法 : 1查询资料学习了解操作界面的制作方法及需要的技巧;查询资料学习了解操作界面的制作方法及需要的技巧; 2查询相关资料了解学习有关处理字符数组赋值的相关问题查询相关资料了解学习有关处理字符数组赋值的相关问题 (即处理字符数组赋值只取到预定的位置即处理字符数组赋值只取到预定的位置); 3学习了解相关的库函数的功能以增加计算器的计算功能学习了解相关的库函数的功能以增加计算器的计算功能 (如计算器的次方、开方、如计算器的次方、开方、等的运算、等的运算) .六、课程设计心得体会六、课程设计心得体会:心得体会心得体会:我对编程是有很浓厚兴趣的。在编程的过程中,我深深地体会到力不从心我对编程是有很浓厚兴趣的。在编程的过程中,我深深地体会到力不从心有有 些知识没能深入地理解和掌

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号