一、选择题
1.D。解析:线性表可以为空表;第一个元素没有直接前驱,最后一个元素没有直接后继;线性表的定义中,元素的排列并没有规定大小顺序。
2.B。解析:满二叉树指除最后一层外,每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到值,在最后一层上只缺少右边的若干叶子结点的二叉树。由定义可知,满二叉树肯定是完全二叉树,而完全二叉树一般不是满二叉树。
3.C。解析:对线性表进行顺序查找时,最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。
4.D。解析:结构化程序设计的主要原则概括为自顶向下,逐步求精,模块化。
5.B。解析:需求分析是软件定义时期的最后一个阶段。可以概括为四个方面:需求获取;需求分析;编写需求规格说明书;需求评审。
6.C。解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试有3个重要特征:测试的挑剔性、完全测试的不可能性及测试的经济性。
7.C。解析:模块的独立性是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
8.C。解析:软件测试是为了尽可能多地发现程序中的错误,尤其是至今尚未发现的错误。
9.D。解析:需求分析常用工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。问题分析图(PAD)、程序流程图(PFD)、金式图(N-S)都是详细设计的常用工具,不是需求分析的工具。
10.D。解析:模块化是结构化程序设计的特点。面向对象设计方法使用现实世界的概念抽象地思考问题从而自然地解决问题。他的特点包括:分类性、封装性、模块独立性、继承和多态性等。
11.B。解析:数据元素是数据的基本单位,即数据集合中的个体。有些情况下也把数据元素称为结点、记录、表目等。一个数据元素可由一个或多个数据项组成,数据项是有独立含义的数据最小单位,其值能确定一个数据元素的数据项。
12.D。解析:栈的特性为后进先出,而栈S只能容纳4个元素。当F进栈时,说明栈中有已有B、C、D、E四个元素,所以F无法进栈。
13.D。解析:在电子邮件程序向邮件服务器中发送邮件时,使用的是简单邮件传输协议(SMTP),而在电子邮件程序从邮件服务器中读取邮件时,可以使用邮局协议(POP3)。
14.C。解析:直接选择排序第一遍扫描就可以把的关键码找出来(不必等到排序结束),而其他几种排序方法都必须等到排序完成才能找到关键码。
15.A。解析:二分法查找是一种效率较高的线性表查找方法。要进行二分法查找,则线性表结点必须是按关键码值排好序的,且线性表以顺序方式存储。
16.A。解析:Java的核心包一共有l2个,其中:java.lan9包中封装了所有编程应用的基本类;java.util包提供实用程序类和集合类,如系统特性定义和使用、日期函数类、 集合等常用工具;java.applet包为Applet提供执行需要的所有类,主要是访问Applet内容的通信类;java.rmi包提供程序远程方法调用所需的类。因此,本题的正确答案是A。
17.C。解析:Java程序中使用import关键字导入一个包中的类。在一个Java源程序中,可以有0个或多个import语句,但是必须在所有类定义之前引入标准类。因此,本题中选项C的说法是错误的。
18.B。解析:javac.exe是Java编译器,能将源程序代码编译成字节码,以.class扩展名存入Java工作目录中。它的命令格式为:javac[选项]文件名。其中[选项]包括以下几个:-g。输出文件中加行号以及局部变量信息,为调试程序时用。-o对类文件进行优化编译。-nowarn 关闭警告信息,只显示错误信息。-verbose 显示源代码文件和字节码文件的相关信息。-d<目录> 指定存放生成的类(.class)文件的位置根据上述介绍可知,在编译Java程序时,可以通过选项-d来指定生成的.class文件的位置。因此,本题的正确答案是B。
19.D。解析:WindowListener接口包含的方法是:①Window Activated(WindowEvent);②WindowOlpened(WindowEvent);③WindowClosed(WindowEvent);④WindowClosing(WindowEvent);⑤WindowDeactivated(WindowEvent);⑥WindowDeiconified(WindowEvent)⑦windowlconified(WindowEvent)。所以D选项错误。
20.A。解析:运行Java的JDK一共包含五个目录,分别是:bin目录,该目录包含Java编译器、解释器和许多工具(如服务器工具、IDL、package工具等);lib目录,该目录包含Java库文件;jre目录,该目录是Java程序运行环境的根目录,它下面包含bin子目录,包括平台所用工具和库的可执行文件以及DLL文件;demo目录,该目录包含源代码的程序示例;include目录,该目录包含Win32子目录,都是本地方法的文件。
21.A。解析:Java是新一代编程语言,具有很多特点:简单易学;利用面向对象技术;分布式计算;健壮性(鲁棒性);安全性;跨平台(即体系结构中立);可移植性;解释执行;高性能;多线程;动态性。因此,本题的正确答案是A。
22.C。解析:本题考查线程的基本控制。Thread类提供的基本线程控制方法包括:sleep()——使比其低的优先级线程运行,可以让一个线程暂停运行一段固定的时间;yield()——使具有与当前线程相同优先级的线程有运行的机会;join()——使当前线‘程暂停执行,等待调用该方法的线程结束后,再恢复执行;interrupt()——中断线程的阻塞状态,并且线程接收到InterruptException异常。根据上述介绍可知,只有yield()方法可以使当前同级线程重新获得运行机会。因此,本题的正确答案是C。
23.C。解析:do while语句和for语句是循环语句;it语句和switch语句是分支语句。而if语句称为条件语句, switch语句称为多分支语句。
24.D。解析:本题考查switch语句的用法。switch语句是多分支语句,即根据表达式的值来执行多个操作中的一个。在switch语句中,”表达式”的返回值类型必须是这几种类型
之一:int、byte、char、short。本题中,switch的表达式s是一个字符串Strin9类型的值,它不是int、byte、char、short中的任意一个。因此表达式s的类型不对,编译时出错。
25.A。解析:FileReader、BufferedReader是字符类输入流。FileInputStream是字节输入流。对象串行化时,需要使用ObjectlnputStream类中提供的方法从对象流中读取对象。所以,在程序读入字符文件时,要使用字符流FileReader或BufferedReader。但是FileReader的参数是读入的文件,而BufferedReader的参数是FileReader流的一个对象。因此,本题的正确答案是A。
26.C。解析:在java.i0包中,接口Serializable是实现对象串行化的工具。实际上,Serializable接口是一个空接口,它里面既没有定义抽象方法,也没有定义常量。Serializable接口的目的只是简单地标识一个类的对象是可以被串行化的。
27.B。解析:本题考查线程的创建。在Java中,创建线程有两种方法:①通过实现Runnable接口创建线程。Runnable接口中只定义了一个run()方法作为线程体。②通过继承Thread类创建线程,Thread类本身实现了Runnable接口。创建的新的线程不会自动运行,必须调用start()方法才能运行。本题中HolloWorld类实现了Runnable接口。
28.D。解析:Java.io包中的类可以处理不同类型的流,比如字节流、字符流、对象流、非流类等。File类就是一个重要的非流类,它是以一种系统无关的方式表示一个文件对象的属性。
29.D。解析:Java平台为了防范恶意程序的攻击,保护本地主机,对Applet作了如下安全限制:①Applet不能运行任何本地可执行程序。②禁止加载本地库或方法。③禁止读、写本地计算机的文件系统。④禁止向提供Applet之外的任何主机建立网络连接。⑤不能读取某些系统信息。⑥由一个Applet弹出的窗口外观上与一个Application弹出的窗口不同,Applet弹出的窗口中会有警告提示信息,帮助用户区分Applet窗口与可信的Application窗口。
30.B。解析:本题对StringBuffer(String str)构造方法,用str给出字符串的初始值,并分配16个字符的缓存。因此,字符串sb的初始值是”test”,并且包含l6个字符的缓存。length()方法用来获得字符串长度,不包含缓存。故程序运行结果中在”length=”后输出的值应该是字符串sb的长度,即4。
31.A。解析:本题考查Applet的基本知识。Applel类定义了小应用程序(Applet)与其运行环境之间的一个接口;JApplet是Applet类的扩展,它继承了Applet的方法和执行机制,同时也增加了对Swing构件的支持。每个Jaw小应用程序都必须是Applet类或JApplet类的子类。因此,本题的正确答案是A。
32.C。解析:继承是允许将一个类定义为一个更通用类的特例。特殊类称为子类,通用类称为父类。除了订单类的属性外,特快订单类可能还有其他一些特殊属性。显然,订单类是通用类,即父类;而特快订单类是定单类的一个特例,是子类。订单类和特快订单类是继承关系。
33.C。解析:本题考查Applet的安全限制。许多浏览器为了保护本地主机,一般情况下,对Applet作了如下安全限制:Applet不能运行任何本地可执行程序;禁止Applet读、写本地计算机的文件系统;禁止加载本地库或方法。Applet只能使用自身的代码或Applet浏览器提供的JavaAPl;禁止向提供Applet之外的任何主机建立网络连接;不能读取某些系统信息。除了Java版本号、操作系统名等一些简单信息外,Applet不能获得与本地计算机有关的任何信息。根据上述介绍可知,Applet只能读取有限的系统信息,但不是一点儿都不能读取。因此,本题的正确答案是C。
34.A。解析:本题考查Swing的容器面板。在Swing的容器面板中:选项板(JTabbedPane)提供一组可供用户选择的带有标签或图标的选项,每个选项下面都可以显示一个构件;Swing提供两种分层面板:JLayeredPane和JDesktopPane。JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设计;滚动窗口(JScrollPane)是带滚动条的面板,主要是通过移动JViewport(视口)来实现的;分隔板(JSplitPane)用于分隔两个构件,这两个构件可以按照水平方向分隔,也可以按照垂直方向分隔。根据上述介绍可知,Swing中的选项面板是JTabbedPane。因此,本题的正确答案是A。
35.B。解析:AppletContext类是一个接口类,Applet通过AppletContext接口与环境进行通信。可以利用这个类从Applet环境获取信息,而这个环境一般是指浏览器。Applet使用AppletContext类的showDocument()方法可以通知浏览器在指定窗口中显示另一个URL的内容。因此,本题的正确答案是B。
36.D。解析:本题考查线程的创建。Java语言中提供两种创建线程的方法,一种是通过实现Runnable接口来创建线程,另一种是通过继承Thread类创建线程。显然,题目中的程序是使用第二种方法来创建线程。Thread类中定义了run()方法,所以通过继承Thread类来创建线程时还要重写Thread类中的run()方法。而run()方法的定义如下:
public void run(){}
题目中的代码比较简单,就是创建了一个线程,这个线程完成的操作就是打印5行"祝你成功"。仔细阅读程序,不难发现第7行有错。在run()方法的定义中是没有参数的,而题目程序中的run方法却带有一个参数。因此,要把第7行的代码改为"public void run()"。因此,本题的正确答案是D。
37.B。解析:二维数组有两种定义方式:①type arrayName[][];②type[][]arrayName;从题目中的语句可以看出,本题定义了一个二维数组。
38.D。解析:Java命名的基本原则包括如下几条:_、$不作为变量名、方法名的开头;变量名、方法名首单词小写,其余单词只有首字母大写;接口名、类名首单词第一个字母大写;常量完全大写。根据上述命名规则,选项D的说法是正确的。
39.D。解析:Java语言使用的是Unicode字符集。而ASCIl是国际上使用最广泛的字符编码;BCD是一种数字压缩存储编码方法。
40.D。解析:本题考查AWT事件处理。事件就是发生在用户界面上的用户交互行为所产生的一种效果。每类事件都有对应的事件监听器,监听器就是接口。在单行文本输入区(TextField)构件上可能发生的事件包括:FocusEvent焦点事件——焦点的获得和丢失,这类事件所对应的事件监听器是FocusListener;ActionEvent动作事件——按钮按下、TextField中按键,这类事件所对应的事件监听器是ActionListener;MouseEvent鼠标事件——鼠标单击、释放、拖动、移动,这类事件所对应的事件监听器是MousetMotionListener。虽然还包括其他一些监听器,但是在所有事件及其所对应的事件监听器中,并不包括ChangeListener这样一个事件监听器。因此,本题的正确答案是D。
二、基本操作题
第1处:sum=0
第2处:pos%2= =1或pos%2 1= =0
第3处:pos++或pos+=1或pos=pos+1
解析:第1处给整型变量sum赋初值;第2处为判断数组中元素下标为奇数的条件;第3处是元素下标加1继续遍历。
三、简单应用题
第1处:PlafPanel
第2处:plaf
解析:第一处由题意可知,类PlafPanel缺少构造函数,所以填PlafPanel。第二处是通过String类型的对象plaf,和UIManager.setLookAndFeel()方法实现显示风格的切换。
四、综合应用题
第1处:txtPassWord.setEchoCharf(’*’)
第2处:txtPassword.getText()
第3处:txtUsername.setEditable(true)
解析:第一处是通过TextField类的setEchoChar函数设置用户输入时,文本框显示的文本。第二处是通过TextField类的getText函数获取用户的输入,即得到密码值。第三处是使用户名文本框变为可用,使用户可以输入。
2017年计算机二级《JAVA》模拟试题答案.doc