几道简单的free pascal选择题!

2024-12-26 17:00:04
推荐回答(4个)
回答1:

1.
a xor b的运算方法:将a,b 转化为2进制数,再进行对比,每个数位上的0或1如果相同,那么结果就取0,如果不同就取1,将得到的结果转化为原来进制的数,就是结果。
21 xor 2=
10101(即21的二进制数)
00010(即2的二进制数)
10111(即23的二进制数)
所以选C
2.
由题意可得,该车站的进出方法是‘先进后出’,就相当于一个栈。
进出顺序为,按顺序直接模拟即可
进,出,进,进,进,出,出,进,进,进,出,出
1.1进 然后1出
2.2进 3进 4进 栈变为(234)
3.按栈的原则 出的时候先出4 再出3 出栈顺序此时为‘143’
4.5进 6进 7进 栈变为(2567)
5.7出 6出 出栈顺序为‘14376’
即答案为C
3.
二叉树的中序遍历序列方法为:左中右
二叉树的后序遍历序列方法为:左右中
我们可以从后序遍历中得知中间的节点 再结合中序遍历得知左右节点
先看后序遍历GDBEHFCA的最后一个字母
再在中序遍历中找出这个字母,中序遍历由此可分为3部分,第一部分即该树的左子树,第二部分为根节点,第三部分为该树的右子树
(DGB) A (ECHF)
然后依次类推,按同样的方法继续分下去,直到找出树的全部节点
最后的树大概如下
......A
...B.....C
.D......E....F
....F.......H
再按前序遍历(即中左右)遍历该树
即为ABDGCEFH
答案为B

回答2:

第一题位运算,xor的意思就是“异或”,即两个二进制数对应每一位上如果不相同,则结果为1(真,可以理解为“真的不相同”),反之就是0(“假的不相同”)。21的二进制表示是10101,2的2进制表示是10(为了方便观察,可以写成00010,和21对齐),那么两个数异或,对应位对齐,则可以得到10111。化为10进制数就是23

第二题是一个简单的栈,动笔模拟一下就可以了……结果是C

第三题是一个二叉树遍历的问题。三种遍历的定义网上可以找得到,我就不赘述了。首先,根据后序遍历的定义,最后一个访问的结点一定是根结点,也就是A,那么根节点确定了之后来看中序遍历。中序遍历的特点就是根的左边和右边分别是它两个子树的遍历,那么可以确定A的左子树是由DGB构成的,右子树是由ECHF构成的。根据前序遍历的定义——先访问根,再访问左子树和右子树,那么也就是说左子树的所有结点一定比右子树的所有结点都线被访问。那么观察选项,只有B选项是符合要求的。
其实这里我们还可以继续把整个二叉树都按照这种方法求出来(用递归的思想),但是鉴于这是一道选择题,只用判断出根和左右子树的组成就可以得出答案,就不多麻烦了,有兴趣可以自己去试一试。

估计应该够详细了……希望对你有帮助
看我打了这么多字兄弟你还是多给点分吧……要知道百度上面你三道题还悬赏0分是基本不会有人答题的——除非是白痴级的问题。最近没什么分了,希望资助一点~

回答3:

(1).21的二进制为1011,2的二进制为00010,xor是异或就是相反的为1相同的为0
10101
xor 00010=
10111=23
(2)选C,进1,出1,进2,进3,进4,出4,出3,进5,进6,进7,出7,出6;
(3)选B,过程太多..你还是自己学吧...可以看看数据结构的书...

回答4:

1. C 运算如下:
00010101 (21)
xor 00000010 (2)
-------------
00010111 (23)
=============================
2. C 堆栈 (先进后出 后进先出)
=============================
3. B 不知道你理解前,中,后序遍历的概念没?
前序遍历又叫先根遍历,就是先访问根再访问左子树再访问右子树。
中序就是先访问左子树再访问根再是右子树。
后根就是先访问左子树然后是右子树最后是根。
简单的讲就是,你看后序遍历序列为:GDBEHFCA,最后一个是A,说明A是根。然后再去看中序遍历序列为:DGBAECHF,看到A在中间,把DGBAECHF分成DGB和ECHF两部分,好,现在单独看这两个子树,左子树DGB和右子树ECHF。
同样后序遍历序列GDBEHFCA中,找到DGB这三个字母,发现它是这样排列的,GDB,因为它是后跟遍历,所以子树DGB的根是B,这时候,你通过观察中序的DGB和后序的GDB,发现中序的右边没有东西,所以得出:子树GDB没有右支。同样的道理,发现子树ECHF的根是C,左子树只有E,右子树是HF。
像这样一步步分析
那么结论就是前序遍历是ABDGCEFH。
你最好能画个图就好理解多了。