简单计算器:模拟简单运算器的工作,输人一个算式(没有空格),遇等号“=”说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如,输人“1+2*10-10/2=”后,输出10。试编写相应程序。
时间: 2024-12-17 20:48:05 浏览: 9
为了编写这个简单的计算器程序,你可以使用Python语言来实现。这里是一个基础的控制台版计算器的例子:
```python
def calculate(expression):
# 定义一个函数来执行运算
def perform_operation(op, a, b):
if op == '+':
return a + b
elif op == '-':
return a - b
elif op == '*':
return a * b
elif op == '/':
if b != 0:
return a // b
else:
raise ValueError("除数不能为零")
# 使用栈处理操作符和数字
operators = []
result = 0
i = 0
while i < len(expression):
if expression[i].isdigit():
num = 0
while i < len(expression) and expression[i].isdigit():
num = num * 10 + int(expression[i])
i += 1
result += perform_operation(None, result, num)
result = num
else:
while (operators and operators[-1] != '(' and
precedence(operators[-1]) >= precedence(expression[i])):
result += perform_operation(operators.pop(), result, operands.pop())
operators.append(expression[i])
i += 1
# 最后处理剩余的操作符
while operators:
result += perform_operation(operators.pop(), result, operands.pop())
return result
# 定义运算符的优先级
def precedence(op):
if op == '+' or op == '-':
return 1
elif op == '*' or op == '/':
return 2
return 0
# 用户输入和显示结果
expression = input("请输入算式(没有空格): ")
try:
result = calculate(expression)
print("结果是:", result)
except ValueError as e:
print("错误:", str(e))
```
在这个程序中,我们首先定义了一个`perform_operation`函数来处理四种基本的算术运算。然后,我们通过两个栈(一个是操作符栈,另一个是临时存储运算结果的栈)来解析表达式,按照操作符的优先级逐步完成计算。
用户可以运行此程序并输入算式,程序将返回计算结果。如果遇到除数为零的情况,会捕获并显示错误信息。
阅读全文