逆波兰表达式求值在一行中输入1个算式。相邻的符号(操作数或运算符)用1个空格隔开。 输出格式: 在一行中输出计算结果。 限制: 2≤算式中操作数的总数≤100 1≤算式中运算符的总数≤99 运算符仅包括“+”、“-”、“*”,操作数、计算过程中的值以及最终的计算结果均在int范围内。C语言实现
时间: 2024-03-26 15:35:15 浏览: 25
逆波兰表达式求值可以使用栈来实现,以下是C语言的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define MAX_EXPR_LEN 1000 // 表达式最大长度
int stack[MAX_EXPR_LEN], top = -1; // 初始化栈
int eval(char* expr) {
char* token = strtok(expr, " "); // 使用空格分隔每个元素
while (token != NULL) {
if (isdigit(token[0])) { // 如果当前元素是操作数
int num = atoi(token); // 将字符串转换成整数
stack[++top] = num; // 压入栈中
} else { // 如果当前元素是运算符
int num2 = stack[top--]; // 弹出栈顶的两个元素
int num1 = stack[top--];
switch (token[0]) { // 进行计算并将结果压入栈中
case '+':
stack[++top] = num1 + num2;
break;
case '-':
stack[++top] = num1 - num2;
break;
case '*':
stack[++top] = num1 * num2;
break;
}
}
token = strtok(NULL, " "); // 继续读取下一个元素
}
return stack[top]; // 栈顶元素即为最终的计算结果
}
int main() {
char expr[MAX_EXPR_LEN];
fgets(expr, MAX_EXPR_LEN, stdin); // 从标准输入读取表达式
printf("%d\n", eval(expr)); // 输出最终的计算结果
return 0;
}
```
希望能够帮助到你!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)