电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数学表达式计算(c语言实现)VIP免费

数学表达式计算(c语言实现)_第1页
1/13
数学表达式计算(c语言实现)_第2页
2/13
数学表达式计算(c语言实现)_第3页
3/13
用两种方式实现表达式自动计算 - 1 - 一、设计思想 计算算术表达式可以用两种方法实现: 1.中缀转后缀算法 此算法分两步实现:先将算术表达式转换为后缀表达式,然后对后缀表达式进行计算。具体实现方法如下: (1)中缀转后缀 需要建一个操作符栈 op 和一个字符数组 ex p,op 栈存放操作符,字符数组用来存放转换以后的后缀表达式。首先,得到用户输入的中缀表达式,将其存入 str 数组中。对 str 数组逐个扫描,如果是数字或小数点,则直接存入 ex p 数组中,当扫描完数值后,在后面加一个#作为分隔符。 如果是操作符,并且栈为空直接入栈,如果栈不为空,与栈顶操作符比较优先等级,若比栈顶优先级高,入栈;如果比栈顶优先级低或相等,出栈将其操作符存到 ex p 数组中,直到栈顶元素优先等级低于扫描的操作符,则此操作符入栈;如果是左括号,直接入栈,如果是右括号,出栈存入 ex p 数组,直到遇到左括号,左括号丢掉。然后继续扫描下一个字符,直到遇到 str 中的结束符号\0,扫描结束。结束后看 op 栈是否为空,若不为空,继续出栈存入 ex p 数组中,直到栈为空。到此在 ex p 数组最后加结束字符\0。我们就得到了后缀表达式。 (2)后缀表达式计算 此时需要一个数值栈 od 来存放数值。对 ex p 数组进行逐个扫描,当遇到数字或小数点时,截取数值子串将其转换成 dou ble 类型的小数,存入 od 栈中。当遇到操作符,从栈中取出两个数,进行计算后再放入栈中。继续扫描,知道扫描结束,此时值栈中的数值就是计算的结果,取出返回计算结果。 2.两个栈实现算法 此算法需要两个栈,一个值栈 od,一个操作符栈 op。将用户输入的数学表达式存入 str 数组中,对其数组进行逐个扫描。 当遇到数字或小数点,截取数值子串,将其转换成 dou ble 类型的数值存入 od 栈中;当遇到左括号,直接入 op 栈;遇到右括号,op 栈出栈,再从值栈 od 中取出两个数值,计算将其结果存入值栈中,一直进行此操作,直到操作符栈栈顶为左括号,将左括号丢掉。 如果遇到操作符,若 op 栈为空,直接入栈;若栈不为空,与栈顶元素比较优先等级,若比栈顶操作符优先等级高,直接入 op 栈,如果低于或等于栈顶优先等级,op 栈出栈,再从值栈中取出两个数值,计算将其结果存入值栈中,一直进行此操作,直到栈顶优先等级低于扫描的操作符等级,将此操作符入 op 栈。继续扫描直到遇到 str 中的结束字...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数学表达式计算(c语言实现)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部