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

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

A.a-b+c*d
B.a-(b+c)*d
C.(a-(b+c))*d
D.a-(b+c*d)
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

A.–A+B*C/DE

B.–A+B*CD/E

C.–+*ABC/DE

D.–+A*BC/DE


正确答案:D

第2题:

阅读以下说明和流程图(如图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])

第3题:

算术表达式采用逆波兰式表示时不用括号,可以利用(1)进行求值。与逆波兰式ab-cd+*对应的中缀表达式是(2)。空白(2)处应选择()

A.a-b+c*d

B.(a-b)*c+d

C.(a-b)*(c+d)

D.a-b*c+d


参考答案:C

逆波兰式表示方式把运算符写在运算对象的后面,不需要使用括号。由于逆波兰式表示中的各个运算是按顺序执行的,因此,它的计值很容易实现。为此,仅需从左到右依次扫视表达式中的各个符号,每遇到一个运算对象,就把它压入栈顶暂存起来;每遇到一个二元(或一元)运算符时,就取出栈顶的两个(或一个)运算对象进行相应的运算,并用运算结果去替换栈顶的这两(或一)个运算对象,然后再继续扫视余留的符号,如此等等,直到扫视完整个表达式为止。当上述过程结束时,整个表达式的值将留于栈顶。a-b+c*d对应的逆波兰式为ab-cd*+。(a-b)*c+d对应的逆波兰式为ab-c*d+。(a-b)*(c+d)对应的逆波兰式为ab-cd+*。a-b*c+d对应的逆波兰式为abc*-d+。

第4题:

算术表达式采用后缀式表示时不需要使用括号,使用( )就可以方便地进行求值。a-b*(c+d)的后缀式为(请作答此空)。

A. a b c d- * +
B. a b c d * + -
C. a b – c * d +
D. a b c d + * -

答案:D
解析:
表达式“a-b*(b+d)”的后缀表达式形式为 “abcd + * -。一种比较简便的方法:a-b*(c+d),看计算的先后顺序,先是c+d,转化的时候将操作数放前面,然后再是运算符放后面,注意操作数的前后顺序保持不变,所以是cd+。然后b*(c+d),同样,操作数放前面,运算符放后面,所以是bcd+*。最后是a-b*(c+d),操作数放前面,运算符放后面,最后就是abcd+*-。

第5题:

●试题一

阅读以下说明和流程图(如图1所示),回答问题1至问题4,将答案写在答卷的对应栏内。

【说明】

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

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

的后缀表示为

ABC*D+E*-FG+/

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

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

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

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

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

【问题1】

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

【问题2】

写出子程序A的功能,并顺序写出实现该功能的操作

【问题3】

写出子程序B的功能,并顺序写出实现该功能的操作。

【问题4】

中缀表达式

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

经该流程图处理后的输出是什么?

【流程图】

图1


正确答案:
●试题一[问题1]【答案】PRIOR(IN[i]):PRIOR(S[p])[问题2]【答案】功能:将当前符号IN[i]入栈操作:p+1->pIN[i]->S[p][问题3]【答案】功能:出栈操作:k+1->kS[p]->POLISH[k]p-1->p[问题4]【答案】AB+CD*-EF-*G/【解析】本题考查栈的使用和中序表达式与后缀表达式的互换。

第6题:

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

A.-a+b*c/d

B.-a+b*cd/e

C.-+*abc/de

D.abcd/+e*-


正确答案:D

第7题:

阅读以下说明和图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])

第8题:

算术表达式采用逆波兰式表示时不用括号,可以利用(1)进行求值。与逆波兰式ab-cd+*对应的中缀表达式是(2)。空白(1)处应选择()

A.数组

B.栈

C.队列

D.散列表


参考答案:B
逆波兰式表示方式把运算符写在运算对象的后面,不需要使用括号。由于逆波兰式表示中的各个运算是按顺序执行的,因此,它的计值很容易实现。为此,仅需从左到右依次扫视表达式中的各个符号,每遇到一个运算对象,就把它压入栈顶暂存起来;每遇到一个二元(或一元)运算符时,就取出栈顶的两个(或一个)运算对象进行相应的运算,并用运算结果去替换栈顶的这两(或一)个运算对象,然后再继续扫视余留的符号,如此等等,直到扫视完整个表达式为止。当上述过程结束时,整个表达式的值将留于栈顶。a-b+c*d对应的逆波兰式为ab-cd*+。(a-b)*c+d对应的逆波兰式为ab-c*d+。(a-b)*(c+d)对应的逆波兰式为ab-cd+*。a-b*c+d对应的逆波兰式为abc*-d+。

第9题:

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

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

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

第10题:

算术表达式采用后缀式表示时不需要使用括号,使用(请作答此空)就可以方便地进行求值。a-b* (c + d)的后缀式为 ( ) 。

A.队列
B.数组
C.栈
D.广义表

答案:C
解析:
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为 “46512037-*+”。计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中,若遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中,重复以上过程,直到后缀表达式扫描结束。表达式“a-b*(b+d)”的后缀表达式形式为“abcd + * -。

更多相关问题