资源描述
中启教育2017年最新选择题解析集锦河南中启教育培训中心2017全国计算机二级考试2017年选择题集锦解析中启教育教研室计算机二级考试选择题题库(1)算法的有穷性是指 A、算法程序的运行时间是有限的 B、算法程序所处理的数据量是有限的 C、算法程序的长度是有限的 D、算法只能被有限的用户使用答案:A解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。(2)下列叙述中正确的是 A、算法就是程序 B、设计算法时只需要考虑数据结构的设计 C、设计算法时只需要考虑结果的可靠性 D、以上三种说法都不对答案:D解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。(3)算法的空间复杂度是指 A、算法在执行过程中所需要的计算机存储空间 B、算法所处理的数据量 C、算法程序中的语句或指令条数 D、算法在执行过程中所需要的临时工作单元数答案:A解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。(4)算法的时间复杂度是指 A、算法的执行时间 B、算法所处理的数据量 C、算法程序中的语句或指令条数 D、算法在执行过程中所需要的基本运算次数答案:D解析:算法的时间复杂度,是指执行算法所需要的计算工作量。算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。(5)下列叙述中正确的是 A、算法的效率只与问题的规模有关,而与数据的存储结构无关 B、算法的时间复杂度是指执行算法所需要的计算工作量 C、数据的逻辑结构与存储结构是一一对应的 D、算法的时间复杂度与空间复杂度一定相关答案:B解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。(6)下列叙述中正确的是 A、一个算法的空间复杂度大,则其时间复杂度也必定大 B、一个算法的空间复杂度大,则其时间复杂度必定小 C、一个算法的时间复杂度大,则其空间复杂度必定小 D、算法的时间复杂度与空间复杂度没有直接关系答案:D解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。(7)数据的存储结构是指 A、存储在外存中的数据 B、数据所占的存储空间量 C、数据在计算机中的顺序存储方式 D、数据的逻辑结构在计算机中的表示答案:D解析:在对数据进行处理时,各数据元素在计算机中的存储关系,即为数据的存储结构。(8)下列描述中正确的是 A、一个逻辑数据结构只能有一种存储结构 B、数据的逻辑结构属于线性结构,存储结构属于非线性结构 C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率答案:D解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。(9)下列描述中正确的是 A、数据的逻辑结构与存储结构必定是一一对应的 B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 C、程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构 D、以上三种说法都不对答案:D解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。(10)下列叙述中正确的是 A、有一个以上根结点的数据结构不一定是非线性结构 B、只有一个根结点的数据结构不一定是线性结构 C、循环链表是非线性结构 D、双向链表是非线性结构答案:B解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。(11)下列数据结构中,属于非线性结构的是 A、循环队列 B、带链队列 C、二叉树 D、带链栈答案:C解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。(12)下列描述中正确的是 A、线性链表是线性表的链式存储结构 B、栈与队列是非线性结构 C、双向链表是非线性结构 D、只有根结点的二叉树是线性结构答案:A解析:线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一结点的指针HEAD称为头指针,当HEAD=NULL时称为空表。栈、队列和双向链表是线性结构,树是一种简单的非线性结构。在树这种数据结构中,所有数据元素的关系具有明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。(13)下面叙述中正确的是 A、线性表是线性结构 B、栈与队列是非线性结构 C、线性链表是非线性结构 D、二叉树是线性结构答案:A解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。(14)下列关于栈的叙述正确的是 A、栈按“先进先出”组织数据 B、栈按“先进后出”组织数据 C、只能在栈底插入数据 D、不能删除数据答案:B解析:栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。(15)支持子程序调用的数据结构是 A、栈 B、树 C、队列 D、二叉树答案:A解析:栈是一种限定在一端进行插入与删除的线性表。在主函数调用子函数时,要首先保存主函数当前的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数时的位置,主函数再接着往下执行,这种过程符合栈的特点。所以一般采用栈式存储方式。(16)下列数据结构中,能够按照“先进后出”原则存取数据的是 A、循环队列 B、栈 C、队列 D、二叉树答案:B解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。(17)下列关于栈叙述正确的是 A、栈顶元素能最先被删除 B、栈顶元素最后才能被删除 C、栈底元素永远不能被删除 D、以上三种说法都不对答案:A解析:栈是先进后出的线性表,栈顶的元素最先被删除,栈底的元素最后被删除。(18)下列关于栈的叙述中,正确的是 A、栈底元素一定是最后入栈的元素 B、栈顶元素一定是最先入栈的元素 C、栈操作遵循先进后出的原则 D、以上三种说法都不对答案:C解析:栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出”的规则操作元素。(19)下列叙述中正确的是 A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D、上述三种说法都不对答案:C解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则。(20)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是 A、12345ABCDE B、EDCBA54321 C、ABCDE12345 D、54321EDCBA答案:B解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。(21)一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是 A、1,2,3,A,B,C B、C,B,A,1,2,3 C、C,B,A,3,2,1 D、1,2,3,C,B,A答案:C解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是CBA321。(22)下列关于栈的描述中错误的是 A、栈是先进后出的线性表 B、栈只能顺序存储 C、栈具有记忆作用 D、对栈的插入与删除操作中,不需要改变栈底指针答案:B解析:栈是限定在一端进行插入与删除的线性表。栈顶(top):插入数据(即入栈)的一端;栈底(bottom):不能入栈也不能出栈的一端。栈存储数据的原则:“先进后出”或“后进先出”。栈的特性是具有记忆作用。(23)按照“后进先出”原则组织数据的数据结构是 A、队列 B、栈 C、双向链表 D、二叉树答案:B解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照“后进先出”(Last In First Out,简称LIFO)或“先进后出”(First In Last Out,简称FILO)的原则组织数据的。因此,栈也称为“后进先出表”或“先进后出”表。(24)下列对队列的描述中正确的是 A、队列属于非线性表 B、队列按“先进后出”原则组织数据 C、队列在队尾删除数据 D、队列按“先进先出”原则组织数据答案:D解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾;允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。(25)下列叙述中正确的是 A、栈是一种先进先出的线性表 B、队列是一种后进先出的线性表 C、栈与队列都是非线性结构 D、以上三种说法都不对答案:D解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。(26)下列叙述中正确的是 A、栈是“先进先出”的线性表 B、队列是“先进后出”的线性表 C、循环队列是非线性结构 D、D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构答案:D解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。(27)下列关于栈的描述中正确的是 A、在栈中只能插入元素而不能删除元素 B、在栈中只能删除元素而不能插入元素 C、栈是特殊的线性表,只能在一端插入或删除元素 D、栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素答案:C解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。(28)下列叙述中正确的是 A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D、循环队列中元素的个数是由队头指针和队尾指针共同决定答案:D解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。(29)对于循环队列,下列叙述中正确的是 A、队头指针是固定不变的 B、队头指针一定大于队尾指针 C、队头指针一定小于队尾指针 D、队头指针可以大于队尾指针,也可以小于队尾指针答案:D解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。(30)下列叙述中正确的是 A、循环队列是队列的一种链式存储结构 B、循环队列是队列的一种顺序存储结构 C、循环队列是非线性结构 D、循环队列是一种逻辑结构答案:B解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。(31)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A、15 B、16 C、20 D、0或35答案:D解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0;第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。(32)在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则循环队列中的元素个数为 A、2 B、3 C、4 D、5答案:B解析:循环队列中,rear表示尾指针,front表示头指针,当有元素入队时,rear=rear+1,而元素出队的时候,front=front+1,当rear值大于front值时,队列中的元素个数为rear-front,当rear的值小于front时,列队中的元素个数为rear-front+m(m表示队列的容量)。(33)下列叙述中正确的是 A、栈是一种先进先出的线性表 B、队列是一种后进先出的线性表 C、栈与队列都是非线性结构 D、栈与队列都是线性结构答案:D解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。(34)下列叙述中正确的是 A、栈是“先进先出”的线性表 B、队列是“先进后出”的线性表 C、循环队列是非线性结构 D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构答案:D解析:栈是“先进后出”,队列“是先进先出”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。(35)下列与队列结构有关联的是 A、函数的递归调用 B、数组元素的引用 C、多重循环的执行 D、先到先服务的作业调度答案:D解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。(36)下列叙述中正确的是 A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B、循环队列中的元素个数随队头指针的变化而动态变化 C、循环队列中的元素个数随队尾指针的变化而动态变化 D、循环队列中的元素个数不会变化答案:A解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。(37)下列关于线性链表的叙述中,正确的是 A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C、进行插入与删除时,不需要移动表中的元素 D、以上都不正确答案:C解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。(38)下列叙述中正确的是 A、线性表链式存储结构的存储空间一般要少于顺序存储结构 B、线性表链式存储结构与顺序存储结构的存储空间都是连续的 C、线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 D、以上都不正确答案:C解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。(39)下列叙述中正确的是 A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D、以上都不正确答案:B解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。(40)下列叙述中正确的是 A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D、上述三种说法都不对答案:B解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。(41)下列对于线性链表的描述中正确的是 A、存储空间不一定连续,且各元素的存储顺序是任意的 B、存储空间不一定连续,且前件元素一定存储在后件元素的前面 C、存储空间必须连续,且前件元素一定存储在后件元素的前面 D、存储空间必须连续,且各元素的存储顺序是任意的答案:A解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。(42)下列叙述中正确的是 A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C、顺序存储结构能存储有序表,链式存储结构不能存储有序表 D、链式存储结构比顺序存储结构节省存储空间答案:A解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。(43)下列链表中,其逻辑结构属于非线性结构的是 A、二叉链表 B、循环链表 C、双向链表 D、带链的栈答案:A解析:二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。(44)下列叙述中正确的是 A、有一个以上根结点的数据结构不一定是非线性结构 B、只有一个根结点的数据结构不一定是线性结构 C、循环链表是非线性结构 D、双向链表是非线性结构答案:B解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。(45)某系统总体结构图如下图所示:该系统总体结构图的深度是 A、7 B、6 C、3 D、2答案:C解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。(46)下列关于二叉树的叙述中,正确的是 A、叶子结点总是比度为2的结点少一个 B、叶子结点总是比度为2的结点多一个 C、叶子结点数是度为2的结点数的两倍 D、度为2的结点数是度为1的结点数的两倍答案:B解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个。(47)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为 A、n+1 B、n-1 C、2n D、n/2答案:A解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树的叶子结点数等于n+1。(48)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A、10 B、8 C、6 D、4答案:C解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。(49)一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为 A、16 B、10 C、6 D、4答案:A解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数-叶子节点数-度为2的节点数=25-5-4=16。(50)一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为 A、219 B、229 C、230 D、231答案:B解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。(51)一棵二叉树中共有70个叶子结点与80个度为的结点,则该二叉树中的总结点数为 A、219 B、221 C、229 D、231答案:A解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2= n0-1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2 的结点数=70+80+69=219。(52)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层) A、3 B、4 C、6 D、7答案:D解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。(53)某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层) A、3 B、6 C、8 D、12答案:D解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。(54)设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为 A、8 B、7 C、6 D、5答案:B解析:深度为m二叉树其总结点数为2m-1=24-1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15-4-2-1-1=7。(55)设一棵完全二叉树共有700个结点,则此二叉树中的叶子结点数为 A、85 B、120 C、250 D、350答案:D解析: 具有n个结点的完全二叉树的深度为long2n+1,计算出该完全二叉树的深度为10。 设度为0的结点(即叶子结点)为n0,度为1的结点为n1,度为2的结点为n2,总结点数为n,深度为k。n=n1+n2+n0,由于n0=n2+1则n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉树中度为1的结点数只有两种可能:0或1。 假设度为1的结点数为0即满二叉树,根据满二叉树的定义,其2m-1个结点,根据以上计算所得的深度10来计算,应有210-1=1024-1=1023个结点,显然与题目中700个结点不符。因此,度为1的结点数必然为1。故n=n1+2n0-1=1+2n0-1=2n0,则n0=n/2=700/2=350。(56)在深度为7的满二叉树中,叶子结点的个数为 A、32 B、31 C、64 D、63答案:C解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-1=64个叶子结点。全部结点共27-1=127个。(57)对下列二叉树进行前序遍历的结果是 A、DYBEAFCZX B、YDEBFZXCA C、ABDYECFXZ D、ABCDEFXYZ答案:C解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:访问根结点;前序遍历左子树;前序遍历右子树。可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是ABDYECFXZ。(58)对如下二叉树进行后序遍历的结果为 A、ABCDEF B、DBEAFC C、ABDECF D、DEBFCA答案:D解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。(59)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为 A、log2n B、n/2 C、n D、n+1答案:C解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。(60)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 A、63 B、64 C、6 D、7答案:B解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。(61)下列叙述中正确的是 A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n B、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2) C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n) D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)答案:A解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:线性表为无序表;表采用链式存储结构。二分法查找只适用于顺序存储的有序表,并不适用于线性链表。(62)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 A、O(n) B、O(n2) C、O(log2n) D、O(nlog2n)答案:C解析:对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次,而顺序查找需要比较n次。(63)下列数据结构中,能用二分法进行查找的是 A、顺序存储的有序线性表 B、线性链表 C、二叉链表 D、有序线性链表答案:A解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。(64)冒泡排序在最坏情况下的比较次数是 A、n(n+1)/2 B、nlog2n C、n(n-1)/2 D、n/2答案:C解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过 n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。(65)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 A、9 B、10 C、45 D、90答案:C解析:线性表的长度为n,最坏情况下冒泡排序需要比较的次数为n(n-1)/2。(66)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 A、冒泡排序为n/2 B、冒泡排序为n C、快速排序为n D、快速排序为n(n-1)/2答案:D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。(67)对长度为n的线性表作快速排序,在最坏情况下,比较次数为 A、n B、n-1 C、n(n-1) D、n(n-1)/2答案:D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。(68)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n1)/2的排序方法是 A、快速排序 B、冒泡排序 C、直接插入排序 D、堆排序答案:D解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。(69)下列排序方法中,最坏情况下比较次数最少的是 A、冒泡排序 B、简单选择排序 C、直接插入排序 D、堆排序答案:D解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数为:n(n-1)/2。而堆排序法在最坏的情况下需要比较的次数为O(nlog2n)。其中堆排序的比较次数最少。(70)下列叙述中正确的是 A、程序执行的效率与数据的存储结构密切相关 B、程序执行的效率只取决于程序的控制结构 C、程序执行的效率只取决于所处理的数据量 D、以上都不正确答案:A解析:影响程序执行效率的因素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别。其中,链式存储结构的效率要高一些。(71)下列描述中,不符合良好程序设计风格要求的是 A、程序的效率第一,清晰第二 B、程序的可读性好 C、程序中要有必要的注释 D、输入数据前要有提示信息答案:A解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。(72)结构化程序所要求的基本结构不包括 A、顺序结构 B、GOTO跳转 C、选择(分支)结构 D、重复(循环)结构答案:B解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。(73)下列选项中不属于结构化程序设计原则的是 A、可封装 B、自顶向下 C、模块化 D、逐步求精答案:A解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。(74)结构化程序设计的基本原则不包括 A、多元性 B、自顶向下 C、模块化 D、逐步求精答案:A解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。(75)下列选项中不属于结构化程序设计方法的是 A、自顶向下 B、逐步求精 C、模块化 D、可复用答案:D解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用goto语句。自顶向下是指程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一步分解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法,不属于结构化程序设计方法。(76)结构化程序设计中,下面对goto语句使用描述正确的是 A、禁止使用goto语句 B、使用goto语句程序效率高 C、应避免滥用goto语句 D、goto语句确实一无是处答案:C解析:滥用goto语句确实有害,应尽量避免;完全避免使用goto语句并非是明智的方法,有些地方使用goto语句会使程序流程更清楚、效率更高;争论的焦点不应该放在是否取消goto语句,而应该放在用在什么程序结构上。(77)下列选项中不符合良好程序设计风格的是 A、源程序要文档化 B、数据说明的次序要规范化 C、避免滥用goto语句 D、模块设计要保证高耦合、高内聚答案:D解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一、效率第二”的论点已成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素:源程序文档化,包括下列三个方面:A)符号的命名应具有一定的含义;B)正确的注释能够帮助读者理解程序;C)视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。数据说明的方法,包括下列三个方面:A)数据说明的次序规范化;B)说明语句中变量安排有序化;C)使用注释来说明复杂数据的结构。语句的结构应该简单直接,不应该为提高效率而把语句复杂化。输入和输出方式和风格应尽可能方便用户的使用。(78)面向对象方法中,继承是指 A、一组对象所具有的相似性质 B、一个对象具有另一个对象的性质 C、各对象之间的共同性质 D、类之间共享属性和操作的机制答案:D解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。(79)下列选项中属于面向对象设计方法主要特征的是 A、继承 B、自顶向下 C、模块化 D、逐步求精答案:A解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用goto语句。(80)在面向对象方法中,不属于“对象”基本特点的是 A、一致性 B、分类性 C、多态性 D、标识唯一性答案:A解析:对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。(81)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是 A、-369 B、369 C、0.369 D、整数集合1,2,3,4,5答案:B解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A)和选项C),选项D)是整数集合,所以也排除。(82)下面对对象概念描述正确的是 A、对象间的通信靠消息传递 B、对象是名字和方法的封装体 C、任何对象必须有继承性 D、对象的多态性是指一个对象有多个操作答案:A解析:对象是面向对象方法中最基本的概念。操作描述了对象执行的功能,通过消息传递,还可以为其他对象使用。操作过程是被封装在对象中,用户看不到,称之为对象的封装性。对象的多态性是指同一个操作可以是不同对象的行为。不是所有的对象都必须有继承性。(83)在面向对象方法中,实现信息隐蔽是依靠 A、对象的继承 B、对象的多态 C、对象的封装 D、对象的分类答案:C解析:对象的封装性是指从外部看只能看到对象的外部特征,即只需知道数据的取值范围和可以对该数据施加的操作,而不需要知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。(84)下列选项中不属于面向对象程序设计特征的是 A、继承性 B、多态性 C、类比性 D、封装性答案:C解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。(85)构成计算机软件的是 A、源代码 B、程序和数据 C、程序和文档 D、程序、数据及相关文档答案:D解析:软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。(86)软件是指 A、程序 B、程序和文档 C、算法加数据结构 D、程序、数据与相关文档的完整集合答案:D解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据与相关文档的完整集合。软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。(87)下列描述中正确的是 A、程序就是软件 B、软件开发不受计算机系统的限制 C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合答案:D解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:软件是一种逻辑实体,而不是物理实体,具有抽象性。软件的生产与硬件不同,它没有明显的制作过程。软件在运行、使用期间不存在磨损、老化问题。软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。软件复杂性高,成本昂贵。软件的开发涉及诸多社会因素。(88)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A、学生成绩管理系统 B、C语言编译程序 C、UNIX操作系统 D、数据库管理系统答案:A解析:学生成绩管理系统为应用软件。(89)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A、编译程序 B、操作系统 C、教务管理系统 D、汇编程序答案:C解析:编译程序和汇编程序属于支撑软件,操作系统属于系统软件,而教务管理系统属于应用软件。(90)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是 A、编辑软件 B、操作系统 C、教务管理系统 D、浏览器答案:B解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的工具软件。(91)下面描述中,不属于软件危机表现的是 A、软件过程不规范 B、软件开发生产率低 C、软件质量难以控制 D、软件成本不断提高答案:A解析:软件危机主要表现在以下6个方面: 软件需求的增长得不到满足; 软件开发成本和进度无法控制; 软件质量难以保证; 软件不可维护或维护程度非常低; 软件的成本不断提高; 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。(92)下列关于软件工程的描述中正确的是 A、软件工程只是解决软件项目的管理问题 B、软件工程主要解决软件产品的生产率问题 C、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D、软件工程只是解决软件开发中的技术问题答案:C解析:软件工程是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程主要思想是强调在软件开发过程中需要应用工程化原则。(93)下面不属于软件工程的3个要素是 A、工具 B、过程 C、方法 D、环境答案:D解析:软件工程的3个要素是工具、过程和方法。(94)下面不属于软件工程过程的4种基本活动 A、软件规格说明 B、软件开发 C、软件演进 D、软件测试答案:D解析:软件工程过程的4种基本活动是:软件规格说明、软件开发、软件确认、软件演进。(95)软件生命周期是指 A、软件产品从提出、实现、使用维护到停止使用退役的过程 B、软件从需求分析、设计、实现到测试完成的过程 C、软件的开发过程 D、软件的运行维护过程答案:A解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。(96)软件生命周期中的活动不包括 A、市场调研 B、需求分析 C、软件测试 D、软件维护答案:A解析:软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。(97)软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是 A、测试 B、设计 C、可行性研究 D、实现答案:C解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。(98)下列选项中不属于软件生命周期开发阶段任务的是 A、软件测试 B、概要设计 C、软件维护 D、详细设计答案:C解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。开发阶段包括概要设计、详细设计、实现和测试4个阶段。软件维护属于维护阶段。(99)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于 A、定义阶段 B、开发阶段 C、维护阶段 D、上述三个阶段答案:B解析:本题考查软件生命周期的相关概念。通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。还可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。(100)下列描述中正确的是 A、软件交付使用后还需要再进行维护 B、软件工具交付使用就不需要再进行维护 C、软件交付使用后其生命周期就结束 D、软件维护是指修复程序中被破坏的指令答案:A解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。(101)下面不属于软件设计原则的是 A、抽象 B、模块化 C、自底向上 D、信息隐藏答案:C解析:软件设计的基本原则包括
展开阅读全文