c中如何判断一个算术表达式是否合法并输出其结果

gaoquanjiegqj 2008-12-19 12:40:13
由键盘输入一个算术表达式,只包含0~9和+-#/(),判断其是否合法,中间无空格,#号结束
比如正确的有 45 4+5*3 (7+8)/4
错误的有 * /45 5+5)
我的思路是:首先判断左右括号数是否相同,然后判断该输入串的第一个字符是否为‘(’或者数字,再判断最后一个字符时候为‘)’或者数字,然后判定有没有符号相连的情况(指+-*/),最后判断数字个数是否比符号个数多一
我觉得很麻烦,有没有简单的方法?如何实现?


还有 如果判断其输入合法的话,想要输出计算的结果如何实现


谢谢了
...全文
810 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaomiaoju 2008-12-19
  • 打赏
  • 举报
回复
用堆栈来做,一个操作数栈,一个运算符栈,具体可参考数据结构那本书。
lbh2001 2008-12-19
  • 打赏
  • 举报
回复
给你提供点线索,用堆栈实现 中缀表达式
dzc8866 2008-12-19
  • 打赏
  • 举报
回复
编译原理?
jieao111 2008-12-19
  • 打赏
  • 举报
回复
自己编个简单的,用递归下降法,加上语法制导翻译就行了,,或者更简单的用yacc生成一个
  • 打赏
  • 举报
回复
mark
sjjf 2008-12-19
  • 打赏
  • 举报
回复
用lex和yacc 生成一个程序自己捉摸也行
wjksd 2008-12-19
  • 打赏
  • 举报
回复
如何做呢?[Quote=引用 2 楼 lbh2001 的回复:]
给你提供点线索,用堆栈实现 中缀表达式
[/Quote]
wiowei 2008-12-19
  • 打赏
  • 举报
回复
算术表达式是一个标准二叉树结构,也是二叉树的应用之一
cqqqq 2008-12-19
  • 打赏
  • 举报
回复
用递归,有简单的实现方法
alexhilton 2008-12-19
  • 打赏
  • 举报
回复
expression tree

70,017

社区成员

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

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