洛谷B2130简单算术表达式求值

该篇文章介绍了如何通过C++编程实现对输入的整数算术表达式进行基本运算,包括加法、减法、乘法、除法和取余,并给出了相应的代码示例。

题目描述

两位正整数的简单算术运算(只考虑整数运算),算术运算为:

+,加法运算;

-,减法运算;

*,乘法运算;

/,整除运算;

%,取余运算。

算术表达式的格式为(运算符前后可能有空格):

运算数运算符运算数。

请输出相应的结果。

输入格式

一行算术表达式。

输出格式

整型算数运算的结果(结果值不一定为 2 位数,可能多于 2 位或少于 2 位)。

思路

将表达式赋值给a(int类型)、b(char类型)、c(int类型),if判断输出即可。

代码

#include<iostream>
using namespace std;
int main(){
    char a;
    int b=0,c=0,d;
    cin>>b>>a>>c;
    if(a=='+'){//判断运算符是否为“+”
    	cout<<b+c;
	}
	if(a=='-'){//判断运算符是否为“-”
    	cout<<b-c;
	}
	if(a=='*'){//判断运算符是否为“*”
    	cout<<b*c;
	}
	if(a=='/'){//判断运算符是否为“/”
    	cout<<b/c;
	}
	if(a=='%'){//判断运算符是否为“%”
    	cout<<b%c;
	}
	return 0;
}

END

### 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 == '+': values.append(left + right) elif operator == '-': values.append(left - right) elif operator == '*': values.append(left * right) elif operator == '/': values.append(int(left / right)) # 使用整数除法 def precedence(operator): if operator in ('+', '-'): return 1 if operator in ('*', '/'): return 2 return 0 operators = [] values = [] i = 0 while i < len(expression): if expression[i] == ' ': i += 1 continue elif expression[i] == '(': operators.append(expression[i]) elif expression[i].isdigit(): num = 0 while i < len(expression) and expression[i].isdigit(): num = num * 10 + int(expression[i]) i += 1 values.append(num) i -= 1 elif expression[i] == ')': while operators[-1] != '(': apply_operator(operators, values) operators.pop() # 移除 '(' else: # 运算符 while (operators and operators[-1] != '(' 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 '{expression}' is {result}") ``` 上述代码实现了对一个包含基本算术运算符和括号的表达式的解析与求值。其核心思想是通过两个栈分别存储操作数和操作符,同时根据操作符的优先级决定何时执行计算[^1]。 #### 关键点说明 - **操作数栈**:用于存储待处理的数字。 - **操作符栈**:用于存储待处理的操作符。 - **优先级规则**:乘法和除法的优先级高于加法减法,括号内的表达式优先计算。 - **空格处理**:忽略表达式中的空格字符。 通过上述方法,可以有效解决简单算术表达式求值问题,并且代码具有较高的可扩展性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值