(C语言)科学计算器设计指导书.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(C语言)科学计算器设计指导书

科学计算器设计(C语言版) 学校: 学院:计算机信息工程学院 语言 平台: 作者: 日期: 背景和目的 计算器是现代日常生活中使用较为频繁的工具之一,常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。 常用的算术表达式有三种,前缀表达式,中缀表达式和后缀表达式。 中缀表达式:我们平时书写的表达式就是中缀表达式,形如(a+b)*(c+d),事实上是运算表达式形成的树的中序遍历,特点是用括号来描述优先级。 后缀表达式:也叫逆波兰表达式,事实上是算数表达式形成的树的后序遍历。中缀表达式(a+b)*(c+d)的后缀表达式是ab+cd+*,它的特点就是遇到运算符就立刻进行运算。 前缀表达式:算数表达式形成的树的前序遍历。 日常所书写的是中缀表达式,但是计算机内部是用后缀表达式计算,所以此程序的用户使用中缀表达式作为输入,程序将中缀表达式转化为后缀表达式后再进行运算并输出结果。 由于今后工作将使用C语言进行开发,而C语言是一个功能强大并且很灵活的语言,为复习和巩固C编程,故决定用C语言编写一个科学计算器。 本次开发采用C语言,以面对过程思想进行开发,使用的数据结构有队列和栈。 模块设计 本次开发,使用的控制台输入,并直接在控制台输出。 科学计算器的功能组件如下: 详细设计 宏: #define TEST //表示测试阶段 #define MAX_SIZE 100 //表达式长度 #define LBRACKET 0 //左括号 #define RBRACKET 1 //右括号 #define ADD 2 //加 #define SUB 3 //减 #define MUL 4 //乘 #define DIV 5 //乘 #define INT 6 //整数 #define DOUBLE 7 //浮点数 数据结构: 表达式节点 struct ExprNode{ int n; //表达式节点类型 double p; //表达式节点数据 }; 中缀表达式: struct ExprNode infixExpr[MAX_SIZE]; int infixLen; 后缀表达式: struct ExprNode suffixExpr[MAX_SIZE]; int suffixLen; 后缀转换栈: int transStack[MAX_SIZE]; int transTop; 后缀表达式运算栈: struct ExprNode calcuStack[MAX_SIZE]; int calcuTop; 函数过程: __inline int get_char( char *c ) 缓冲变量无字符则读入字符 读入成功返回0,否者返回-1 int input_expr( void ) 读入表达式 若输入非法字符则返回-1,否则返回0 int pri( int a, int b ) 优先级计算 若a优先于b则返回-1,否则返回0 int trans_expr( void ) 中缀表达式转换为后缀表达式 括号不匹配返回-1,否则返回0 __inline int maxn( int a, int b ) 求最大值 struct ExprNode calcu( struct ExprNode *a, struct ExprNode *b, int c ) 计算a和b做c运算的结果 int calcu_expr( void ) 计算后缀表达式 表达式计算失败返回-1,否则为0 void show( void ) 输出运算结果 代码: #includestdio.h //#define TEST //表示测试阶段 #define MAX_SIZE 100 //表达式长度 #define LBRACKET 0 //左括号 #define RBRACKET 1 //右括号 #define ADD 2 //加 #define SUB 3 //减 #define MUL 4 //乘 #define DIV 5 //乘 #define INT 6 //整数 #define DOUBLE 7 //浮点数 struct ExprNode{ int n; //表达式节点类型 double p; //表达式节点数据 }; struct ExprNode infixExpr[MAX_SIZE]; //中缀表达式 int infixLen; struct ExprNode suffixExpr

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档