81. 利用逐点插入建立序列(52,43,73,88,76,18,38,61,45,39)对应的二叉排序树之后,查找元素61要进行 (86) 次元素间的比较。
(86) A.3
B.4
C.6
D.8
参考答案:(86)A。
解析:利用逐点插入建立二叉排序树是从空树开始,通过查找将每个节点作为一个叶子插入。建立序列(50,72,43,85,75,20,35,45,65,30)的二叉排序树如图8所示。
根据图8所示的二叉排序树可知,查找元素61要进行3次元素间的比较。
82. 为了在状态空间树中 (87) ,可以利用LC-检索(Least Cost Search)快速找到一个答案节点。
(87) A.进行遍历
B.找出最优的答案节点
C.找出任一个答案节点
D.找出所有的答案节点
参考答案:(87)B。
解析:在状态空间树中,定义 为节点的成本函数,g(X)为从节点向X到达一个答案节点所需做的附加工作的估计函数,h(X)为从根节点到节点X的成本,则用成本估计函数 选择下一个E-节点的检索策略总是选取 值最小的活节点作为下一个E-节点,因此这种检索策略称为最小成本检索,简称LC-检索(Least Cost Search)。
在状态空间树中找出最优的答案节点,就可以利用LC-检索快速找到一个答案节点。根据定义在进行LC-检索时,为避免算法过分偏向于做纵深检查,应该在成本估计函数 中考虑根节点到当前节点的成本(距离)。
83. 图9中不存在 (88) 。
图9 |
(88) A.欧拉路径
B.欧拉回路
C.欧密尔顿路径
D.哈密尔顿回路
参考答案:(88)B。
解析:通过连通图G中每条边一次且仅一次,遍历图中所有节点的回路称为欧拉回路。
通过连通图G中每条边一次且仅一次,遍历图中所有节点的开路称为欧拉开路(欧拉路径)。
若G是连通图,则存在欧拉回路的充要条件是所有节点的度数均为偶数度;存在欧拉开路的充要条件是当且仅当G中有且只有两个节点的度数为奇数度。
由于图3-6中有两个节点的度数是奇数度,因此图3-6中只存在欧拉路径,但不符合欧拉回路的充要条件,即不存在欧拉回路。
通过连通图G中每个节点一次且仅一次的回路称为欧密尔顿回路。
通过连通图G中每个节点一次且仅一次的开路称为欧密尔顿开路(哈密尔顿路径)。
84. 在最好和最坏情况下的时间复杂度均为O(nlogn),但不稳定的排序算法是 (89) 。
(89) A.堆排序
B.快速排序
C.归并排序
D.基数排序
参考答案:(89)A。
解析:堆排序在最好和最坏情况下的时间复杂度均为O(nlogn)但不稳定。
快速排序最好和最坏情况下的时间复杂度分别为O(n2)和O(nlogn)且不稳定。
归并排序是在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法。
基数排序在最好和最坏情况下的时间复杂度均为O(d(n+rd))。
85. 利用动态规划方法求解每对节点之间的最短路径问题(all pairs shortest path problem)时,设有向图G=
(90) A.Dk(I,j)=Dk-1(I,j)+C(I,j)
B.Dk(I,j)=Dk-1(I,k)+Dk-1(k,j)
C.Dk(I,j)=min{Dk-1(I,j),Dk-1(I,j)+C(I,j)}
D.Dk(I,j)=min{Dk-1(I,j),Dk-1(I,k)+Dk-1(k,j)}
参考答案:(90)D。
解析:设Pk(I,j)表示从i到j并且不经过编号比k还大的节点的最短路径,那么Pk(I,j)有以下两种可能。
① Pk(I,j)经过编号为k的节点,此时Pk(I,j)可以分为从i到k和从k至j的两段,易知Pk(I,j)的长度为Dk-1(I,k)+Dk-1(k,j)。
② Pk(I,j)不经过编号为k的节点,此时Pk(I,j)的长度为Dk-1(I,j)。
因此,求解该问题的递推关系式为:Dk(I,j)=min{Dk-1(I,j),Dk-1(I,k)+Dk-1(k,j)}。
86. 通常, (91) 应用于保护被中断程序现场等场合。
(91) A.队列
B.堆栈
C.双链表
D.数组
参考答案:(91)B。
解析:在计算机中,堆栈被定义为一段特殊的内存区。其存取数据的特点是先进后出(FILO)。这一特点使它最常用于保护被中断程序的现场等应用场合。
87.若有说明语句“inta[10],*p=a;”,对数组元素的正确引用是(92)
(92) A. a[p]
B. P[a]
C. *(P+2)
D. P+2
参考答案:(91)C。
解析:在C语言中,约定数组名单独出现在表达式中时,它表示数组首元素的指针。有inta[10],则a可以作为&a[0]使用。另有整型指针变量p,代码p=a实现p指向数组a的首元素。则表达式*(p+2)是引用数组元素a[2]。表达式a[p]和p[a]都是不正确的,下标必须是整型表达式,不可以是指针表达式。表达式p+2是指针表达式,它的值是&p[2]。所以只有表达式*(p+2)引用数组a的元素a[2]。所以解答是C。
88.下面各语句中,能正确进行赋字符串操作的语句是(93)
(93) A. chars[5]={"ABCDE"};
B. chars[5]={’A’,’B’,’C’,’D’,’E’};
C. char*s;s="ABCDE";
D. char*s;scanf("%",s);
参考答案:(93)C。
解析:字符串最终存储于字符数组中,存储字符串的字符数组可以是程序主动引入的(定义或动态分配),也可以是字符串常量,由系统分配。其中字符数组用字符串初始化就是字符串存储于由程序引入的字符数组的例子。给字符指针赋字符串则是系统自动分配字符率存储空间的例子。给字符指针赋字符串并不是将一个长长的字符串存于字符指针变量中,而是将字符串常量存储于常量区,并将存储这个字符串的首字节地址赋给指针变量,让指针变量指向字符率常量的首字符。对于以字符串作为字符数组初值的情况,要求字符数组足够的大,能存得下字符串常量。这里有一个特别的规定,若数组的大小少于存储字符串有效字符的字节个数,系统将报告错误;当字符数组的大小只能存储字符串的有效字符,而不能存储字符率结束标记符时,则存储于字符数组中的内容是字符序列,因没有存储字符率结束标记符,存储的内容就不是字符串。如代码chara[5]="ABCDE"。
另外,给字符数组元素逐一赋字符初值,并在字符初值中没有字符串结束标记符,则存于字符数组中的内容也不是字符率。如代码chars[5]={’A’,’B’,’C’,’D’,’E’}。特别要注意当字符指针还未指向某个字符数组的元素时,不可以通过字符指针输入字符串。如代码char*s;scanf("%s",s)。若写成char*str;scanf("%s",&str)更是错误的了。
由于C语言规定数组不能相互赋值,所以只能将字符串常量赋给某字符指针。如代码char*s;s="ABCDE"是正确的。实际上,字符率"ABCDE"被存储于常量区中,向指针变量赋的是字符指针,让s指向其中的字符’A’。所以解答是C。
89.若有以下定义,则不能表示a数组元素的表达式是(94)
inta[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
(94)A.*p
B. a[10]
C. *a
D. a[p-a]
参考答案:(94)B。
解析:上述代码定义了有10个元素的整型数组。,和定义指针变量p,并让p指向数组元素a[0]。所以代码*p是引用a[0]。由于数组a只有10个元素,最后一个元素是a[9],表达式a[10]是错误的。数组名a可以作为a的首元素的指针,表达式*a就是a[0],是对数组a的首元素a[0]的引用。指针p的值是a,表达式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是B。
90.若有以下定义,则值为3的表达式是(95)
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
(95)A. p+=2,*(p++)
B. p+=2,*++p
C. p+=3,*p++
D. p+=2,++*p
参考答案:(95)A。
解析:数组a有10个元素,分别有值1至10,指针变量p指向a[0],A逗号表达式p+=2,*(P++),先是P+=2使P指向a[2],接着是*(P++),以当时P所指变量a[2]取内容3为表达式的值,同时使p指向a[3]。B返号表达式p+=2,*++p,先是p+=2使p指向a[2],以后是*++p,又使p增1,让它指向a[3],并取指针p所指变量a[3]的内容4作为表达式的值。C逗号表达式p+=3,*p++,先是p+=3使p指向a[3],以后是*p++,表达式的值是a[3]为4,而使p指向a[4]。D逗号表达式p+=2,++*p,先是p+=2,使p指向a[2],以后是++*p,因当时的*p就是a[2],++a[2]使a[2]增1,变成4,并以4为表达式的值。所以只有p+=2,*(p++)的值是3。所以解答是A。
91. 若二叉树的先序遍历序列为ABCEDF,后序遍历序列为CEBFDA,则其中序遍历序列为 (96) 。
(96) A.CEFBDA B.CBEAFD C.CEBAFD D.CBEDFA
参考答案:(96)B。
解析:对于二叉树遍历序列有一个性质,包含有中序遍历序列的任意两个遍历序列可以唯一确定该二叉树。那么由题中的先序遍历序列和后序遍历序列就可以唯一确定此二叉树,如图10所示,再对其进行中序遍历,中序遍历序列为CBEAFD。
图10 |
92. 在C++中,使用静态成员解决同一个类的不同对象之间的数据共享问题。以下关于一个类的静态成员的叙述中,说法错误的是 (97) 。
(97) A.静态成员变量可被该类的所有方法访问
B.该类的对象共享其静态成员变量的值
C.该类的静态数据成员变量的值不可修改
D.该类的静态方法只能访问该类的静态成员变量
参考答案:(97)D。
解析:静态成员作为类的一种成员,它被类的所有对象共享,而不是属于某个对象的。静态成员可分为静态成员变量和静态方法。
静态成员变量的值可以被更新。只要对静态成员变量的值更新一次,所有对象的该静态成员变量值都会被更新。
静态成员函数可以直接访问静态成员,但不能直接访问非静态成员。
选项D“该类的静态方法只能访问该类的静态成员变量”的说法不够准确。
93. 在面向对象软件开发过程中,采用设计模式 (98) 。
(98) A.以减少设计过程创建的类的个数
B.以保证程序的运行速度达到最优值
C.以复用成功的设计和体系结构
D.以允许在非面向对象程序设计语言中使用面向对象的概念
参考答案:(98)C。
解析:设计模式是对被用来在特定场景下,解决一般设计问题的类和相互通信的对象的描述。通常,一个设计模式有4个基本要素:模式名称、问题(模式的使用场合)、解决方案和效果。
每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。设计模式使人们可以更加简单方便地复用成功的设计和体系结构;将己证实的技术表述成设计模式,也会使新系统的开发者更加容易理解其设计思路。设计模式可以帮助开发者做出有利于复用的选择,避免设计时损害系统复用性。
综合以上分析,本试题的正确答案是选项C。
94. (99) 模式的设计意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
(99) A.Observer(观察者)
B.Visitor(访问者)
C.Interpreter(解释器)
D.Adapter(适配器)
参考答案:(99)A。
解析:Observer(观察者)模式的设计意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
Visitor(访问者)模式的设计意图是表示一个作用于某对象结构中的各元素的操作。它可在不改变各元素的类的前提下定义作用于这些元素的新操作。
Interpreter(解释器)模式的设计意图是给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
Adapter(适配器)模式是一种类对象结构型模式。通过将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
95. 包(package)是UML的 (100) 。
(100) A.结构事物
B.分组事物
C.行为事物
D.注释事物
参考答案:(100)B。
解析:UML的结构事物包括①类、②接口、③协作、④用例、⑤主动类、⑥构件和⑦节点等。
包(package)是UML的分组事物。它是一种把元素组织成组的通用机制,是一个构件(component)的抽象化概念。包中可以包含类、接口、构件、节点、协作、用例、图及其他的包等元素。
UML的行为事物主要包括交互(Interaction)和状态机(state machine)。其中,交互是协作中的一个消息集合,这些消息被类元角色通过关联角色交换。当协作在运行时,受类元角色约束的对象,通过受关联角色约束的连接交换消息实例。可见,作为行为事物,交互是一组对象之间为了完成一项任务(如操作),而进行通信的一系列消息交换的行为。状态机是一个状态和转换的图,作用是描述类元实例对事件接收的响应。状态机可以附属于某个类元(类或用例),还可以附属于协作和方法。
注解(note)是UML的注释事物,它是一种附加定义,用于告知被注解对象的性质、特征和用途等。
96.以下程序的输出结果是(101)
#include
subl(chara,charb){charc;c=a;a=b;b=c;}
sub2(char*a,charb){charc;c=*a;*a=b;b=c;}
sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}
main()
{chara,b;
a=’A’;b=’B’;sub3(&a,&b);putchar(a);putchar(b);
a=’A’;b=’B’;Sub2(&a,b);putchar(a);rutchar(b);
a=’A’;b=’B’;sub1(a,b);putchar(a);putchar(b);
}
(101)A. BABBAB
B. ABBBBA
C. BABABA
D. BAABBA
参考答案:(101) A。
解析:在上述程序中,函数subl完成两形参值的交换,这个交换不影响实参变量,这是一个没有意义的函数。函数sub2将第二个形参的值置入由第一个指针形参所指的变量中,指针形参所指的变量由调用时的实参提供。函数sub3完成将两个形参所指的变量的值交换。程序调用sub3,使变量a和b的值交换输出BA;调用subZ,使变量b的值传送到a,输出BB;调用subl,变量a和b的值不改变,输出AB。所以程序输出BABBAB。正确解答是A。
97. 以下关于TCP/IP协议的叙述中,说法错误的是 (102) 。
(102) A.ICMP协议用于控制数据报传送中的差错情况
B.RIP协议根据交换的路由信息动态生成路由表
C.FTP协议在客户/服务器之间建立起两条连接
D.RARP协议根据IP地址查询对应的MAC地址
参考答案:(102)D。
解析:在TCP/IP协议族中,网络层主要有IP协议、ICMP协议、ARP协议和RARP协议等4个协议。其中,利用地址转换协议(ARP)可根据IP地址查询对应的MAC地址。而反向地址转换协议(RARP)则把MAC地址转换成对应的IP地址。
ICMP协议用于传送有关通信问题的消息,例如,数据报不能到达目标站、路由器没有足够的缓存空间或路由器向发送主机提供最短路径信息等。ICMP报文封装在IP数据报中传送,因而不保证可靠的提交。
FTP协议属于TCP/IP协议族的应用层协议,利用FTP协议进行文件传送时,在客户/服务器之间一般需要建立一条控制连接(使用TCP 21端口)和一条数据连接(使用TCP 20端口)。
98. 以下能隔离ARP病毒的网络互联设备是 (103) 。
(103) A.集线器
B.路由器
C.网桥
D.交换机
参考答案:(103)B。
解析:地址解析协议(ARP)是数据链路层协议,但同时对上层(网络层)提供服务,完成将IP地址转换成以太网的MAC地址的功能。
ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。当发出AM请求时,发送方填好发送方首部和发送方IP地址后,还要填写目标E地址。当目标机器收到这个ARP广播帧时,就会在响应报文中填上自己的48位主机地址。由此可以看出ARP广播帧最初是以IP地址的形式来寻址发送的,所以需要工作在网络层的网络设备路由器来对其进行隔离。可见路由器能完成“隔离冲突域,隔离播域”的功能。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。如果系统ARP缓存表被修改不停的通知路由器一系列错误的内网IP或者干脆伪造一个假的网关进行欺骗的话,网络就会出现通信中断现象,这就是典型的ARP病毒攻击现象。
由于路由器、三层交换机或带三层交换模块的网络设备具有“隔离冲突域,隔离广播域”的特性,因此这些网络互联设备能够隔离ARP病毒。
集线器属于物理层的网络互联设备,具有“共享冲突域,共享广播域”的特性。网桥和以太网交换机属于数据链路层的网络互联设备,具有“隔离冲突域,共享广播域”的特性。这些网络互联设备都不能完成隔离ARP病毒的功能。
99. 使用IE浏览器浏览网页时,出于安全方面的考虑,需要禁止执行Java Script,则可以在IE浏览器中设置“ (104) ”。
(104) A.禁用脚本
B.禁用cookie
C.禁用ActiveX控件
D.禁用没有标记为安全的ActiveX控件
参考答案:(104)A。
解析:使用IE浏览器浏览网页时,出于安全方面的考虑,需要禁止执行Java Script,可以在IE中禁用脚本。如果在IE中禁用ActiveX控件或者是禁用没有标记为安全的ActiveX控件,则只能起到禁用控件的功能,而禁用cookie是禁止网站放置临时存储信息的cookie,并不能够禁止执行Java Script脚本程序。
100. 以下网络地址中,属于私网地址(Private Address)的是 (105) 。
(105) A.172.15.22.5
B.118.168.22.5
C.172.31.22.5
D.192.158.22.5
参考答案:(105)C。
解析:Private Address是指私网地址,其主要的几种地址类型及其相关功能见表5。
表5 私网地址类型及其功能表
类 型 |
功 能 |
备 注 |
① 0.0.0.0 |
表示所有在本机的路由表里没有特定条目指明如何到达的主机IP和目的网络地址的集合 |
如果用户在网络设置中配置了默认网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的默认路由 |
② 255.255.255.255 |
限制广播地址,是一个不能被路由器转发的地址 |
用于指向同一广播域内的所有IP设备 |
③ 127.0.0.1 |
本机环回测试地址,主要用于测试 |
在Windows系统中,这个地址有一个别名“Localhost” |
④ 224.0.0.1 |
组播地址224.0.0.1特指所有主机;组播地址224.0.0.2特指所有路由器 |
如果用户的主机开启了IRDP(Internet路由发现协议)功能,那么用户的主机路由表中将出现这类IP地址 |
⑤ 169.254.x.x |
DHCP网段地址 |
如果用户的主机启用了DHCP功能以自动获得一个IP地址,当用户的DHCP服务器发生故障,或响应时间超出了一个系统规定的时间时,那么Windows系统会为用户分配这个网段中的某个IP地址 |
⑥ 10.x.x.x、172.16.x. x~ 172.31.x.x、192.168.x.x |
这些私有地址被用于内部局域网的IP地址分配 |
这类地址将不会出现在Internet网中。另外,一些宽带路由器常使用192.168.1.1作为其默认IP地址 |
本试题中,选项A的地址“172.15.22.5”是一个B类的公网IP地址;选项B的地址“118.168.22.5”是一个A类的公网IP地址;选项D的地址“192.158.22.5”是一个C类的公网IP地址。而选项C的地址“172.31.22.5”恰好是“172.31.0.0/24”网段的一个IP地址,因此,它是一个B类的私网IP地址。
【编辑推荐】