前缀表达式问题

arden1019 2005-07-19 11:34:12
写了一个递归的前缀表达式求解,结果总是0:
char *a="*+7**46+895";
int i;
int eval()
{ int x = 0;
while (a[i] == ' ') i++;
if (a[i] == '+')
{ i++; return eval() + eval(); }
if (a[i] == '*')
{ i++; return eval() * eval(); }
while ((a[i] >= '0') && (a[i] <= '9'))
x = 10*x + (a[i++]-'0');

return x;
}
main()
{
int re;
re=eval();
printf("re is %d",re);
system("pause");
}

请大大们帮忙看看
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun428 2005-07-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>

int eval( )
{
char c = getchar();
if ( c=='+' )
return eval()+eval();
else if ( c=='*' )
return eval()*eval();
else
return c-'0';
}
main()
{
int re;
re=eval();
printf("re is %d",re);
getch();
}
boxban 2005-07-20
  • 打赏
  • 举报
回复
char *a="*+7**46+895";
==> char *a = "* + 7 * * 4 6 + 8 9 5";
arden1019 2005-07-20
  • 打赏
  • 举报
回复
thx
arden1019 2005-07-19
  • 打赏
  • 举报
回复
现在只支持加和乘。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧