在 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