写一个c语言版表达式求值
时间: 2023-09-04 13:07:24 浏览: 48
以下是一个简单的 C 语言版表达式求值的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char expression[100];
printf("请输入表达式:");
scanf("%s", expression);
int stack[100], top = -1; // 定义一个栈和栈顶指针
int i, num1, num2;
char op;
for (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 {
// 如果是运算符,取出栈顶的两个数进行计算
num2 = stack[top--];
num1 = stack[top--];
switch (expression[i]) {
case '+':
stack[++top] = num1 + num2;
break;
case '-':
stack[++top] = num1 - num2;
break;
case '*':
stack[++top] = num1 * num2;
break;
case '/':
stack[++top] = num1 / num2;
break;
default:
printf("表达式有误!\n");
exit(0);
}
}
}
// 最终栈顶就是表达式的结果
printf("表达式的结果为:%d\n", stack[top]);
return 0;
}
```
该程序通过一个数组模拟了栈的数据结构,遇到数字时将其转换成整数并入栈,遇到运算符时取出栈顶的两个数进行计算,最终栈顶就是表达式的结果。