试题 百分网手机站

全国计算机二级考试Java模拟试题(一)答案及解析

2015-04-16 16:03:37 620 625

  一、选择题

  1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。

  2.C。【解析】数据结构是相互之间存在一种或多种特定关系的数据元素的集合。”关系”描述的是数据元素之间的逻辑关系,因此又称数据的逻辑结构。数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐个元素查找,因此查找的时间相对更长。

  3.B。【解析】二叉树的遍历有3种:前序、中序和后序。后序遍历首先遍历左子树或左子结点,然后遍历右子树或右子结点,最后访问根结点;中序遍历首先遍历左子树或左子结点,然后访问根结点,最后遍历右子树或右子结点;后序遍历首先访问根结点,然后遍历左子树或左子结点,最后遍历右子树或右子结点。本题根据前序遍历和中序遍历的

  结果可以得出二叉树的结构,然后再对其进行后序遍历,因此答案为选项B。

  4.A。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。

  5.B。【解析】程序的三种基本控制结构包括:顺序、选择和重复(循环),这三种结构就足以表达出各种其他形式的结构。

  6.C。【解析】在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。

  7.B。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。

  8.B。【解析】在数据库系统中,需要对数据进行集中、统一的管理,以达到被多个应用程序共享的目标。

  9.D。【解析】物理设计阶段主要解决选择文件存储结构和确定文件存取的方法的问题,包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。

  10.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。因此相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。

  11.A。【解析】分块查找是将表分成若干块,分块的原则是数据元素的关键字在块与块之间是有序的,而块内元素的关键字是无序的。分块法可以适应动态变化的要求。其他三种是在顺序存储的一组记录内进行查找的。

  12.B。【解析】顺序结构逻辑上相邻的结点物理上也是相邻的。因此,其存储密度大,存储空间利用率高,但插入、删除运算操作不方便,需移动大量的结点。

  13.C。【解析】直接插入排序的基本算法是:当插入第i(i>一1)个对象时,前面的V[o],V[1],…,V[i一1]已经排好序,这时,用V[i]的关键码与V[i一1],[i一2]…的关键码顺序进行比较,找到插入位置即将vEi]插入,原来位置上的对象则向后移。由此可知,直接插入排序法的关键码比较次数与对象的初始排列有关。在本题中,序列已经排好序,所以其i的取值达到了最大,也就是序列中元素的个数,其实根本无需比较和交换,所以这种方法是最佳的。

  14.B。【解析】完全二叉树中除最下面一层外,各层都被结点充满了,每一层结点个数恰是上一层结点个数的2倍。因此,从一个结点的编号就可推知它的双亲及左、右子树结点的编号。当i≤n/2时,编号为i的结点的左子树的编号是2i,否则结点i没有左子树。当i≤(n-1)/2时,编号为i的结点的右子树的编号是2i+1,否则结点i没有右子树。当i≠1时,编号为i的结点的双亲是结点i/2。

  15.C。【解析】其带权外部路径长度为:2×16+2×21+2×30+3×10+3×12=200。

  16.B。【解析】本题考查JDK实用工具的使用。选项A错误,java.exe是Java语言解释器,直接从类文件执行Java应用程序字节代码,可接受class文件并启动Java虚拟机执 行;选项B正确,javac.exe是Java语言编译器,将Java源代码转换成字节码;选项C错误,javadoc.exe是根据Java源代码及说明语句生成HTML,文档;选项D错误,javap.exe是反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

  17.D。【解析】本题考查Java语言的基本特点。选项A正确,Java最大的特点之一是跨平台、面向对象;选项B正确,解释同A;选项C正确,多线程是Java的一个主要特性,它使可执行程序具有同时保持几个线程执行的能力;选项D错误,Java不支持宏定义。

  18.B。【解析】Java是一个完全面向对象的语言,利用类把对象的属性和方法封装在一起,只对外界提供有限的接口。

  19.B。【解析】本题考查File类的基本知识。File类是通过文件名列表来描述一个文件对象的属性,通过File类提供的方法,可以获得文件的名称、长度、所有路径等信息,还可以改变文件的名称、删除文件等。

  20.D。【解析】Java语言的标识符是以字母、下画线和符号$为首字符的字符串,首字符后面可以跟字母、下画线、$和数字,且标识符是区分大小写的,标识符的字符数没有限制。A选项中含有非法符号”/”,故是错误的:B选项是以符号”+”开始的字符串也不符合规则;同理,C选项也是错误的。

  21.D。【解析】在Java中,常量null、false、true都是小写的。所以A、B和C选项中的字符串都不是Java的保留字。

  22.B。【解析】Java语言中八进制整数为整型常量中的一种,以0开始,后加数字0~7组成。故只有B选项0144符合要求。

  23.B。【解析】由于5和2都是int型,所以语句System.out.println(5/2)的输出为2。由于操作数3.0为double型(Java语言中浮点数的默认值为double型),所以结果为double型,即1.0。

  24.D。【解析】Java语言中,char类型被封装在java.lang.Character中。

  25.A。【解析】本题考查对位运算符和逻辑运算符的理解。位运算符”&”和”|¨用于按位将两个数进行与和或的操作,两个操作数可以是整型、字节型、长整型和短整型,但不能是浮点型数据。逻辑运算符&&只能对两个布尔型的数据进行运算,返回的结果也是布尔型的。

  26.D。【解析】本题考查内部类的概念。在一个类的内部嵌套定义的类称为内部类,它的类名在定义它的类或程序段中或在表达式内部可以匿名使用,外部使用它时必须给出类的全名,所以选项D说法正确;内部类的类名不允许与它包含的类名相同,选项A说法错误;内部类可以使用它所在类的静态成员变量和实例成员变量,也可以使用它所在类的方法中的局部变量,选项B说法错误;内部类不仅可以用abstract修饰定义为抽象类,也可用private或protected定义,选项C说法错误。同时还要注意,内部类可作为其他类的成员,而且可访问它所在类的成员,除static内部类外,不能在类中声明static成员。

  27.D。【解析】本题考查字符串数组变量的声明。选项A和选项B的效果是一样的,都是用来定义一个字符串数组,但没有指明数组个数,不满足题目要求;选项C是一个二维的字符数组,在C语言中,一个二维的字符数组就可以表示一个一维的字符串数组,而在Java中,字符char是基本类型,字符串String则是以对象的形式来表示的;选项D正确,它定义了一个含有l0个元素的字符串数组,如果没有给字符串数组赋值,则默认为null。

  28.C。【解析】本题考查在Java中接口的实现。接口是一种只含有抽象方法或变量的特殊的抽象类。在类的声明中用implements子句来表示一个类使用某个接口。选项A在方法内没有参数值;选项B只是定义了一个类,并没有实现与A的接口;选项C中使用关键字implements实现了该接口,这里接口中的方法并没有使用abstract修饰,所以不是抽象的;选项D中extends是用来继承父类的,而A并不是一个类,不能用extends.

  29.D。【解析】本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main()函数进入程序,所有调用add()方法的过程将始终和Extension类的add()方法动态绑定。初始值:i=0;创建实例newExtension();先调用父类的默认构造函数Base(),并在父类的默认构造函数中执行add(1),i=O+1×2,所以i=2,再调用子类的默认构造函数Extension(),子类的默认构造函数中执行add

  (2),i-2+2×2,所以i=6;执行add(8);i=6+8×2,因此,最终i=22,正确答案为选项D。

  30.A。【解析】本题考查事件探听器的概念。每类事件都有对应的事件探听器,探听器是接口,根据动作来定义方法。AWT的构件类中提供注册和注销探听器的方法。注册探听器:public void add(listener);注销探听器:public void remove(listener)。由此可见,选项A正确。

  31.B。【解析】本题考查Java语言中字节类型的概念。在Java语言中,byte是字节类型,用1字节表示;boolean是布尔类型,用true和false表示,它们的表示方法并不一样,

  也不提供它们之间的转换,选项A错误。Java内部用整数来表示char,通常可以在方法调用和其他语句中互换使用char和int,选项B正确。char用2字节表示,byte字节类型

  用1字节表示,Java内部也不允许互换使用它们,选项C错误。String在Java语言中是一个类,它提供对字符串的一系列操作,而char是Java语言中的一个基本类型,它不是一个类,两者有本质的区别,故而它们是不能互换使用的,选项D错误。需要注意的是,在Java语言中提供的类都是以大写字母开头,基本类型都用小写字母表示。

  32.D。【解析】本题考查Applet中HTML标记方法。 URLgetDocumentBase()返回包含Applet的HTML文件的 URL,而不是返回Applet主类的URL,选项A错误。 URLgetC0deBase()返回Applet主类的URL,而环是返回 包含Applet的HTML文件的URL,选项B错误。String

  getParameter(stringname)返回定义在HTML文件的指定参数,如果指定参数在HTML中无说明,该方法将返回"null",而不是"0",因此选项C错误。