- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本科实验报告
实验名称: 计算器
课程名称:
数据结构
实验时间:
任课教师:
实验地点:
良乡机房
实验教师:
实验类型:
□ 原理验证
■ 综合设计
□ 自主创新
学生姓名:
学号/班级:
组 号:
学 院:
同组搭档:
专 业:
成 绩:
实验目的
1、熟悉VC环境,学习使用C语言实现链表的存储结构。
2、通过编程、上机调试,进一步理解线性表、链表、栈的基本概念,并了解进栈,退栈和运用栈的思想解决问题的能力。
3、锻炼动手编程,独立思考的能力。
二、实验题目
简易计算器(栈)
(1)问题描述
通过模拟一个简单的计算器来进行+、-、*、/、%、^(乘方)等运算,从键盘上输入一算术表达式(一般为中缀表达式),计算出表达式的值。
(2)基本要求
编写程序,要求可对一实数算术表达式进行简单的数学运算。
可以识别带加减乘除等运算符及括号的中缀表达式。
a. 按照四则运算规则,求表达式的值。一般规则如下:
1)先括号内,再括号外。
2)先乘方,再乘除,后加减。
b. 同级运算从左到右顺序执行。
c.如表达式有误,应给出相应的提示信息。
(3)数据结构与算法分析
解决表达式求值问题的方法之一是:第一步将中缀表达式转换为后缀表达式,第二步按后缀表达式求值。解题时可以结合字符串的相关知识。
(4)测试
4.5+5+6.5*1.06=16.39
三、实验基础知识
线性表、链表、栈的基本概念的熟练掌握并实际运用。并了解进栈,退栈和运用栈的思想解决问题的能力
四、实验设计方法
1、概要设计
InitStack(OPTR); Push(OPTR,#);
initStack(OPND); c=getchar();
while(c!=#||GetTop(OPTR)!=#){
if(!In(c,OP)){Push((OPND,c);c=getchar();} //不是运算符则进栈
else
switch(Precede(GetTop(OPTR),c)){
case : //栈顶元素优先级低
Push(OPTR,c); c = getchar();break;
case =: //脱括号并接受下一字符
Pop(OPTR,x); c = getchar();break;
case : //退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b); Pop(OPND,a);
Push(OPND, Operate(a,theta,b));
break;
}//switch
}//
return GetTop(OPND);
4.详细设计:
栈的建立
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define TempLen 20
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
#includestdio.h
#includestdlib.h
#includemath.h
typedef int count;
typedef double opndElem;
typedef char optrElem;
typedef struct //运算符栈
{
optrElem *base;
optrElem *top;
int stacksize;
}SqStack_OPTR;
typedef struct //运算数栈
{
opndElem *base;
opndElem *top;
int stacksize;
}SqStack_OPND;
建立头文件,建立算数栈和算符栈,可以考虑使用算符优先算法来实现运算。
主函数
main()
{
SqStack_OPTR A;
SqStack_OPND B;
InitStack_OPTR(A);
InitStack_OPND(B);
Push_OPTR(A,=);
printf(****************************************************** \n);
printf(\n);
printf( 简易计算器 \n);
printf(\n);
printf(*******************************************
您可能关注的文档
最近下载
- 仁爱英语八年级上册Unit2-Topic2-SectionC-教学设计.doc VIP
- 慢性粒细胞白血病治疗病例分享.pptx
- 《糖皮质激素类药物临床应用指导原则2023版》解读PPT课件.pptx VIP
- 《兽医临床诊疗技术》教学课件合集.pptx
- 山塘整治--塘坝除险整治技术指南.ppt
- 小学音乐四年级花城版《山》教学课件.ppt
- 巴黎奥运会潘展乐的飞鱼人生介绍PPT课件(图文).pptx
- 个人征信报告模板征信报告模板(2021简版带水印).docx
- 北师大版七年级上册数学 2.1 有理数 PPT课件.ppt
- 第4课 互联网创新发展 教学设计 2023—2024学年浙教版(2023)初中信息技术七年级上册.docx
文档评论(0)