已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称: 数据结构课程设计 设计题目: 表达式求值(计算器) 学 院: 信息科学与工程学院 专 业: 计算机科学与技术(软件外包)姓 名: 指导教师:二零一五年 十二月 二十九日济南大学课程设计一、设计内容与要求1、问题描述 设计一个算术计算器,能运算包括四则运算、括号的表达式的运算。2、设计要求实现()、+、-、*、/、 等运算,实现小数和整数混合运算,优先级的处理,能判断算术表达式是否正确等。二、算法设计1、输入并建立表达式,运用数组结构体构建将整型数字与操作符结合定义运算符的优先级。typedef struct yxjchar operat;int rank;yxj;2、分别建立一个操作数栈和操作符栈存放数字和操作符,定义操作符栈第一个元素优先级最低。3、自左向右扫描字符串遇到字符串中的数字时一律提取转换成double型存入操作数栈。遇到操作符时,则将当前运算符的优先级数与运算符栈顶元素的优先级数相比较。若当前运算符的优先级数大,则进栈;反之,则取出栈顶的运算符,并在数栈中连续取出两个栈顶元素作为运算对象进行运算,并将运算结果存入数栈,然后继续比较当前运算符与栈顶元素的优先级。直到当前运算符进栈。4、对比运算符进行+ - * /() 运算。三、程序代码#include#include#include#include#define N 100typedef struct yxjchar operat;int rank;yxj;typedef struct strchar dataN;zs;void szys(yxj mark)yxj osN;char ch;double nsN;zs zhan20;int numbN;int Len,p=0,q=1,i,o=1,n=0; char dataN;os0=mark0;printf(请输入算术(+ - * / )表达式(以 = 结束):n);scanf(%s,data);Len=strlen(data);numb0=0;for(i=0;i20;i+)zhani.data0=0;for(i=0;iLen;i+) int t=0;if(datai=|datai=+|datai=-|datai=*|datai=/|datai=(|datai=)|datai=)int j,k=0;if(datai=|datai=|datai=+|datai=-|datai=*|datai=/)&(datai-1=|datai-1=+|datai-1=-|datai-1=*|datai-1=/)printf(格式错误n);return;numbq+=i;while(zhan(p+k)/2.data0!=0)k+;for(j=numbq-2;j=0&dataj=9|dataj=.)zhan(p+k)/2.datat+=dataj;zhan(p+k)/2.datat=0;if(zhan(p+k)/2.data0!=0)nsn+=atof(zhan(p+k)/2.data);p+;for(j=0;joso-1.rank&markj.operat!=()oso+=markj;break;else double numb1,numb2,numb;ch=os-o.operat;if(ch=+)numb1=ns-n;numb2=ns-n;numb=numb1+numb2;nsn+=numb;if(ch=-)numb1=ns-n;numb2=ns-n;numb=numb2-numb1;nsn+=numb;if(ch=*)numb1=ns-n;numb2=ns-n;numb=numb2*numb1;nsn+=numb;if(ch=/)numb1=ns-n;numb2=ns-n;if(numb1=0)printf(无效操作n);return;elsenumb=numb2/numb1;nsn+=numb;if(ch=)numb1=ns-n;numb2=ns-n;numb=pow(numb2,numb1);nsn+=numb;else if(datai=0&datai=9);else if(datai=.);elseprintf(格式错误,请重新输入:n);szys(mark);break;printf(%lfn,ns0);int main ()yxj mark9;mark0.operat=#;mark0.rank=-1;mark1.operat=+;mark1.rank=1;mark2.operat=-;mark2.rank=1;mark3.operat=*;mark3.rank=2;mark4.operat=/;mark4.rank=2;mark5.operat=(;mark5.rank=-1;mark6.operat=);mark6.rank=-1;mark7.operat=;mark7.rank=0;mark8.operat=;mark8.rank=3;while(1)char iN;printf(*1、计算器*n);printf(*0、退出 *n);scanf(%s,&i);if(strcmp(i,0)=0)break;else if(strcmp(i,1)=0)szys(mark);elseprintf(没有该选项n);四、运行测试1.正常四则运算2.乘方运算3.除数为零时4.格式出现错误5.小数运算五、结 论 这次课程设计让我们更加了解大一学到的C和这个学期学到的数据结构。课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力和更加了解编程思想和编程技巧。 这次课程设计也让我们有一个深刻的体会,那就是细节决定成败,编程最需要的是严谨,如何的严谨都不过分,往往检查了半天发现错误发生在某个括号,分号,引号,或者数据类型上。程序设计时,也不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获。在具体操作中这学期所学的数据结构的理论知识得到巩固,达到课程设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。 这个程序是我们3个人完成的,我们的工作是一个团队的工作,团队需要个人,个人也离
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新疆维吾尔自治区烟草专卖局人员招聘笔试备考试题及详细答案解析
- 2026年四川省国有资产经营投资管理有限责任公司人员招聘考试参考试题及详细答案解析
- 2025输血有关试题及答案
- 2025小学生科普常识知识竞赛题库道含完整答案(历年真题)
- 2025新《安全生产法》知识竞赛测试试题库及答案(共50题)
- 2025医院护士招聘笔试题库及答案
- 初中七年级地理教学设计:地球自转与公转的时空认知构建
- 2025作物栽培学试题及答案
- 2026春招:国家电网真题及答案
- 九年级物理教学设计:动态电路电表示数变化规律探究
- 事业单位财会岗招聘笔试高频考题试卷及解析
- 2027届高三语文上学期全国各地名校9月模考病句修改汇编(含答案)
- 2026年《中国病毒性心肌炎诊疗临床指南(2026版)》
- 《化工企业设备检修作业安全规范》(AQ 3026-2026)解读化危为安
- 新背景下的2027年高考语文一轮备考策略
- ASTM D5276-23 中文版(运输包装件自由跌落测试标准 完整原文 + 不同重量跌落高度对照表)
- 2026 年世界标准日标准化知识科普课件
- 2026年危重患者抢救制度培训课件
- 2025-2026学年高一化学上学期第一次月考01(人教版必修第一册)A4版
- 2026通信工程专业招聘笔试精练(企业版)
- 2026华医网继续教育危重症患者气道精细化管理题库及答案
评论
0/150
提交评论