《带括号算术表达式的计算》实验报告.docVIP

  • 37
  • 0
  • 约1.2万字
  • 约 16页
  • 2020-08-03 发布于河北
  • 举报

《带括号算术表达式的计算》实验报告.doc

带括号的算术表达式求值 PAGE16 / NUMPAGES16 四川大学 数据结构与算法分析实验报告 实验名称 :带括号的算术表达式求值 指导老师 :________孙界平________ 学 院 :_______软件学院_______ 专 业 :_______软件工程_______ 姓 名 :________马 健________ 学 号 :_____2013141463026____ 班 级 :________5 班________ 日 期 :___2014年10月24日___ 目录 TOC \o 1-3 \h \z \u 一 实验题目 3 二 实验目的和要求 3 三 实验环境 3 四 算法描述 3 五 源程序清单 附录 六 运行结果 6 七 实验运行情况分析 7 一、实验题目: 带括号的算术表达式求值 二、实验目的和要求: 采用算符优先数算法,能正确求值表达式; 熟练掌握栈的应用; 熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C程序; 上机调试程序,掌握查错、排错使程序能正确运行。 三、实验的环境: 硬件环境: 联想 笔记本电脑 软件环境: 操作系统: windows 7 旗舰版 编译软件:Visual C++ 6.0 四、算法描述: 否开始 否 开始 判断表达式是否正确 从键盘读入算术表 达式存入单链表中 是 用栈计算显示算数表达式 退出程序 是 是否继续计算? 显示错误信息 否 判断表达式是否正确 判断表达式是否正确 文字解释: 用户从键盘读入算术中缀表达式,以”=”结尾; 程序判断用户输入表达式是否正确; 若表达式正确,则用栈计算算术表达式; 打印输出计算过程和最终结果; 程序询问用户是否继续计算; 若继续,则执行第1步;若否定,则退出程序 若表达式错误,则打印错误信息,提示用户重新输入 返回第1步; 函数及结构说明: 结构体: 1) 存储算数表达式的单链表: struct Expression{ char sign; struct Expression *next; }; 2) 操作符和操作数栈: typedef struct{ char *top; char *bottom; int stack_size; }Stack; 构造函数: 1) 栈相关操作函数: = 1 \* GB3 ① 初始化空栈 int StackCreate(Stack *s); = 2 \* GB3 ② 入栈操作 int PUSH(Stack *s, char c); = 3 \* GB3 ③ 出栈操作 int POP(Stack *s, char c); = 4 \* GB3 ④ 获取栈顶元素 char GetTop(Stack *s); 2) 计算相关操作函数: = 1 \* GB3 ①利用栈计算算术表达式 int Calculate(struct Expression *exp); = 2 \* GB3 ②子式的值的计算 int Count(char num1, char sign, char num2); = 3 \* GB3 ③判断字符是否为运算符 int IsOpOrNum(char c); = 4 \* GB3 ④判断运算符优先级 char JudgeLevel(char c1, char c2); = 5 \* GB3 ⑤判断表达式正确性 int IsExpresiion(struct Expression *exp); = 6 \* GB3 ⑥输出计算结果 void PrintResult(struct Expression *exp,int result); 3) 算术表达式输入函数: = 1 \* GB3 ①键盘读入存于单链表 struct Expression *GetExp(); 符号2构造 符号2 符号1比较 符号1 比较 + - * / ( ) =(#) + - * / ( = ) =(#) = 五、源程序清单 见附录 六、运行结果 测试表 本次测试采用用户从键盘输入算数表达式,共进行16组测试 序号 测试功能 测试内容 输入项 预期输出 实际输出 结果 1 基本计算操作 单括号运算 2*(3+4)+5*3= 29 29 通过 2 基本计算操作 多括号运算 3+((4+3)*6)/3= 17 17 通过 3 基本计算操作 不能除整运算 6*(2+(3/2))= 21 18 有误差 4 基本计算操作 不能除整运算 (1+2+3)/4= 1.5 1 有误差 5 式子正

文档评论(0)

1亿VIP精品文档

相关文档