用C语言写一个表达式计算器
时间: 2023-07-01 13:09:45 浏览: 142
以下是一个简单的表达式计算器的 C 语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_EXPRESSION_LENGTH 100
int calculate(char op, int num1, int num2) {
switch (op) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
default:
return 0;
}
}
int main() {
char expression[MAX_EXPRESSION_LENGTH];
printf("请输入一个表达式(只支持单个数字和四则运算符):");
scanf("%s", expression);
int stack[MAX_EXPRESSION_LENGTH];
int top = -1;
for (int i = 0; expression[i] != '\0'; i++) {
if (expression[i] >= '0' && expression[i] <= '9') {
int num = expression[i] - '0';
while (expression[i + 1] >= '0' && expression[i + 1] <= '9') {
num = num * 10 + (expression[++i] - '0');
}
stack[++top] = num;
} else if (expression[i] == '+' || expression[i] == '-' || expression[i] == '*' || expression[i] == '/') {
int num2 = stack[top--];
int num1 = stack[top--];
stack[++top] = calculate(expression[i], num1, num2);
}
}
printf("计算结果为:%d\n", stack[0]);
return 0;
}
```
代码中使用了栈来实现表达式求值,算法的具体实现步骤如下:
1. 从左到右遍历表达式中的每个字符。
2. 如果当前字符是数字,将其转换为整数并压入栈中。
3. 如果当前字符是运算符,从栈中弹出两个数字,进行相应的运算,并将结果压入栈中。
4. 遍历完整个表达式后,栈中剩下的数字即为最终结果。
阅读全文