



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称 C语言程序设计 实验序号 1 实验项目 循环控制结构 实验地点 综B402号机房 实验学时 4 实验类型 设计性 专 业 信息管理 班 级 2015级 班 学 号 姓 名 2015年 10月 25 日1 实验题目:栈和队列的应用利用栈存储结构,编制一个进行10以内数字四则运算的程序。假设在表达式中只有加、减、乘、除四个四则运算符,所有的运算对象均为10以内的整数。2 实验分析 本程序用 Turbo C+ for windows编写,完成表达式的计算首先要考虑表达式的运算顺序,所以,计算一个表达式实际上就是根据各种运算符的优先级来处理运算顺序。 输入的形式和输入值的范围:程序的输入是四则运算表达式字符串,为了方便处理,还假设在表达式的最后有一个结束符“;”。 输出的形式:输入的结果是表达计算的结果。 程序设计思想:计算表达式前,首先设置以下两个栈:OS:用于在表达式处理过程中存放运算符。开始时,在OS中先压入一个表达式结束符“;”。NS:把表达式计算过程中的操作数存放在NS中。从头到尾读出表达式中的各个符号,每读出一个符号按以下原则处理: 若读出的是运算符,则作进一步判断:a.若读出的是表达式结束符“;”,且运算符栈栈顶的运算符也是表达式结束符“;”,则表达式处理结束,最后的计算结果在操作数栈的栈顶位置。b.若读出运算符的优先级大于运算符栈栈顶运算符的优先级,则将读出的运算符压入运算符栈,并依次读下一个符号。 c.若读出运算符的优先级不大于运算符栈栈顶运算符的优先级,则从操作数栈连续退出两个操作数,并从运算符栈退出一个运算符,然后作相应的运算(运算符为刚从运算符栈退出的运算符,运算对象为刚从操作数栈退出的两个操作数),并将运算结果压入操作数栈。 若读出的是操作数,则将该操作数压入操作数栈,并依次读下一个符号。 测试数据 使用如下的字符串表达作测试数据 “4+4*2-6/1+9;” “3*4-2*3+6/6*2;” “9*4+3/2+7-9;”3 程序代码 实现概要设计中定义的所有函数代码。a.函数WhoIsFirst()的实现代码: int WhoIsFirst(char o1,char o2) if (o1=* | o1=/ | o2=;) return 0; else if (o2=- | o2=+) & o1!=;) return 0; else return 1; b.函数Compute()的实现代码: float Compute(float n1,float n2,char Op) switch(Op) case -: return n1-n2;break; case +: return n1+n2;break; case *: return n1*n2;break; case /: return n1/n2;break; default: return 0; c.函数main()的实现代码:main() char *s,o1,o2; int i,k; float num1,num2; OPCHARSTACK OS; OPERNUMSTACK NS; OS.datas0=; OS.top=1; NS.top=0;printf(%s,”请输入运算表达式:”); gets(s); for(i=0;istrlen(s);i+) if(int)si=48) NS.datasNS.top=(int)si-48; NS.top+; else o1=OS.datasOS.top-1; o2=si; if(WhoIsFirst(o1,o2) OS.datasOS.top=o2;OS.top+; else while (!WhoIsFirst(o1,o2) if(o1=; & o2=;) break; OS.top-; num2=NS.datasNS.top-1; NS.top-; num1=NS.datasNS.top-1; NS.top-; NS.datasNS.top=caculate(num1,num2,o1); NS.top+; o1=OS.datasOS.top-1; OS.datasOS.top=o2; OS.top+; printf(%f,NS.datasNS.top-1);4 运行结果 请输入运算表达式: 4+4*2-6/1+9;15请输入运算表达式: 3*4-2*3+6/6*2;8请输入运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基础强化自考专业(市场营销学)试题带答案(基础题)
- 2025年度精密仪器委托生产合作协议
- 2025年旅游景区场地租赁合同补充协议范本
- 2025成都个人车辆租赁合同示范文本
- 2025年度水电安装工程结算与支付合同范本
- 2025版互联网+教育项目投资协议书
- 2025版商用净水设备租赁与环保责任保险合同
- 2025大厦环保材料装修工程招标合同
- 2025版高尔夫球场租赁及配套设施使用合同
- 2025版人力资源和社会保障局0001号企业退休人员管理服务合同
- 徒步小组管理办法
- 2025年初级(五级)医疗护理员职业技能鉴定《理论知识》考试真题(后附答案及解析)
- 2025年浙江省初中学业水平考试科学试卷真题(精校打印)
- 市政施工安全培训课件
- 《慢性萎缩性胃炎中西医结合诊疗专家共识(2025)》解读 3
- 医院保洁员考核管理办法
- 人教版(2024)七年级上册英语教学计划(含教学进度表)
- 2025年天津市中考道德与法治真题(解析版)
- 初中九年级(人教版)语文(上下册)课本全部(40篇)诗词文言文集合
- 医院关于开展整治重复医疗检查检验、违规收费问题工作实施方案的通知
- 中医高热护理常规
评论
0/150
提交评论