利用栈求表达式的值

上传人:仙*** 文档编号:34442492 上传时间:2021-10-21 格式:DOC 页数:10 大小:164.50KB
收藏 版权申诉 举报 下载
利用栈求表达式的值_第1页
第1页 / 共10页
利用栈求表达式的值_第2页
第2页 / 共10页
利用栈求表达式的值_第3页
第3页 / 共10页
资源描述:

《利用栈求表达式的值》由会员分享,可在线阅读,更多相关《利用栈求表达式的值(10页珍藏版)》请在装配图网上搜索。

1、数据结构课程设计 姓名:王宗敏班级:软件1021111217班学号: 1021111217目录:1需求分析 2概要设计 3详细设计 4调试分析 5用户使用说明 6测试结果 利用栈求表达式的值,可供小学生作业,并能给出分数。1 需求分析任务:通过此系统可以实现如下功能:此系统能够输入一个表达式,并计算该表达式的值。可以根据计算结果给出分数。能供小学生进行简单的四则运算,此外这里特别强调括号的匹配!要求:根据以上功能说明,设计运算信息,堆栈的存储结构,设计程序完成功能; 2. 概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出

2、该存储结构的定义)。3 详细代码#include string.h#include stdio.h#includeconio.h#define maxsize 100#include ctype.htypedef char datatype;typedef structdatatype stackmaxsize;int top; seqstack;void stackinitiate(seqstack *s)s-top=0;int stacknotempty(seqstack s)if(s.toptop=maxsize)printf(堆栈已满无法插入!n);return 0;elses-sta

3、cks-top=x;s-top+;return 1;int stackpop(seqstack *s,datatype *d)if(s-toptop-;*d=s-stacks-top;return 1;int stacktop(seqstack s,datatype *d)if(s.top=0)printf(堆栈已空!n);return 0;else*d=s.stacks.top-1;return 1;void expiscorrect(char exp, int n)seqstack mystack;int i;char c;stackinitiate(&mystack);for(i=0;i

4、n;i+)if(expi=()stackpush(&mystack, expi);else if(expi=) & stacknotempty(mystack) & stacktop(mystack,&c) & c=()stackpop(&mystack,&c);else if(expi=) & !stacknotempty(mystack)printf(右括号多余左括号!n);return ;if(stacknotempty(mystack)printf(左括号多余右括号!n);elseprintf(左右括号匹配正确!n); static float ans50; static int co

5、unt=0; static int right=0; static float yourresult50;int postexp(char exp)seqstack mystack;datatype x1,x2;int i;int j=0,ls;int top=0;int isFalse=0;int isRead=0;char oprator = ;stackinitiate(&mystack);for(i=0;expi!=#;i+)if(isdigit(expi)top=(int)(expi-48);top*=10;elseif (isRead = 0)isRead+;top/=10;sta

6、ckpush(&mystack,top);oprator = expi;top=0;else if (isRead = 1)stackpush(&mystack,top);if (isRead = 1)isRead+;stackpop(&mystack,&x2); stackpop(&mystack,&x1);ls=x1;x1=x2;x2=ls;x1/=10;switch(oprator)case +: x1+=x2;break;case -: x1-=x2;break;case *: x1*=x2;break;case /:if(x2=0.0)printf(除数为0错!n);isFalse=

7、1;elsex1/=x2;break;oprator = expi;x2=x1;top=0;if (isRead = 0)isRead+;top/=10;stackpush(&mystack,top);oprator = expi;top=0;else if (isRead = 1)stackpush(&mystack,top);if (isRead = 1)isRead+;stackpop(&mystack,&x2); stackpop(&mystack,&x1);ls=x1;x1=x2;x2=ls;x1/=10;switch(oprator)case +: x1+=x2;break;cas

8、e -: x1-=x2;break;case *: x1*=x2;break;case /:if(x2=0.0)printf(除数为0错!n);isFalse=1;elsex1/=x2;break;oprator = expi;x2=x1;top=0;if (isFalse = 1) return -1;anscount = x1; printf(请输入您计算的结果:); scanf(%f,&yourresultcount); if(anscount=yourresultcount) right+; count+; getchar();int main()int i=0; char exp10

9、0; printf( -计算表达式-n使用说明:n); printf( 1.请输入要计算的表达式,以#结尾,例如1+2#n); printf( 2.结束计算请输入符号$n); printf( 3.在表达式中可以运算括号,中括号和大括号统一使用小括号代替()!n); printf( 4.程序输入格式错误时,将会自动结束程序,请注意格式正确!n); printf(请输入要计算的表达式,以#结尾。结束程序输入$。n); / c=getchar();scanf(%s,exp); while(expi!=$) expiscorrect(&exp,i); postexp(&exp); printf(-n)

10、; printf(请输入下一个表达式,以#结尾。结束程序输入$。n); scanf(%s,exp); / c=getchar(); printf(nn *您的成绩单*n); printf(-n); printf( 序 号 正确答案 您的答案 结 论n); for(i=0;icount;i+)printf(表达式%d %.2f %.2f %sn, i+1,ansi,yourresulti,ansi=yourresulti?正确!:错误!); printf(-n); printf(解答题目总共为%d道,其中n,count); printf(正确解答%d道题,错误解答%d道题。n *最后得分为%d分!*n, right,count-right,right*100/count); printf(-n); getchar(); getchar();return 0;4调试分析5用户使用说明运行程序,然后根据提示进行计算并给出分数,然后退出。6测试结果程序能正常运行,可以很好的实现预定功能。7附录

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!