niusouti.com
参考答案和解析
答案:D
解析:
将算术表达式的前缀形式、中缀形式和后缀形式分别看成二叉树的前序遍历、中序遍历和后序遍历,本题可转化成已知二叉树的中序遍历和后序遍历序列,如何求出其前序遍历序列。前序遍历的顺序是根结点,左子树,右子树;中序遍历的顺序是左子树,根结点,右子树;后序遍历的顺序是左子树,右子树,根结点;因此后序遍历中最后访问的结点是根结点,该结点将中序遍历分成两个子序列,分别为其左右子树的中序序列,之后递归应用这个过程,构造出一个二叉树,前序遍历该序列,即可得到表达式的前缀形式。
更多“已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为()。”相关问题
  • 第1题:

    表达式a*(b+c)-d的后缀表达形式为(39)。

    A.abcd*+-

    B.abc+*d-

    C.abc*+d—

    D.-+*abcd


    正确答案:B
    解析:一个表达式可用一棵二叉树表示,其中的叶子结点表示操作数,内部结点表示操作符或中间结果,根结点表示整个表达式的值。对此二叉树分别进行前序、中序和后序遍历恰好为表达式的前缀表示(波兰式)、中缀表示和后缀表示(逆波兰式)。其中表达式的前缀和后缀表示均可以将表达式中的括号省去而不影响计算次序和结果。

  • 第2题:

    中缀表达式A-(B+C/D)×E的后缀形式是(41)。

    A.ABC+D/×E-

    B.ABCD/+E×-

    C.AB-C+D/E×

    D.ABC-+D/E×


    正确答案:B

  • 第3题:

    已知一算术表达式的中缀形式为(A+B)*C-D/E,其前缀形式为______。

    A.-*A+BC/DE

    B.-*+ABC/DE

    C.-*+BAC/DE

    D.-*AB+C/DE


    正确答案:B
    解析:(A+B)*C-D/E对应的二叉树如图3-71所示。这棵二叉树的前序遍历-*+ABC/DE就是(A+B)*C-D/E的前缀形式。

  • 第4题:

    表达式“X=A+B×(C-D)/E”的后缀表示形式可以为(11)(运算符优先级相同时,遵循左结合的原则)。

    A.XAB+CDE/-×=

    B.XA+BC-DE/×=

    C.XABCD-xE/+=

    D.XABCDE+x-/=


    正确答案:C
    解析:要把表达式从中缀表达式的形式转换成用后缀表示法表示的等价表达式,必须了解操作符的优先级和结合性。优先级或者说操作符的强度决定求值顺序;优先级高的操作符比优先级低的操作符先求值。如果所有操作符优先级一样,那么求值顺序就取决于它们的结合性。操作符的结合性定义了相同优先级操作符组合的顺序(从右至左或从左至右)。转换过程包括用下面的算法读入中缀表达式的操作数、操作符和括号:(1)初始化一个空堆栈,将结果字符串变量置空。(2)从左到右读入中缀表达式,每次一个字符。(3)如果字符是操作数,将它添加到结果字符串。(4)如果字符是个操作符,弹出(pop)操作符,直至遇见开括号(openingparenthesis)、优先级较低的操作符或者同一优先级的右结合符号。把这个操作符压入(push)堆栈。(5)如果字符是个开括号,把它压入堆栈。(6)如果字符是个闭括号(closingparenthesis),在遇见开括号前,弹出所有操作符,然后把它们添加到结果字符串。(7)如果到达输入字符串的末尾,弹出所有操作符并添加到结果字符串。

  • 第5题:

    阅读以下说明和图4-6,回答问题1至问题4。

    【说明】

    本流程图(如图4-6所示)是将中缀表示的算术表达式转换成后缀表示。如中缀表达式 (A-(B*C+D)*E)/(F+G)的后缀表示为ABC*D+E*-FG+/。为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达式非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下。

    . 数组IN[]存储中缀表达式。

    . 数组POLISH[]存储其后缀表示。

    . 数组S[]是一个后进先出栈。

    函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级如表4-4所示。

    填充流程图中①的判断条件。


    正确答案:PRIOR(IN[i]):PRIOR(S[p])
    PRIOR(IN[i]):PRIOR(S[p])

  • 第6题:

    表达式可采用后缀形式表示,例如,“a+b”的后缀式为“ab+”.那么,表达式“a*(b-c)+d”的后缀式表示为( )。

    A.abc-*d+B.Abcd*-+C.abcd-*+D.ab-c*d+


    正确答案:A

  • 第7题:

    若某算术表达式用二叉树表示如下, 则该算术表达式的中缀式为( ), 其后缀式为(请作答此空)。

    A.abc+-d*
    B.abcd*+-
    C.ab-c+d*
    D.abcd+*-

    答案:A
    解析:
    中缀式的表达式接近人们进行数学计算使用的表达式,因此30题选择C。后缀式是采用左、右、根的方式进行遍历。

  • 第8题:

    中缀表达式A-(B+C/D)*E的后缀形式是()。

    A.AB-C+D/E*
    B.ABC+D/-E*
    C.ABCD/E*+-
    D.ABCD/+E*-

    答案:D
    解析:
    将中缀表达式表示成二叉树的形状,则这棵二叉树的后序遍历序列即为表达式的后缀形式。

  • 第9题:

    表达式a*(b+c)-d的后缀表达形式为()。

    • A、abcd*+-
    • B、abc+*d-
    • C、abc*+d-
    • D、-+*abcd

    正确答案:B

  • 第10题:

    A+B/C-D*E的后缀表达式是()


    正确答案:ABC/+DE*-

  • 第11题:

    填空题
    A+B/C-D*E的后缀表达式是()

    正确答案: ABC/+DE*-
    解析: 暂无解析

  • 第12题:

    单选题
    已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/,其前缀形式为(  )。
    A

    -A+B*C/DE

    B

    -A+B*CD/E

    C

    -+*ABC/DE

    D

    -+A*BC/DE


    正确答案: B
    解析:

  • 第13题:

    已知一算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

    A.-a+b*c/d

    B.-a+b*cd/e

    C.-+*abc/de

    D.abcd/+e*-


    正确答案:D

  • 第14题:

    表达式“(a+b)*(c-d)”的后缀表示为(48)。

    A.ab+cd-*

    B.abcd+-*

    C.ab+*cd-

    D.abcd*+-


    正确答案:A
    解析:本题考查程序语言处理基础知识。表达式的后缀表示是指将运算符号写在运算对象的后面,表达式中的运算符号按照计算次序书写。对于表达式“(a+b)*(c-d)”,先计算a与b的和,再计算c与d之差,然后进行相乘,因此其后缀式为“ab+cd-*”。

  • 第15题:

    中缀表达式A-(B+C/D)*E的后缀形式是(36)。

    A.AB-C+D/E*

    B.ABC+D/-E*

    C.ABCD/E*+-

    D.ABCD/+E*-


    正确答案:D
    解析:本题考查的内容实质是二叉树的遍历。在算术表达式的二叉树中,运算符占据着根结点的位置,而被运算的数都是树中的叶子结点。中缀表达式反映出了表达式的运算次序,如题目中的表达式A-(B+C/D)*E,首先运算括号里面的,再运算乘法,最后才是减法。在二叉树中,最先运算的操作是子树,最后运算的操作符才是根结点。根据中缀表达式A-(B+C/D)*E,我们很容易画出其对应的二叉树,再对此二叉树进行后序遍历得到ABCD/+E*-。

  • 第16题:

    阅读以下说明和流程图(如图1所示),回答问题1至问题4。

    【说明】

    本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式

    (A-(B*C+D)*E)/(F+G))

    的后缀表示为

    ABC*D+E*-FG+/

    为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:

    数组 IN[]存储中缀表达式;

    数组 POLISH[]存储其后缀表达式;

    数组 S[]是一个后进先出栈;

    函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:

    填充流程图中①的判断条件。


    正确答案:PRIOR(IN[i]):PRIOR(S[p])
    PRIOR(IN[i]):PRIOR(S[p])

  • 第17题:

    表达式a*(b+c)-d的后缀表达形式为______。

    A.abcd*+-

    B.abc+*d-

    C.abc*+d-

    D.-+abcd


    正确答案:B

  • 第18题:

    ●后缀表达式“ab+cd-*”与表达式(31)对应。

    (31)A.(a+b)*(c-d)

    B.a+b*c-d

    C.a+b*(c-d)

    D.(a+b)*c-d


    正确答案:A

  • 第19题:

    表达式可采用后缀形式表示,例如,“a+b”的后缀式为“ab+”. 那么,表达式“a*(b-c)+d”的后缀式表示为(33)

    A.abc-*d+
    B.Abcd*-+
    C.abcd-*+
    D.ab-c*d+

    答案:A
    解析:
    要先看运算顺序,为b-c,表示为bc-,然后是a*(b-c),表示为abc-*,最后a*(b-c)+d表示为abc-*d+

  • 第20题:

    某算术表达式用二叉树表示如下,该算术表达式的中缀式为( ),其后缀式为(请作答此空)。

    A.abc+-d*
    B.abcd*+-
    C.ab-c+d*
    D.abcd+*-

    答案:A
    解析:
    前序遍历:先访问根结点,再依次按前序遍历的方式访问根结点的左子树、右子树中序遍历:先中序遍历根结点的左子树,再访问根结点,再中序遍历根结点的右子树后序遍历:先中序遍历根结点的左子树,再中序遍历根结点的右子树,再访问根结点二叉树采用中序遍历得中缀表达式,采用后序遍历得后缀表达式

  • 第21题:

    中缀表达式A-(B+C/D)*E的后缀表达式形式是()。

    • A、AB-C+D/E*
    • B、ABC+D/-E*
    • C、ABCD/E*+-
    • D、ABCD/+E*-

    正确答案:D

  • 第22题:

    后缀算术表达式24 8 + 3 * 4 10 7 - * /所对应的中缀算术表达式为(),其值为()。


    正确答案:(24+8)*3/(4*(10-7));8

  • 第23题:

    填空题
    后缀算术表达式24 8 + 3 * 4 10 7 - * /所对应的中缀算术表达式为(),其值为()。

    正确答案: (24+8)*3/(4*(10-7)),8
    解析: 暂无解析