c语言用栈实现计算器
时间: 2024-06-15 16:07:03 浏览: 121
c语言用栈实现计算器功能
5星 · 资源好评率100%
C语言可以使用栈来实现一个简单的计器。栈是一种后进先出LIFO)的结构,非常适合用于计算器的实现。
首先,你需要定义一个栈结构来保存操作数和运算符。可以数组来实现栈,同时需要定义一个指针来指示顶位置。
接下来,你可以按照以下步骤实现计算器:
1. 初始化栈和指。
2. 读取用户输入的表式。
3. 遍历表达式的每个字符:
- 如果是数字,则将其转换为整数并入栈。
- 如果是运算,则进行相应的计算操作:
弹出栈顶的两个操作数。
- 根据运符进行计算,并将结果入栈。
. 最后,栈中只剩下一个元素,即为计算结果。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int value) {
if (top >= MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = value;
}
int pop() {
if (top < 0) {
printf("Stack Underflow\n");
return -1;
}
return stack[top--];
}
int calculate(char operator, int operand1, int operand2) {
switch (operator) {
case '+':
return operand1 + operand2;
case '-':
return operand1 - operand2;
case '*':
return operand1 * operand2;
case '/':
return operand1 / operand2;
default:
printf("Invalid operator\n");
return 0;
}
}
int main() {
char expression[100];
printf("Enter an expression: ");
scanf("%s", expression);
int i = 0;
while (expression[i] != '\0') {
if (expression[i] >= '0' && expression[i] <= '9') {
push(expression[i] - '0');
} else {
int operand2 = pop();
int operand1 = pop();
int result = calculate(expression[i], operand1, operand2);
push(result);
}
i++;
}
int result = pop();
printf("Result: %d\n", result);
return 0;
}
```
阅读全文