简单算术表达式求值

原文链接:这里

【题目描述】
两位正整数的简单算术运算(只考虑整数运算),算术运算为:
+,加法运算;
-,减法运算;
*,乘法运算;
/,整除运算;
%,取余运算。
算术表达式的格式为(运算符前后可能有空格):运算数 运算符 运算数
请输出相应的结果。
【输入描述】
一行算术表达式。
【输出描述】
整型算数运算的结果(结果值不一定为2位数,可能多于2位或少于2位)。
【输入样例】
32+64
【输出样例】
96

#include
using namespace std;
int calculate(int x,char z,int y);

int main()
{
int x,y;
char z;

cin>>x>>z>>y;//x、y为运算数,z为运算符
cout<<calculate(x,z,y)<<endl;//根据z进行计算,输出结果
return 0;

}

int calculate(int x,char z,int y)
{
if(z==’+’) return x+y;
if(z==’-’) return x-y;
if(z==’’) return xy;
if(z==’/’) return x/y;
if(z==’%’) return x%y;
}

### B2130 简单算术表达式求值问题解析 简单算术表达式求值通常涉及对字符串形式的数学表达式进行解析和计算。这一过程可以通过栈(stack)数据结构来实现,因为栈可以有效地处理括号匹配以及运算符优先级的问题[^1]。 以下是一个基于 Python 的实现方法,它能够处理加法、减法、乘法和除法,并支持括号嵌套: ```python def evaluate_expression(expression): def apply_operator(operators, values): operator = operators.pop() right = values.pop() left = values.pop() if operator == &#39;+&#39;: values.append(left + right) elif operator == &#39;-&#39;: values.append(left - right) elif operator == &#39;*&#39;: values.append(left * right) elif operator == &#39;/&#39;: values.append(int(left / right)) # 使用整数除法 def precedence(operator): if operator in (&#39;+&#39;, &#39;-&#39;): return 1 if operator in (&#39;*&#39;, &#39;/&#39;): return 2 return 0 operators = [] values = [] i = 0 while i &lt; len(expression): if expression[i] == &#39; &#39;: i += 1 continue elif expression[i] == &#39;(&#39;: operators.append(expression[i]) elif expression[i].isdigit(): num = 0 while i &lt; len(expression) and expression[i].isdigit(): num = num * 10 + int(expression[i]) i += 1 values.append(num) i -= 1 elif expression[i] == &#39;)&#39;: while operators[-1] != &#39;(&#39;: apply_operator(operators, values) operators.pop() # 移除 &#39;(&#39; else: # 运算符 while (operators and operators[-1] != &#39;(&#39; and precedence(operators[-1]) >= precedence(expression[i])): apply_operator(operators, values) operators.append(expression[i]) i += 1 while operators: apply_operator(operators, values) return values[0] # 示例调用 expression = "3 + (2 * 2) - 4 / 2" result = evaluate_expression(expression) print(f"Result of &#39;{expression}&#39; is {result}") ``` 上述代码实现了对一个包含基本算术运算符和括号的表达式的解析与求值。其核心思想是通过两个栈分别存储操作数和操作符,同时根据操作符的优先级决定何时执行计算[^1]。 #### 关键点说明 - **操作数栈**:用于存储待处理的数字。 - **操作符栈**:用于存储待处理的操作符。 - **优先级规则**:乘法和除法的优先级高于加法和减法,括号内的表达式优先计算。 - **空格处理**:忽略表达式中的空格字符。 通过上述方法,可以有效解决简单算术表达式求值问题,并且代码具有较高的可扩展性[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值