利用后缀表达式计算中缀表达式的值c语言
时间: 2024-10-09 21:13:04 浏览: 63
后缀表达式(也称为逆波兰表示法或RPN,Reverse Polish Notation)是一种数学表达式的书写方式,它将运算符放在操作数之后。计算后缀表达式的值在C语言中通常通过栈数据结构实现。下面是基本步骤:
1. 遇到数字,直接压入栈。
2. 遇到运算符,从栈顶取出两个操作数进行计算,然后把结果压回栈。
3. 当遇到整个表达式结束时,栈中剩下的唯一元素就是最终的结果。
这里是一个简单的C语言函数示例,用于计算后缀表达式的值:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isOperator(char op) {
// 添加更多运算符判断
return (op == '+' || op == '-' || op == '*' || op == '/');
}
double applyOp(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': if (b != 0) return a / b; else return 0; // 防止除数为零
default: return 0;
}
}
double evaluatePostfix(char* exp) {
stack<double> st;
for (char token : exp) {
if (isdigit(token)) {
st.push(atof(token));
} else {
double val2 = st.top(); st.pop();
double val1 = st.top(); st.pop();
st.push(applyOp(val1, val2, token));
}
}
return st.top();
}
int main() {
char* expression = "2 3 + 4 *"; // 后缀表达式示例
printf("Value of %s is %.2f\n", expression, evaluatePostfix(expression));
return 0;
}
```
阅读全文