- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 简单运算器的实现
实验二 简单运算器的实现
【实验】【实验】【实验目的要求】1.掌握栈的结构特点、操作特征和表示方法;
2.掌握栈的存储结构特性和基本操作的算法;
3.掌握用栈实现简单四则运算的算法,从而设计和实现一个简单的运算器。
【实验类型】 设计性
【实验时数】 4学时
【实验设备】 计算机
【参考资料】 1.数据结构2.【实验内容】
充分理解栈的操作受限的特点,利用先进先出的结构特性实现实际应用问题。
[具体要求]
(1)定义栈类型为“stack”。(2)输入一个包含+、-、×、\和括号简单四则运算表达式,程序可以得出正确结果;
(3)【实验】typedef struct
{float s[10];
int top;
}stack; /*定义栈类型*/
void inistack(stack *st) /*置栈空*/
float gettop (stack *st) /*取栈顶元素*/
void push (stack *st,float x) /*元素进栈*/
float pop(stack *st) /*元素出栈,并栈顶元素*/
用程序将它们实现,以备后面程序中使用。同学们可以定义另外的形式参数名。
3、设计实现用于“出栈运算”的函数operate
float operate (float a,char theta,float b) /*进行相应运算并得到结果*/
+、-、×、\Switch(theta)
{ cast”+”: 做加操作,得a+b的和;break;
case”-“: 做减操作,得a-b的差;break;
case”*”: 做乘操作,得a*b的积;break;
case”/”: 做除操作,得a/b的商;break;
}
最后将运算结果返回即可。
4、实现算符优先级的函数precede函数。
char precede (char θ1,char θ2) /*比较两个运算符的优先级*/
根据四则运算的优先级可以得到书第53面表3.1的算符间的优先关系表。仔细观察这张表,可以得到一定的规律,由此可以编写precede函数。
在看这张表时一定要记住θ1和θ2是相继出现的,也就是说θ1先出现,然后θ2再出现并与θ1比较优先级的高低。由此,可以说θ1是算符栈的栈顶算符,而θ2是当前读入的算符。
仔细观察这张表,可以得到一些规律:
(1) θ1是“+”和“-”时,当θ2是“*”、“/”和“(”时,它们的优先级关系应该是“”,其余时候它们之间的优先关系是“”;
(2) θ1是“*”和“/”时,当θ2是“(”时,它们之间的优先级是“”,其余时候是“”;
(3) θ1是“(”时,当θ2是表达式结束符时,它们之间的优先级是错误的可以用字符“e”表示,其余情况又可以分成两种:当θ2是“)”时,它们之间的优先级是相同的“=”,θ2是其它字符时,它们之间的优先关系是“”;
(4) θ1是“)”时,当θ2是“(”时,它们之间的优先关系是错误的用字符“e”表示,θ2是其它字符时,它们之间的优先关系就是“”;
(5) θ1是表达式结束符时,当θ2也是表达式结束符时,它们之间的优先关系时相等的用“=”表示,其余情况又可分为两种:当θ2是“)”时,它们之间的优先级关系用“e”表示,θ2是其它字符时,它们之间的优先级关系都可以利用“”来表示。
这五种情况就将相继出现的算符θ1和θ2之间的优先级关系总结完毕了。接下来,就是考虑用什么语句来实现它了。很显然,总共有5种情况,而这5种情况都是根据θ1的值来分的,即当θ1的值确定后,再根据θ2的值来判断,因此可以利用switch语句来实现:
Switch(θ1)
{ case ‘+’:
case ’-‘:
if (θ2是“*”或是“/”或是“(”) z=’’
else z=’’;
break;
case ’*’:
case ’/’:
if(θ2是“(”) z=’’
else z=’’;
break;
case ‘(‘:
if(θ2是表达式结束符) z=’e’
else if(θ2是“)”) z=’=’
else z=’’;
break;
case ‘)’:
……
case 表达式结束符:
…… }
最后将优先级比较的结果z的值返回即可。
5、判断当前读入的字符是不是算符的in函数;
int in(char ch,char opn[]) /*判断字符是否为算符*/
您可能关注的文档
- 四边形目标检测.doc
- 团临安市委积极引导扶持大学生“村官”创业.doc
- 团委学生会换届安排.doc
- 因材施教计划2.doc
- 团日活动3.doc
- 团日活动策划2.doc
- 团结乡2011年两建活动情况汇报.doc
- 团购网营销战略2.doc
- 团结一心活动文档.doc
- 园林工程的成本管理2007.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- 13套题,必过,阿坝州拟任科级领导干部任职资格政治理论考试题汇总.pdf
- 2023年关于医药领域腐败问题全面集中整治自查自纠报告与医院开展医疗领域群众身边腐败作风问题专项整治工作总结【两篇】.docx VIP
- 高中语文必修二课件--念奴娇·赤壁怀古.ppt VIP
- 高中化学选修三全套.pptx VIP
- 中国特色社会主义理论体系的形成的历史条件.ppt VIP
- 领导讲话稿写作方法和技巧.ppt
- 高中:原创语文《反对党八股》(定稿).pptx VIP
- 液压升降机油路图液压升降机毕业设计.doc VIP
- 《管理学原理》全套课后习题答案(大学期末复习资料).docx
- 高中课件:原创语文《反对党八股》公开课课件.pptx VIP
文档评论(0)