c 用栈编写一个四则运算计算器 支持括号

用栈编写四则运算器

包括两个栈,运算符栈和操作数栈,采用数组方式

 

自左向右扫描表达式,凡是遇到操作数一律进操作数栈。

当遇到运算符时,如果他的优先级比运算符栈栈顶元素的优先级高就入栈。反之,取出栈顶运算符和操作数栈顶的两个连续操作数运算,并将结果存入操作数栈,然后继续比较该运算符与栈顶的运算符的优先级。

 

后缀表达式规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;

若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)

则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。

 

数据栈和操作符栈压栈函数

主函数:

循环判断输入的数是否是数字 存入一个存放数字的数组

判断输入是否为'(',不是即将数字压入栈内

再循环判断操作符的优先级 flag去标志优先级

flag 决定操作符的压栈和操作数的处理

flag = 0 表示操作符压栈

flag = -1 进行操作符处理

 

compare函数:

先判断栈顶和当前操作符+-*/的优先级返回0 表示操作符压栈 返回-1进行操作符处理 返回1是对()进行处理

接着判断栈是否为空和栈顶是否为(

判断括号里面是否运算完

 

calculator_date函数:

从数据栈中取出两个操作数进行数据处理

每次操作之后更新数据栈和操作符栈

得到的值结果再压入数据栈

 

 

 

跑板子的Makefile文件编译(交叉编译器用的arm-himix200-linux-)

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值