C++ 现在输入一行字符串1+2*3/4-5,如何计算它的值?我看到有人说什么atoi atof
C++现在输入一行字符串1+2*3/4-5,如何计算它的值?我看到有人说什么atoiatof这个怎么用?还有就是如何处理这种情况:1+2-3/005*4呢?给我讲一下详细...
C++
现在输入一行字符串1+2*3/4-5,如何计算它的值?我看到有人说什么atoi atof 这个怎么用?还有就是如何处理这种情况:1+2-3/005*4呢?给我讲一下详细的思路,没必要给我贴码,但是一定要详细,不要应付说几句!满意的答案我会追加50悬赏!谢啦! 展开
现在输入一行字符串1+2*3/4-5,如何计算它的值?我看到有人说什么atoi atof 这个怎么用?还有就是如何处理这种情况:1+2-3/005*4呢?给我讲一下详细的思路,没必要给我贴码,但是一定要详细,不要应付说几句!满意的答案我会追加50悬赏!谢啦! 展开
2个回答
展开全部
额因为不知道你学过数据结构没,不知道你有没有学过栈这一种数据结构,所以不知道要详细到什么程度,还是先说说atoi和atof吧,atoi是c自带的一个将字符串转换成为整形的函数(atof就是变为浮点型),要包含头文件stdlib.h,比如你想问的005这样,用atoi(005)结果就是5,不过其实你熟的话不用也可以;然后在来说说算法,思路应该是这样的,建两个数组,分别记录你读入的运算符和数字,当你获得这个式子之后,你从左往右读这个式子,如果是数字就记录到数字数组中,是运算符就记录到运算符数组中,同时要判断是否要马上计算你得到的数组和字符,比如当你读入了1+2*,你发现2后面的*,那么你的1+2就不能计算,但是如果你读入的是1+2-,那么你就可以直接计算1+2了,而不用管后面式子是什么,这个算法的思路其实就是用栈这种后进先出的思路,如果你懂的话就很好理解了
更多追问追答
追问
我知道栈这个东西,我就是不知道应该怎么实现优先运算*/之后再+-…
如果用atof的话读1+2*3的话出来的结果是什么啊?
还有,我用string存的表达式,能用atof吗……
还有就是,我也想用栈做,可是碰到005这种状况怎么办?比如1+0-2/005+3*4/6这种…前面那个0就是0,后面那个005的话要是压进去的话不就是三个数字了么,这样该怎么办。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询