C语言问题,大侠帮忙

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:28:43
 数学表达式词法分析及实现
要求能将用户输入的任意数学表达式语句正确理解,并编程实现表达式运算结果的正确输出,用户界面可以是基于字符型的Dos界面或图形界面。要求实现以下内容(其中第二部分为附加内容)
1) 算术四则运算表达式的词法分析
如:-3.14*34+(8-45+3)+9*3.4
2) 包含函数的任意数学表达式词法分析(附加部分)
如:sqrt(3.14*34+ 8)*cos(sin(45)/3)+4.9^3
其中函数包括:sin(正弦函数)、cos(余弦函数)、tg(正切函数)、ctg(余切函数)、sqrt(平方根函数)、^(幂函数)、abs(绝对值函数)、exp(指数函数)、ln(对数函数)
我看不懂这个题目是什么意思- -!
有大侠能做一下吗。。。
回复三楼:我是超级菜鸟。。。栈都不懂,55555

就是相当于叫你做个计算器,要实现普通算数还要实现数学三角函数

就是对字符串进行分析了,先将串分解为运算符(包括函数)和数字,根据优先级压入栈中.然后按优先级进行运算,最后输出结果

用数据结构中的栈思想很容易得到的;
你百度下很容易得到的。
这个自己看很快的。
就是把表达式分开看,把它当char *看也可以,然后依次遍历整个表达式,如果发现当前字符是数字,那么就应该是一个操作数;如果不是,就是操作符;然后依次入一个栈,当出现入栈了两个操作符,那么比较这两个操作符的优先级,然后知道一个正确的操作顺序。然后就得到结果了。