早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

● xab + cde -*f/+=是赋值语句()相应的后缀式()A.x=a+b+c*d-e/f B.x=a+(b+c)*d-e/fC.x=a+b+c*(d-

题目

● xab + cde -*f/+=是赋值语句()相应的后缀式()A.x=a+b+c*d-e/f B.x=a+(b+c)*d-e/fC.x=a+b+c*(d-e)/f D.x=a+b+c+(c*d)-e/f

参考答案
正确答案:C
    后缀式是把运算法写在运算对象后面的式子。这种表达式的优点是根据运算对象和算法的出现次序进行计算,不需要使用括号。
    后缀式的计算方法是:自左至右扫描后缀式,遇到运算对象时就将其压入栈中,遇到k元运算符时就从栈中弹出k项进行运算,并将结果压入栈中,当表达式被扫描完时,栈顶元素就是表达式的运算结果。
    本题后缀式xab + cde -*f/=可通过上述的计算方法推出其中缀表达式。
    假设自左至右扫描xab + cde -*f/=,第一个扫描x,是运算对象,压入栈,接着ab都是运算对象,入栈,此时栈中为xab。扫描到+,它是二元运算符,则从栈顶弹出2个运算对象分别是a和b进行+运算,结果入栈,此时栈中为x及a+b的和,我们用(a+b)来表示。继续扫描,c、d、e入栈,扫描到-,它是二元运算符,从栈顶分别弹出d和e进行减法运算,并将结果d-e入栈,我们用(d-e)表示。那么,此时栈中元素为x、(a+b)、c、(d-e)。接着扫描*,它也是二元运算符,则从栈顶连续弹出连个运算对象(d-e)和c,结果c*(d-e)入栈,此时栈中元素为x、(a+b)、c*(d-e)。再扫描到f,运算对象入栈,扫描/,二元运算符,从栈中弹出两个运算对象分别是c*(d-e)和f,进行除法运算,得到c*(d-e)/f后入栈,此时栈中元素为x、(a+b)、c*(d-e)/f。扫描+,二元运算符,依次弹出(a+b)和c*(d-e)/f进行加法运算,得到(a+b)+c*(d-e)/f入栈,扫描=,二元运算符,弹出x和(a+b)+c*(d-e)/f,最后得到x=a+b+c*(d-e)/f。