); //3
printf("%f\n", calculate("325-2*+")); //-3
printf("%f\n", calculate("21+3*5387-/*-")); //-6
测试通过,跟之前的计算结果一直。以上便是一个简单的后缀表达式的计算程序了。进行了多几次的测试发现了一个小问题,就是目前无法进行多位数的识别。因为程序没一次都将一位数压入站内了。思考了一下在表达式的每个计算项上加了一个空格符作为数字的区分。变为 21 3 +这种形式,于是动手将代码做了一点小改动
在 switch 中加入了对空格的处理,以及多位数的处理
//如果遇到空格,则重置标志位
这样一来就可以识别多位数了。经测试
printf("%f\n", calculate("21 1+")); //22
printf("%f\n", calculate("2 11+")); //13
得到了正确的结果,整个简单计算器的第一步计算后缀表达式完成。
有兴趣的可以测试一下上的代码,如果遇到什么问题可以通过微信公众号反馈给我。
当然这个程序还有一些有待完善的地方。如表达式合法性检查,对小数的处理,以及对负数的处理等,暂时先预留着后续再跟大家分享如何实现以及会用到的知识点。
下一篇将为大家介绍简单数学表达式计算的第二步,如何实现将中缀表达式转换为后缀表达式。
欢迎大家关注微信公众号~