请不用堆栈编写一个c++计算器
时间: 2023-02-19 21:06:48 浏览: 117
在 C 语言中实现计算器的一种方法是使用递归下降解析器。这种方法通常用于解析表达式并计算结果。
递归下降解析器的基本思路是,先解析最小的表达式单元,然后逐渐向上解析更复杂的表达式。
下面是一个简单的 C 语言计算器的例子,它支持加减乘除和括号:
```
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int get_next_token(char *s, int *i) {
// 跳过空白字符
while (isspace(s[*i])) (*i)++;
// 如果是数字,返回 TOKEN_NUMBER
if (isdigit(s[*i])) {
int val = 0;
while (isdigit(s[*i])) {
val = val * 10 + (s[*i] - '0');
(*i)++;
}
return TOKEN_NUMBER;
}
// 如果是 +,返回 TOKEN_PLUS
if (s[*i] == '+') {
(*i)++;
return TOKEN_PLUS;
}
// 如果是 -,返回 TOKEN_MINUS
if (s[*i] == '-') {
(*i)++;
return TOKEN_MINUS;
}
// 如果是 *,返回 TOKEN_MULTIPLY
if (s[*i] == '*') {
(*i)++;
return TOKEN_MULTIPLY;
}
// 如果是 /,返回 TOKEN_DIVIDE
if (s[*i] == '/') {
(*i)++;
return TOKEN_DIVIDE;
}
// 如果是 (,返回 TOKEN_LEFT_PAREN
if (s[*i] == '(') {
(*i)++;
return TOKEN_LEFT_PAREN;
}
// 如果是 ),返回 TOKEN_RIGHT_PAREN
if (s[*i
阅读全文