酷代码 AI
菜单
服务商

给定一个中缀表达式,请编写程序计算该表达式的值。表达式包含+、-、*、/、^、(、),所有运算均为二元运算,操作数均为正整数,但可能不止一位,不超过10位。运算结果为整数,值域为[−2 31 ,2 31 )。除法运算结果若为小数则进行截尾取整。若除法运算中除数为0,则输出invalid。幂运算须自行实现,不允许调用pow等系统函数。测试数据保证幂运算中指数为非负,底数不为0。 输入格式: 输入为多行,每行为一个长度不超过1000的字符串,表示中缀表达式。 输出格式:

以下是使用 Python 实现的计算中缀表达式值的程序: ```python import re def calculate(expression): # 去除空格 expression = expression.replace(' ', '') # 定义运算符优先级 priority = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3} # 定义一个栈用于存储操作符 op_stack = [] # 定义一个栈用于存储操作数 num_stack = [] # 数字匹配模式 num_pattern = re.compile(r'\d+') i = 0 while i < len(expression): if expression[i].isdigit(): num = '' while i < len(expression) and expression[i].isdigit(): num += expression[i] i += 1 num_stack.append(int(num)) continue elif expression[i] == '(': op_stack.append(expression[i]) i += 1 continue elif expression[i] == ')': while op_stack[-1]!= '(': op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) op_stack.pop() i += 1 continue else: while op_stack and priority[op_stack[-1]] >= priority[expression[i]]: op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) op_stack.append(expression[i]) i += 1 while op_stack: op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) return num_stack.pop() def compute(op1, op2, op): if op == '+': return op1 + op2 elif op == '-': return op1 - op2 elif op == '*': return op1 * op2 elif op == '/': if op2 == 0: return "invalid" else: return op1 // op2 elif op == '^': return op1 op2 while True: try: expression = input() result = calculate(expression) print(result) except EOFError: break ``` [2024-10-24 16:38:27 | AI写代码神器 | 584点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]