项目3:算术表达式求解

【问题描述】 设计一个简单的算术表达式计算器。

【基本要求】  实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).

【测试数据】 (30+2*70)/3-12*3  5+(9*(62-37)+15)*6  要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。

【实现提示】 可以设计以下辅助函数 status isNumber(char ReadInChar);  //视ReadInchar 是否是数字而返回 TRUE 或 FALSE 。 int TurnToInteger(char IntChar);   // 将字符’0’.’9’ 转换为整数 9

 

 

算术表达式解题思路

1、首先判断算式的优先级:先乘除->后加减->从左到右->先括号内->后括号外

2、再创造一个calculate函数,计算表达式,分别写加法:op1+op2;减法:op1-op2;乘法:op1*op2;除法:op1/op2

3、创建一个栈,来存储运算符

4、初始化入栈和出栈,并将表达式起始符“#”压入栈

5、首先扫描输入的表达式,读入第一个字符:

        (1)若此字符不是运算符,则压入栈,读取下一个字符;

        (2)若此字符是运算符,则判断栈顶元素和此字符的优先级比较结果:

                1)小于,则压入栈,读取下一个字符;

                2)大于,则跳出栈顶的运算符;

                3)等于,则栈顶元素是“(”,此字符就是“)”,相当于匹配成功,最后读取下一个字符。

        (3)所以最后出栈的栈顶元素为表达式的结果,返回此元素。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值