历年全国计算机等级考试二级Java语言程序设计试题及答案及历年二级C++真题及答案_第1页
历年全国计算机等级考试二级Java语言程序设计试题及答案及历年二级C++真题及答案_第2页
历年全国计算机等级考试二级Java语言程序设计试题及答案及历年二级C++真题及答案_第3页
历年全国计算机等级考试二级Java语言程序设计试题及答案及历年二级C++真题及答案_第4页
历年全国计算机等级考试二级Java语言程序设计试题及答案及历年二级C++真题及答案_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1历年全国计算机等级考试二级Java语言程序设计试题及答案一、选择题(每小题1分,共40小题,共40分)

1.下列叙述中正确的是()。

A.一个算法的空间复杂度大,则其时间复杂度必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述3种说法都不对D。【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。

2.开发软件时对提高开发人员工作效率至关重要的是()。

A.操作系统的资源管理功能

B.先进的软件开发工具和环境

C.程序员的数量

D.计算机的并行处理能力B。【解析】先进的软件开发工具和环境对提高开发人员工作效率是至关重要的。

3.程序设计语言的基本成分是数据成分、运算成分、控制成分和()。

A.对象成分

B.变量成分

C.语句成分

D.传输成分D。【解析】程序设计语言的基本成分有:数据成分,用于描述程序所涉及的数据;运算成分,用于描述程序中所包含的运算;控制成分,用于描述程序中所包含的控制;传输成分,用于表达程序中数据的传输。

4.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125

B.n/2

C.n

D.n+lC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况

下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。

5.有下列二叉树,对此二叉树前序遍历的结果为()。

A.XZCYAB

B.XYZABC

C.XYABCZ

D.XYAZBCD。【解析】对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。

6.下列叙述中正确的是()。

A.在面向对象的程序设计中,各个对象之间具有密切的关系

B.在面向对象的程序设计中,各个对象都是公用的

C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

D.上述3种说法都不对C。【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。

7.软件工程的理论和技术性研究的内容主要包括软件开发技术和()。

A.消除软件危机

B.软件工程管理

C.程序设计自动化

D.实现软件可重用B。【解析】基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。

8.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句

B.命令

C.H令

D.消息D。【解析】在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,但并不指示接受者应该怎么完成这些处理。

9.下列选项中,是软件调试技术的是()。

A.错误推断

B.集成测试

C.回溯法

D.边界值分析C。【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

10.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包括DBS和DBMS

B.DBMS包括DB和DBS

C.DBS包括DB和DBMS

D.没有任何关系C。【解析】数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台5个部分组成,因此DB和DBMS都是DBS的组成部分。11.下列()不是高级程序设计语言。

A.FORTRAN

B.Java

C.C++

D.VisualASMD。【解析】高级语言是一类人工设计的语言,因为它对具体的算法进行了描述,所以又称为算法语言。它是面向程序设计独立于计算机的硬件。目前,计算机常用的高级语言有:BASIC语言、FORTRAN语言、COBOL语言、PASCAL语言、C语言、PROLOG语言、而当前流行的,面向对象的程序设计语言有C++和用于网络环境的程序设计语言Java等。

12.16根地址总线的寻址范围是()。

A.531KB

B.64KB

C.640KB

D.1MBB。【解析】假设地址总线有n条,内存的寻址范围是2n。

13.在一所大学中,每个系都有自己的局域网,则连接各个系的校园网()。

A.是广域网

B.还是局域网

C.是地区网

D.这些局域网不能互连B。【解析】广域网是指远距离的计算机互联网络,分布范围可达几千千米乃至上万千米甚至跨越国界、州界、遍及全球范围。局域网是指一个局部区域中的、近距离的计算机互联网络,通常采用有线方式连接,分布范围从几百米到几千米。例如,一座大楼内或相邻的几座楼之间的互联网络。一个单位、学校内部的网络多为局域网。

14.下列关于信息加密的叙述中,正确的是()。

A.加密通过加密算法实现

B.加密前的文件称为密文

C.加密后的文件称为明文

D.将明文变为密文的过程称为解密A。【解析】一般人们将加密前的文件称为明文,而加密后的文件称为密文,因此加密的目的就是将明文变为密文。而反过来将密文变为明文的过程则称为解密。

15.下列关于域名和IP地址的叙述中,不正确的是()。

A.在Internet中访问一台主机必须使用它的主机名

B.200.201.202.203是一个C类IP地址

C.IP地址采用的是分层结构

D.主机名与IP地址是一一对应的A。【解析】每台直接连接到Internet上的计算机、路由器都必须有唯一的IP地址。IP地址是Internet赖以工作的基础。Internet中的计算机与路由器的IP地址采用分层结构,它是由网络地址与主机地址两部分组成。对于C类地址,其网络地址空间长度为21位,主机地址空间长度为8位,C类IP地址范围从:l92.0.0.0~223.255.255.255。主机名与它的IP地址一一对应,因此在Internet上访问一台主机既可以使用它的主机名,也可以使用它的IP地址。

16.Java语言中。负责并发管理的机制是()。

A.垃圾回收

B.虚拟机

C.代码安全

D.多线程D。【解析】多线程是Java程序的并发机制,它能同步共享数据、处理不同的事件。

17.下列描述中,错误的是()。

A.Java要求编程者管理内存

B.Java的安全性体现在多个层次上

C.Applet要求在支持Java的浏览器上运行

D.Java有多线程机制A。【解析】为了充分利用资源,Java有一个系统级的线程,用来对内存的使用进行跟踪,它可以在系统空闲时对不用的内存空间进行回收,从而使程序员从繁忙的内存管理中解放出来。

18.Java为移动设备提供的平台是()。

A.J2MEB.J2SE

C.J2EED.JDK5.0A。【解析】Java2平台包括:J2ME平台、J2SE平台和J2EE平台。其中:J2ME是为嵌入式和移动设备提供的Java平台;J2SE是面向企业级应用与服务的综合性标准开发平台;J2EE是面向大型企业级用容器管理专用构件的应用平台。而JDK5.0是一个Java开发软件包。

19.JDK中提供的文档生成器是()。

A.javadoc.exe

B.javap.exe

C.java.exe

D.javaprof.exeA。【解析】在JDK中:javadoc.exe是文档生成器,将Java源代码和包以MML格式生成AP文档;java.exe是Java解释器;javap.exe是Java反汇编器;javaprof.exe是Java剖析工具,提供解释器剖析信息。

20.下列不属于Swing中构件的是()。

A.JPanel

B.JTable

C.Menu

D.JFrameC。【解析]JPanel是Swing的中间容器;JTable是Swing中可编辑信息的构件;JFrame是Swing的顶层容器。阅读下面程序

importjava.io.*;

publicclassTypeTransition{

publicstaticvoidmain(Stringargs[]){

chara=’h’;

inti=100;

intJ=97;

intaa=a+i;

System.out.println("aa="+aa);

charbb=(char)j;

System.out.println("bb="+bb):

}

}

如果输出结果的第二行为bb=a,那么第一行的输出结果是()。

A.aa=I

B.aa=204

C.aa=v

D.aa=156B。【解析】本题考查的是Java的基本数据类型及其运算。程序开始生成了一个字符型变量a和3个整型变量i、j、aa。而整型变量aa的初始值是a+i,其中a是一个字符

型变量。如何进行加法运算呢?Java语言规定,char型数据可以自动转换成int类型,转换的结果就是该字符的ASCIl码值。因此,整型变量aa的初始值为字符”h”的ASCIl码值加上l00。如果记住h的ASCIl码值是104,则直接就确定aa的初始值是204,选项B为正确答案。如果记不得h的ASCIl码,题目中则给出提示。题目中说”输出结果的第二行为bb=a”,也就是字符bb的值为字符a,bb的生成语句是charbb=(char)j,是把整型变量j的值强制转换为字符型。同样,把ASCIl码值为j(97)所对应的字符赋值给bb。显然,字符a的ASCIl码值为97,字符b的ASCIl码值为98,依次类推,字符h的ASCIl码为l04。因此,本题的正确答案是B。

22.阅读下面程序

publicclassOperatorsAndExpressions(

voidequalsMethodl(){

Stringsl一newString("howareyou");

Strings2=newString("howareyou");

System.out.println(s1==s2):

}

publicstaticvoidmain(Stringargs[]){

OperatorsAndExpressionsOperAndExp=newOper-

atorsAndExpressions

();

//用于复合类型数据的”==”运算符

OperAndExp.equalsMethodl();

}

}

程序运行结果是()。

A.==

B.true

C.false

D.equal

C。【解析】本题考查的是Java语言中运算符的特殊用法。相等比较运算符"==",不仅可用于基本类型的数据之间的比较,还可以用于复合类型数据之间的比较。但是,对于复合类型数据的"=="运算,其比较的目标是两个操作数是否是同一个对象。如果需要比较两个对象的值是否相同,则可以调用equals()方法。题目中函数equalsMethodl()的代码非常简单,首先生成两个字符串对象sl和s2,然后输出表达式"sl==s2"的结果。根据上面介绍的相等比较运算符的用法,字符串对象sl和s2是复合类型数据,因此表达式"sl==s2"比较的是sl和s2是否同一个对象。显然,sl和s2虽然具有相同的值,即"howareyou",但它们是两个不同的对象。因此,本题的正确答案是C。23.阅读下面代码

if(x==0){System.out.println("冠军");)

elseif(x>一3){System.Out.println("亚军");}

else{System.out.println("季军");}

若要求打印字符串”季军”,则变量X的取值范围是()。

A.x=d&x<=-3

B.x>O

C.x>-3

D.x<=-3

23.D。【解析】本题考查的是条件分支语句if-else。if-else根据判定条件的真假来执行两种操作中的一种。当条件为真时,执行if语句后面的代码块;当条件为假时,执行else后面的代码块。题目中的代码段是一个if-else的嵌套语句,根据if-else语句的执行过程来进行分析。当x的值为0时,布尔表达式"x==0"的结果为真,就输出”冠军”;当x的值不为0时,则执行else语句中的内容。else语句中的代码又是一个if-else语句,还是和上面一样进行分析。当X的值不等于0且大于-3时,布尔表达式”x>-3”的结果为真,输出"亚军";当x的值不等于0且不大干-3,也就是X的值不等于0同时x的值小于等于-3时,则输出"季军"。经过上述分析可知,要想输出"季军",x所满足的条件为x!=O&x<=-3,但是当x<=-3时,x的值一定不会为0。所以,X所满足的条件可以简写为x<=-3。因此,本题的正确答案为D。

24.下列关于构造方法的叙述中,错误的是()。

A.Java语言规定构造方法名与类名必须相同

B.Java语言规定构造方法没有返回值,但不用void声明

C.Java语言规定构造方法不可以重载

D.Java语言规定构造方法只能通过new自动调用C。【解析】本题考查的是构造方法的使用。Java语言中,构造方法是一种特殊的方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。Java中的每个类都有构造方法,它也是由方法名、参数和方法体组成的。构造方法有如下特点:

·构造方法的名字必须与类名相同。

·构造方法不返回任何数据,但不用void来声明。

·用户不能直接调用构造方法,必须通过关键字new自动调用。

·构造方法可由用户在类中定义,默认时由Java语言自动生成。但它是个空方法,变量被赋予该数据类型的默认值。

·在构造方法实现中,可以进行方法重载,即定义多个构造方法。重载构造方法的目的是使类具有不同的初始值,为类对象的初始化提供方便。根据上述构造方法的特点可知,本题选项C的说法是错误的。

25.下列适配器类中不属于事件适配器的是()。

A.MouseAdapter

B.KeyAdapter

C.ComponentAdapter

D.FrameAdapter

D。【解析】本题考查java.awt.event包中定义的适配器类。该包中定义的适配器类包括①ComponentAdapter构件适配器;②ContainerAdapter容器适配器;③FocusAdapter焦点适配器;④MouseAdapter鼠标适配器;⑤KeyAdapter键盘适配器⑥WindowAdapter窗口适配器,由此可知本题答案为D。26.下列类中属于字节输入抽象类的是()。

A.FileInputStream

B.ObjectInputStream

C.FiterInputStream

D.InputStream

D。【解析】在Java中定义了两种类型的流,字节型和字符型,这两种流分别用4个抽象类表示:InputStream,OutputStream,Reader,Writer,其中InptutStream和OutStream表示字节流,Reader和Reader是表示字符流,所以字节输入抽象类为InptutStream。27.能向内部直接写入数据的流是()。

A.FileOutputStream

B.FileInputStream

C.ByteArrayOutputStream

D.ByteArraylnputStream

C。【解析】本题考查Java的内存读写。在java.io中,还提供了ByteArrayInputStream、ByteArrayoutputStream和StringBufferInputStream类可直接访问内存,它们是InputStream和OutputStream的子类。用ByteArrayOutputStream可向字节数组写入数据;ByteArrayInputStream可从字节数组中读取数据。28.下列运算符中属于关系运算符的是()。

A.==

B.=

C.+=

D.-=

A。【解析】本题考查Java的关系运算符。B中写法不正确,C、D均为赋值运算符。29.下列方法中,声明抛出InterruptedException类型异常的方法是()。

A.suspend()

B.resume()

C.sleep()

D.start()

C。【解析】本题考查线程的基本操作。Java中提供了interrupt方法用来中断一个线程,当调用一个线程的interrupt方法时,即向该线程发送一个中断请求。在调用线程的interrupt方法时,如果该线程由于调用了sleep方法或wait方法而正在处于阻塞状态,那么线程会抛出一个InterruptException异常。30.下列关于System类的叙述中,错误的是()。

A.System类是一个final类

B.System类不能实例化

C.System类中没有定义属性

D.System类主要提供了系统环境参数的访问C。【解析】本题考查System类的基本知识。Systern类是一个final类,所有的方法都用类变量来调用,对System类不可能实例化。System类主要用来提供标准输入/输出和系统环境信息的访问设置。而System类的属性有:①publicstaticfinalInputStreamin;标准输入;②publicstaticfinalOutputStreamout;标准输出;③pubhcstaticfinalPrintStreamerr;标准错误输出。阅读下面程序

publicclassIncrement{

publicstaticvoidmain(stringargs[]){

intC;

c=5:

System.out.println(c);

System.out.println(c++):

System.out.println(c);

}

}

程序运行结果是()。

A.5

6

6

B.5

5

6

C.6

7

7

D.6

6

6

B。【解析】本题考查的是Java增量运算符"++"。x++是先使用后加l,即首先使用X的值进行表达式的计算,然后才对x的值加1。而++x是先加1后使用,即首先对x的值加1,然后使用x的值进行表达式的计算。本题首先生成一个整型变量C,其初始值为5。第一条输出语句输出c的初始值,即5。然后,第二条输出表达式c++的结果,即先输出C的值,然后才对c的值加1,所以,第二条输出语句输出的是5,输出后c的结果才为6。最后一条输出语句输出结果为6。因此,本题的正确答案为B。32.下列叙述中,错误的是()。

A.JavaApplication与Applet所用编译命令相同

B.通常情况下JavaApplication只能有一个main()方法

C.JavaApplet必须有HTML文件才能运行

D.JavaApplet程序的.class文件可用Java命令运行

D。【解析】本题考查的是Java中的Applet以及Applet与Application的区别。Applet是能够嵌入HTML语言中,并能够在浏览器中运行的类。Applet的运行环境是Web浏览器,所以必须建立HTML文件,告诉浏览器如何加载与运行Applet。因为Applet是不能直接通过Java命令行启动运行的。所以选项D的说法错误。33.下列关于Java语言中线程的叙述中,正确的是()。

A.线程由代码、数据、内核状态和一组寄存器组成

B.线程间的数据是不共享的

C.用户只能通过创建Thread类的实例或者定义和创建Thread子类的实例,建立和控制自己的线程

D.因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定

D。【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数据。代码所操作的数据是Java线程模型中的一个组成部分,数据与代码是独立的。数

据可以被多个线程共享,也可不共享。Java语言中提供两种创建线程的方法,一种是通过继承Thread类创建线程,另一种是通过实现Runnable接口来创建线程。34.处理对象传输的接口是()。

A.Serializable

B.C:loneable

C.hemListener

D.ActionListener

A。【解析】处理对象传输就是把对象串行化。Java语言中,如果要串行化某些类的对象,这些类就必须实现Serializable接口。35.在读取二进制数据文件的记录时,为了提高效率常

常使用的一种辅助类是()。

A.InputStream

B.FileInputStream

C.StringBuffer

D.BufferedReader

C。【解析】本题考查Java语言的输入/输出流。InputStream类、FilelnputStream类和BufferedReader类都是Java语言中和输入输出直接相关的类,不属于辅助类,因此可以直接判断出选项C为正确答案。36.在Applet中显示文字、图形等信息时,应使用的方法是()。

A.init()

B.start()

C.paint()

D.destroy()

C。【解析】paint()是与Applet显示相关的方法,由它来具体执行Applet的绘制功能。init()方法用于初始化Applet,start()方法用于激活Applet。在init()方法完成后,将调用start()方法,而且在Applet每次显示时都要调用。destroy()方法用于彻底终止Applet。37.关于线程的生命周期以下状态正确的是()。

A.新建状态、可运行状态、阻塞状态、恢复状态和终止状态

B.新建状态、运行状态、阻塞状态、恢复状态和终止状态

C.新建状态、可运行状态、运行状态、阻塞状态和终止状态

D.新建状态、可运行状态、运行状态、恢复状态和终止状态

C。【解析】线程生命周期中出现的状态包括:新建状态、可运行状态、运行状态、阻塞状态和终止状态。38.Thread类中能运行线程的方法是()。

A.resume()

B.start()

C.run()

D.init()

C。【解析】resume()是Thread类提供的用于线程控制的方法;start()是Thread类中的方法,新建的线程不会自动运行,必须调用线程的start()方法才能运行该线程;run()是Thread类中的方法,在该方法中定义了线程的具体行为,线程开始执行时,就是从它的run()方法开始执行的,就像Java应用程序从main()开始、Applet从ink()开始一样;init()不是Thread类中的方法。39.以下不是APPLET标记的选项是()。

A.PARAM

B.BODY

C.CODEBASE

D.ALT

B。【解析】标记的一般格式是:

[CODEBASE=codebaseURL]

CODE=appletFile

[ALT=alternateText]

[NAME=appletlnstanceName]

WIDTH=pixels

HEIGHT=pixels

[ALIGN=alignment]

[VSPACE=pixels]

[HSPACE=pixels]

[ARCHIVE=archiveFiles]

>

[

ue>]

[

ue>]

[alternateHTML]

因此可以看出,选项B不是APPLET标记。40.在Java中,与数据库连接的技术是()。

A.开放数据库连接

B.Java数据库连接

C.数据库厂家驱动程序

D.数据库厂家的连接协议B。【解析】开放数据库连接(ODBC,OpenDatebaseConnectivity),它是用C语言定义的。由于J2EE要求与Java绑定,因此规定使用Java数据库连接(JDBC,JavaDataBaseConnectivity),作为Java与数据库连接的技术。基本操作题(共18分)

本题定义了一个求两个数的最大值的方法max,并调用该方法计算67和23的最大值。

publicclassjaval{

publicstaticvoidmain(String[]args){

javaltemp=newjaval();

intres=max(67,23);

System.out.println("res="+res);

}

staticintmaX(){

intmaxNum;

if(a>b)

else

maxNum=b;

}

}第1处:inta,intb

第2处:maxNum=a

第3处:returnmaxNum

【解析】第1处定义max()方法中的两个整型形参;第2处将两者中较大的赋给maxNum;第3处返回最大值。

三、简单应用题(共24分)

本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。

importjava.awt.*;

importjava.awt.event.*;

publicclassjava2extendsjava.applet.Appletimple-

mentshemListener,ActionListener

{Choicechoice;

TextFieldtext;

TextAreaarea;

Buttonadd,del;

publicvoidinit().

{choice:newChoice();

text=newTextField(8);

area:newTextArea(6,15);

choice.add("音乐天地");

choice.add("武术天地");

choice.add("象棋乐园");

choice.add("交友聊天");

add=newButton("添加");

del=newButton("删除");

add.addActionListener(this);

del.addActionListener(this);

choice.addItemListener(this);

add(choice);

add(del);add(text);add(add);add(area);

}

publicvoiditemStateChanged(hemEvente)

{Stringname=;

intindex=choice.getSelectedIndex();

area.setText("\n"+index+":"+name);

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==add||e.getSource()==

text)

{Stringname=text.getText();

if(name.length()>0)

{choice.add(name);

choice.select(name);

area.append("\n添加"+name);

}

}

elseif(e.getSource()==del)

{choice.remove();

area.append("\n删除"+choice.getSelectedItem

());

}

}

}第1处:choice.getSelectedltem()

第2处:choice.getSelectedIndex()

【解析】第1处是获取当前选中项的数据;第2处清除选中项的索引号。综合应用题(共18分)

本题的功能是定义自已的组件类。窗口中排布着12

个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击

按钮时,后台将显示该按钮对应的字符。

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

classjava3extendsFrame{

Stringkeys="l23456789*0#";

java3(){

super("java3");

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(O);

}

});

setLayout(newGridLayout(4,3,6,6));

for(inti=0;i

KeyButtonkb=newKeyButton(keys.charAt

(i));

kb.addkeyListener(this);

kb.setBackground(Color.pink);

kb.setForeground(Color.black);

add(kb);

}

setSize(200,200);

show();

}

classKeyEventHandlerextendsKeyAdapter{

publicvoidkeyTyPed(KeyEventevt){

System.out.println(evt.getChar());

}

}

publicstaticvoidmain(String[]args){

newjava3();

}

}

classKeyButtonextendsComponent{

KeyListenerkeyListener;

booleanhighlighted;

charkey;

KeyButton(chark){

this.key=k;

addMouseListener(newMouseEventHandler()):

}

publicvoidpaint(Graphicsg){

intW=getSize().width;

inth=getSize().height;

Strings=""+key;

FontMetricsfm=g.getFontMetrics();

if(highlighted){

g.setColor(getBackground());

g.fillRoundRect(0,0,w-1,h-1,10,10);

}

g.setColor(getForeground());

g.drawRoundRect(0,0,w-1,h-1,10,10);

g.drawString(s,(w-fm.stringWidth(s))/2,

(h-fm.getHeight())/2+fm.getAscent());

}

classMouseEventHandlerextendsMouseAdapter{

publicvoidmousePressed(MouseEventevt){

if(keyListener!=null){

keyListener.keyTyped(

newKeyEvent(KeyButton.this,KeyEvent.KEY_

TYPED,

System.currentTimeMillis(),

0,KeyEvent.VK_UNDEFINED,key));

}

}

publicvoidmouseEntered(MouseEventevt){

highlighted=true;

repaint();

}

publicvoidmouseExited(MouseEventevt){

highlighted=false;

repaint();

}

}

publicsynchronizedvoidaddKeyListerner(KeyLis-

tenerl){

keyListener=AWTEventMuhieaster.add(key-

Listener,1);

}

publicsynchronizedvoidremoveKeyListener(Key-

Listenerl){

keyListener=AWTEventMuhicaster.remove

(keyListener,1);

}

}第1处:inti=0;i

第2处:kb.addKeyListener(newKeyEventHandler())

第3处:system.out.println(evt.getKeyChar())

【解析】第1处是作为遍历keys中元素的条件,而keys中的字符元素就是各个按钮对应的字符。第2处注册键盘事件监听功能,KeyButton实现了KeyLIstener接口,而kb是KeyButton类的对象,所以它是合格的监听者。第3处将从键盘读到的字符输出。公共基础知识及C++语言程序设计(考试时间90分钟,满分100)分)(1)C(2)C(3)B(4)A(5)D一、选择题((1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下面叙述正确的是A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上三种描述都不对(2)以下数据结构中不属于线性数据结构的是A)队列B)线性表C)二叉树D)栈(3)在一棵二叉树上第5层的结点数最多是A)8B)16C)32D)(4)下面描述中,符合结构化程序设计风格的是A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B)模块只有一个入口,可以有多个出口C)注重提高程序的执行效率D)不使用goto语句(5)下面概念中,不属于面向对象方法的是A)对象B)继承C)类D)过程调用(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是A)可行性分析B)需求分析C)详细设计D)程序编码(7)在软件开发中,下面任务不属于设计阶段的是A)数据结构设计B)给出系统模块结构C)定义模块算法D)定义需求并建立系统模型(8)数据库系统的核心是A)数据模型C)软件工具B)数据库管理系统D)数据库(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库设计是指设计数据库管理系统C)数据库技术的根本目标是要解决数据共享的问题D)数据库系统中,数据的物理结构必须与逻辑结构一致(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是A)内模式B)外模式C)概念模式D)逻辑模式(11)关于面向对象的程序设计方法,下列说法正确的是A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用(12)判断字符型变量ch是否为大写英文字母,应使用表达式A)ch>='A'&ch<='Z'B)ch<='A'||ch>='Z'C)'A'<=ch<='Z'D)ch>='A'&&ch<='Z'(13)已知下列语句中的x和y都是int型变量,其中错误的语句A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;(14)执行语句序列intn;cin>>n;switch(n){case1:case2:cout<<'1';case3:case4:cout<<'2';break;default:cout<<'3';}时,若键盘输入1,则屏幕显示A)1B)2C)3D)12(15)下列程序的输出结果是#include<iostream>usingnamespacestd;intmain(){chara[]="Hello,World";char*ptr=a;while(*ptr){if(*ptr>='a'&&*ptr<='z')cout<<char(*ptr+'A'-'a');elsecout<<*ptr;ptr++;}return0;}A)HELLO,WORLDB)Hello,WorldC)hELLO,wORLDD)hello,world(16)已知:intm=10;在下列定义引用的语句中,正确的是A)int&x=m;B)inty=&m;C)int&z;D)int&t=&m;(17)下列函数原型声明中错误的是A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0);D)voidFun(intx=0,inty);(18)已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列重载形式中正确的是A)chartest(int,int,int);B)doubletest(int,int,double);C)inttest(int,int,int=0);D)floattest(int,int,float=3.5F);(19)有以下程序#include<iostream>inti=0;voidfun(){{staticinti=1;std::cout<<i++<<',';}std::cout<<i<<',';}intmain(){fun();fun();return0;}程序执行后的输出结果是A)1,2,1,2,B)1,2,2,3,C)2,0,3,0,D)1,0,2,0,(20)已知函数f的原型是:voidf(int*a,long&b);变量v1、v2的定义是:intv1;longv2;,正确的调用语句是A)f(v1,&v2); B)f(v1,v2);C)f(&v1,v2); D)f(&v1,&v2);(21)有以下类定义classMyClass{public:MyClass(){cout<<1;}};则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是A)11B)111C)1111D)11111(22)关于友元,下列说法错误的是A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(23)关于动态存储分配,下列说法正确的是A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(24)有以下程序#include<iostream>usingnamespacestd;classMyClass{public:MyClass(intn){number=n;}//拷贝构造函数MyClass(MyClass&other){number=other.number;}~MyClass(){}private:intnumber;};MyClassfun(MyClassp){MyClasstemp(p);returntemp;}intmain(){MyClassobj1(10),obj2(0);MyClassobj3(obj1);obj2=fun(obj3);return0;}程序执行时,MyClass类的拷贝构造函数被调用的次数是A)5B)4C)3D)2(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A)公有成员和私有成员B)私有成员和保护成员C)公有成员和保护成员D)私有成员、保护成员和公有成员(26)在C++中用来实现运行时多态性的是A)重载函数B)析构函数C)构造函数D)虚函数(27)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是A)每个派生类的构造函数都要为虚基类构造函数提供实参B)多继承时有可能出现对基类成员访问的二义性问题C)使用虚基类可以解决二义性问题并实现运行时的多态性D)建立最派生类对象时,虚基类的构造函数会首先被调用(28)在一个类体的下列声明中,正确的纯虚函数声明是A)virtualvoidvf()=0;B)voidvf(int)=0;C)virtualintvf(int);D)virtualvoidvf(int){}(29)在下面的运算符重载函数的原型中,错误的是A)Volumeoperator-(double,double);B)doubleVolume::operator-(double);C)VolumeVolume::operator-(Volume);D)Volumeoperator-(Volume,Volume);(30)下列是模板声明的开始部分,其中正确的是A)template<T>B)template<classT1,T2>C)template<classT1,classT2>D)template<classT1;classT2>(31)执行语句序列ofstreamoutfile("DATA.DAT");if(...)cout<<"OK";elsecout<<"FAIL";后,如果文件打开成功显示“OK”,否则就显示“F厶n。”。由此可知,上面if语句的...处的表达式应是A)outfile.fail()或outfileB)outfile.good()或!outfileC)outfile.good()或outfileD)outfile.fail()或!outfile(32)C++流中重载的运算符>>是一个()A)用于输出操作的非成员函数B)用于输入操作的非成员函数C)用于输出操作的成员函数D)用于输入操作的成员函数(33)有以下类定义classPoint{public:Point(intx=0,inty=0){_.x=x;_.y=y;}voidMove(intxOff,intyOff){_x+=xOff;_.y+=yOff;}voidPrint()const{cout<<'('<<_x<<','<<_y<<')'<<endl;}private:int_x,_y;};下列语句中会发生编译错误的是A)Pointpt;pt.Print();B)constPointpt;pt.Print();C)Pointpt;pt.Move(l,2);D)constPointpt;pt.Move(l,2);(34)有以下类定义classMyClass{private:intid;chargender,char*phone;public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,charge='#',char*ph=NULl.){id=no;gende=ge;phone=ph;}};下列类对象定义语句中错误的是A)MyClassmyObj;B)MyClassmyObj(11,);C)MyClassmyObj(12,'m');D)MyClassmyObj(12);(35)有以下程序#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){}doublereal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain(){Complexa=Complex(l,1)+Complex(5);cout<<a.real()<<'+'<<a.imag()<<'i'<<endl;return0;}程序执行后的输出结果是A)6+6iB)6+1iC)1+6iD)1+1i二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1]-[15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。(1)算法的复杂度主要包括时间[1]复杂度和空间复杂度。(2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的[2]存储结构或物理结构或物理存储结构。(3)若按功能划分,软件测试的方法通常分为白盒测试方法和[3]黑盒或黑箱测试方法。(4)如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在[4]一对多的联系。(5)关系数据库管理系统能实现的专门关系运算包括选择、连接和[5]投影。(6)设有定义语句:inta=12;,则表达式a*=2+3的运算结果是[6]60。(7)从实现的角度划分,C++所支持的两种多态性分别是[7]编译时的多态性和运行时的多态性。(8)将—个函数声明为一个类的友元函数必须使用关键字[8]friend。(9)请按下面注释的提示,将类B的构造函数定义补充完整。classA{inta;public:A(intaa=0){a=aa;}};classB:publicA{intb;Ac;public://用aa初始化基类A,用aa+1初始化类对象成员cB(intaa):[9]A(aa),c(aa+1){b=aa+2;}};(10)下列程序的输出结果是[10]7。#include<iostream>usingnamespacestd;intmain(){inti=5;int&r=i;r=7;cout<<i<<endl;return0;}(11)下列程序的输出结果是[11]042。#include<iostream>usingnamespacestd;classTest{public:Test(){cnt++;}~Test(){cnt--;}staticintCount(){returncnt;}private:staticintcnt;};intTest::cnt=0;intmain(){cout<<Test::Count0<<'';Testtl,t2;Test*pT3=newTest;Test*pT4=newTest;cout<<Test::Count0<<'';deletepT4;deletepT3;cout<<Test::Count()<<endl;return0;}(12)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)unsignedfact(unsignedn){if(n<=1)return1;return[12]n*fact(n-1);}(13)下列程序的输出结果是[13]3,3.14。#include<iostream>usingnamespacestd;template<tytenameT>Tfun(Ta,Tb){return(a<=b)?:b;}intmain(){cout<<fun(3,6)<<','<<fun(3.14F,6.28F)<<endl;return0;}(14)与成员访问表达式p->name等价的表达式是[14](*p).name。(15)下列程序的输出结果是[15]25。#include<iostream>usingnamespacestd;classbase{public:intn;base(intx){n=x;}virtualvoidset(intm){n=m;cout<<n<<'';}};classderiveA:publicbase{public:deriveA(intx):base(x){}voidset(mtm){n+=m;cout<<n<<'';}};classderiveB:publicbase[public:deriveB(intx):base(x){}voidset(intm){n+=m;cout<<n<<'';}};intmain(){deriveAdl(1);deriveBd2(3);base*pbase;pbase=&dl;pbase->set(1);pbase=&d2;pbase->set(2);return0;}2004年9月全国计算机等级考试二级笔试试卷公共基础知识及C++语言程序设计答案及评分标准选择题((1)—(35)每小题2分,共70分)(1)C(2)C(3)B(4)A(5)D(6)B(7)D(8)B(9)C(10)A(11)D(12)D(13)C(14)D(15)A(16)A(17)D(18)B(19)D(20)C(21)B(22)A(23)B(24)B(25)C(26)D(27)C(28)A(29)A(30)C(31)C(32)B(33)D(34)B(35)B二、填空题(每空2分,共30分)(1)[1]时间(2)[2]存储结构或物理结构或物理存储结构(3)[3]黑盒或黑箱(4)[4]一对多或1对多或I:M或I:N(其中M、N大小写均可)(5)[5]投影(6)[6]60(7)[7]编译(8)[8]friend(9)[9]A(aa),c(aa+1)或c(aa+1),A(aa)(10)[10]7(11)[11]042(12)[12]n*fact(n-1)(13)[13]3,3.14(14)[14](*p).name(15)[15]252010年3月计算机等级考试二级C++笔试试题一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是A)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:则由关系R得到关系T的操作是A)选择B)投影C)交D)并(11)下列关于函数的描述中,错误的是A)函数可以没有返回值B)函数可以没有参数C)函数可以是一个类的成员D)函数不能被定义为模板(12)若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是A)1B)2C)3D)4(13)下列关于继承方式的描述中,错误的是A)如果不显式地指定继承方式,缺省的继承方式是私有(private)B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是A)Decr&operator--(int);B)Decroperator--(Decr&,int);C)friendDecr&operator--(Decr&);D)frlendDecroperator--(Decr&,int);(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempp2;MyTempp3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是A)1B)2C)3D)0(16)在C++中,cin是个A)类B)对象C)模板D)函数(17)在下列字符中,不允许作为C++标识符的是A)bB)BC)_D)2(18)下列叙述中,错误的是A)false是一个逻辑型常量B)"b"是一个字符型常量C)365是一个int常量D)3.1415926是一个double常量(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是A)if(x==0)y=1;elsey=2;B)if(x==0)theny=1elsey=2;C)if(x==0)y=1elsey=2;D)ifx==0y=1;elsey=2;(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是A)intx[3]={0,0,0};B)intx[]={0};C)staticintx[3]={0};D)intx[]={0,0,0};(21)关于函数中的<返回类型>,下列表述中错误的是A)<返回类型>中有可能包含关键字intB)<返回类型>中有可能包含自定义标识符C)<返回类型>中有可能包含字符*D)<返回类型>中可能包含[](22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是A)MyClassp=MyClass;B)MyClassp=newMyClass;C)MyClass&p=newMyClass;D)MyClassa,&p=a;(23)有如下两个类定义classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论