='0' && ch<='9')Р " /> ='0' && ch<='9')Р " />

全文预览

后缀表达式求值

上传者:hnxzy51 |  格式:docx  |  页数:5 |  大小:34KB

文档介绍
;Р break;Р case'/':Р if(st.data[st.top]!=0)Р { st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];Р st.top--;}Р elseР printf("\n\t 表达式中有除数为零,本次计算无效!\n ");Р break;Р default: Р if(ch>='0' && ch<='9')Р {Р d=ch-'0';Р st.top++;Р st.data[st.top]=d;}Р }Р ch=exp[t++];Р }Р return st.data[st.top];Р}Р Рint main() Р{ Р?char str[Maxlen],exps[Maxlen];Р printf("\n请输入一个整数后缀表达式: ");Р?gets(str); Р printf("\n其运算的结果为: %g\n\n",compvalue(exps));Р?Р}Р测试数据与实验结果(可以抓图粘贴)Р Р结果分析与实验体会Р程序可以运行,但是我觉得在设计一个程序时看清题目的目的和要求很重要,我一开始没看清要求,开始在考虑怎么把算术表达式转化为后缀表达式,但后来再次理解了一下题目,才发现理解错了。然后参考了一下书上的程序,幸好题目要求不是很难,只是要求计算0—9中的数进行相关计算,在这几个函数中,我觉得要考虑到使用switch()有点难度,开始没有显得用这个函数。这个函数中最难的就是对各个函数的调用,特别是计算后缀表达式的函数,与进栈,出栈联系到一起,真麻烦,但是经过不断得调试以及请教学霸,最后终于解决了,在后缀表达式求值时,较小的数验算正确,然而像改成更大的数值,但结果不成功,而且感觉自己这个程序有点低级,“/”好像不能运算,换成较大的数也不行,10以外的数值跟小的数处理方法是不同的。

收藏

分享

举报
下载此文档