请不用堆栈编写一个c++计算器

在 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值