资源描述
一、选择题(每小题1分,共40小题,共40分)
1.下列叙述中正确的是( )。
A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/Z)
C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)
C。【解析】二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。
2.算法的时间复杂度是指( )。
A.算法的执行时间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的基本运算次数
D。【解析】算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n))因此,问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度(Asymptotic Time Cornplexity)。简单来说就是算法在执行过程中所需要的基本运算次数。
3.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是( )。
A.编辑软件
B.操作系统
C.教务管理系统
D.浏览器
B。【解析】编辑软件和浏览器属于工具软件,教务系统是应用软件。
4.软件(程序)调试的任务是( )。
A.诊断和改正程序中的错误
B.尽可能多地发现程序中的错误
C.发现并改正程序中的所有错误
D.确定程序中错误的性质
A。【解析】调试的目的是发现错误或导致程序失效的错误原因,并修改程序以修正错误。调试是测试之后的活动
5.数据流程图(DFD图)是( )。
A.软件概要设计的工具
B.软件详细设计的工具
C.结构化方法的需求分析工具
D.面向对象方法的需求分析工具
C。【解析】数据流程图是一种结构化分析描述模型,用来对系统的功能需求进行建模。
6.软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于( )。
A.定义阶段
B.开发阶段
C.维护阶段
D.上述三个阶段
B。【解析】开发阶段在开发初期分为需求分析、总体设计、详细设计3个阶段了,在开发后期分为编码、测试两个子阶段。
7.数据库管理系统中负责数据模式定义的语言是( )。
A.数据定义语言
B.数据管理语言
C.数据操纵语言
D.数据控制语言
A。【解析】数据模式是由数据定义语言(Data Deftnition Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。
8.在学生管理的关系数据库中,存取一个学生信息的数据单位是( )。
A.文件
B.数据库
C.字段
D.记录
D。【解析】一个数据库由一个文件或文件集合组成。这些文件中的信息可分解成一个个记录。
9.数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( )。
A.需求分析阶段
B.逻辑设计阶段
C.概念设计阶段
D.物理设计阶段
C。【解析】E-R(Entity-Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
10.有两个关系R和T如下:
则由关系R得到关系T的操作是( )。
A.选择
B.投影
C.交
D.并
A。【解析】选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行。
11.破坏死锁的4个必要条件之一就可以预防死锁。假如规定一个进程在请求新资源之前首先释放已占有的资源,则是破坏了哪个条件?( )
A.互斥使用
B.部分分配
C.不可剥夺
D.环路等待
B。【解析】若一个进程请求新资源之前首先释放已占有的资源,这破坏了部分分配条件。
12.下列关于数据存储结构的叙述中,不正确的是( )。
A.数据的存储结构是逻辑结构在计算机存储器中的实现
B.数据的运算是在数据的存储结构实现的
C.数据的存储结构即是数据在计算机内的物理结构
D.数据运算是定义在数据的存储结构上的
D。【解析】数据的存储结构是逻辑结构在计算机存储器中的实现,又称为物理结构。数据运算是定义在数据的逻辑结构上的,在存储结构上实现。
13.对一组记录的关键码(25,38,48,52,63,74)采用二分法查找52时,第( )次会查找成功。
A.4
B.3
C.2
D.1
B。【解析】根据二分查找法的基本思想,第一次找到的是48,52大于48,再向右查找,第二次找到的是63,第三次找到的是52,至此查找完成。
14.在一个单链表中,若要删除P结点的后续结点,则执行( )。
A.P↑.next:=P↑.next↑.next;
B.P:=P↑.next;P↑.next:=P↑.next↑.next;
C.free(P↑.next);
D.P:=P↑.next↑.next;
A。【解析】在一个单链表中,若要删除P结点的后续结点,只要将P的指针域指向P的后继的后继即可,即 P↑.next=P↑.next↑.next。
15.下列关于链式存储结构的叙述中,不正确的是( )。
A.结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B.逻辑上相邻的结点物理上不必相邻
C.可以通过计算确定第i个结点的存储地址
D.插入、删除运算操作方便,不必移动结点
C。【解析】链式存储结构的主要特点有:①结点中除自身信息外,还有表示链接信息的指针域,因此存储密度小、存储空间利用率低;②逻辑上相邻的结点物理上不必相邻;③插入、删除操作灵活方便。线性存储结构可以通过计算确定第i个结点的存储地址,但链式存储结构不能。
16.Java中定义常量的保留字是( )。
A.const
B.final
C.finally
D.native
B。【解析】final是最终的修饰符,其修饰的是常量。
17.下列关于Java布尔类型的描述中,正确的是( )。
A.一种基本的数据类型,它的类型名称为boolean
B.用int表示类型
C.其值可以赋给int类型的变量
D.有两个值,1代表真,0代表假
A。【解析】布尔类型数据只有两个值:true(真)、false(假),不对应任何数字,不能与数字进行转换,布尔类型数据一般用于逻辑判别。
18.Java中所有类的父类是( )。
A.Father
B.Dang
C.Exception
D.Object
D。【解析】Object是所有类的根。
19.下列程序段的输出结果是( )。
int data=0 ;
char k=’a’,P=’f ’;
data=P-k:
System.OUt.println(data);
A.0
B.a
C.f
D.5
D。【解析】a和f的ASCIl值相差5。
20.下列数中为八进制的是( )。
A.27
B.0x25
C.026
D.028
C。【解析】采用0,1,2,3,4,5,6,7八个数码,逢八进位,并且开头一定要以数字0开头的为八进制。
21.下列方法中,不属于Throwable类的方法是( )。
A.printMessage
B.getMessage
C.toString
D.fillStackTrace
C。【解析】toString是Object类的方法,所有类都从Object类继承。
22.下列程序的输出结果是( )。
public class Test{
public static void main(String[]args){
int[]array=(2,4,6,8,lO);
int size=6;
int result =-1:
try{
for(int i=0;i(size 8L&result= = -1;)
if(array[i]= =20)result=i:
}
catch(ArithmeticException e){
System.out.println("Catch- - -l");
}
catch(ArraylndexOutOfBoundsException e){
System.out.println("Catch- - -2");
}
catch(Exception e){
System.out.println("Catch- - -3");)
}
}
A.Catch- - -1
B.Catch- - -2
C.Catch- - -3
D.以上都不对
B。【解析】由题可知先判断i
20,并且i从0开始一直到i=5时发生越界,则输出Cateh= =-2,结果为B。
23.下列包中,包含JOptionPane类的是( )。
A.javax.swing
B.java.lang
C.java.util
D.java.applet
A。【解析】Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,利用JOptionPane类中的各个static方法来生成各种标准的对话框,实现显示出信息、提出问题、警告、用户输入参数等功能,且这些对话框都是模式对话框。
24.下列选项中,与成员变量共同构成一个类的是( )。
A.关键字
B.方法
C.运算符
D.表达式
B。【解析】在类体中定义的两种成员,数据成员和成员函数,其中数据成员就是成员变量,而成员函数就是通常说的方法。
25.下列程序的功能是将一个整数数组写入二进制文件,在程序的下画线处应填入的选项是( )。
import java.io.*;
public class XieShuzu{
public static void main(String[]a){
int[]myArray=(10,20,30,40);
try{
DataOutputStream dos=
new DataOutputStream(new
FileOutput Stream("ints.dat"));
for(int i=0;i
dos. (myArray[i]);
dos.close();
System.OUt.println("已经将整数数组写入二进
制文件:ints.dat");
}catch(IOException ioe)
{System.OUt.println("IO Exeepr_on");)
}
}
A.writeArray B.writeByte
C.writeInt D.writeDouble
C。【解析】向流中写入整数数组,用writeInt方法。
26.Java中的抽象类Reader和Writer所处理的流是( )。
A.图像流
B.对象流
C.字节流
D.字符流
D。【解析]Reader/Writer所处理的流是字符流,InputStream/OutputStream的处理对象是字节流。
27.下列叙述中,错误的是( )。
A.内部类的名称与定义它的类的名称可以相同
B.内部类可用abstract修饰
C.内部类可作为其他类的成员
D.内部类可访问它所在类的成员
A。【解析】内部类与外部类的名称不能相同。
28.用于在子类中调用被重写父类方法的关键字是( )。
A.this
B.super
C.This
D.Super
B。【解析]super可用于调用被重写的父类方法,此题须注意Java对大小写敏感。
29.下列Java语句从指定网址读取html文件,在下画线处应填上的选项是( )。
Reader in=new——(new URL(urlString).
openStream());
A.Reader
B.DataOutputStream
C.ByteArray InputStream
D.InputStreamReader
A。【解析】创建一个Reader流的对象in。
30.下列不属于表达式语句的是( )。
A.++i;
B.--j;
C.b#a;
D.b*=a;
C。【解析】前两项是自加减运算,最后一项是b=b* a。
31.下列为窗口事件的是( )。 ,
A.MouseEvent
B.WindowEvent
C.ActionEvent
D.KeyEvent
B。【解析】MouseEvent是鼠标事件,ActionEvent是组件事件,KeyEvent是键盘事件。
32.用鼠标点击菜单项(Menultem)产生的事件是( )。
A.MenuEvent
B.ActionEvent
C.KeyEvent
D.MouseEvent
B。【解析】ActionEvent组件事件,当特定于组件的动作(比如被按下)发生时,由组件(比如Button)生成此高级别事件。事件被传递给每一个ActionListener对象,这些对象是使用组件的addActionListener方法注册的,用以接收这类事件。
33.下列不属于逻辑运算符的是( )。
A.!
B.||
C.&&
D.|
D。【解析】!是逻辑非,||是逻辑或,&&是逻辑与,︱是按位或。
34.当使用SomeThread t=new SomeThread()创建一个线程时,下列叙述中正确的是( )。
A.SomeThread类是包含run()方法的任意Java类
B.SomeThread类一定要实现Runnable接口
C.SomeThread类是Thread类的子类
D.SomeThread类是Thread类的子类并且要实现Run-
nable接口
C。【解析】由SomeThread t=new SomeThread()可知此题是通过继承Thread类来创建线程的。
35.在程序的下画线处应填入的选项是( )。
public class Test {:
public static void main(String args[]){
Test t=new Test();
Thread tt=new Thread(t);
tt.start();
}
public void run(){
for(int i=0;i<5;i++){
System.out.println("i="+i);
}
}
}
A.implements Runnable
B.extends Thread
C.implements Thread
D.extends Runnable
B。【解析】implements是实现接口,extends是继承类。Thread是‘类,Runnable是
接口,所以只有A、B选项语法是正确的。而Runnable是不能返回Static值,所以答案选择B。
36.为了支持压栈线程与弹栈线程之间的交互与同步,
在程序的下画线处依次填入的语句是( )。
public class IntStack{
private int idx=0;
private int[]data=new int[8];
public void push(int i){
data[idx]=i;
idx++;
… …
}
A.synchronized()
notify()
B.synchronized
this.wait()
C.synchronized
this.notify()
D.Serializable
sleep()
B。【解析】在Synchronized块中等待共享数据的状态改变时调用wait()方法,这样该线程进入等待状态暂时释放共享数据对象的锁。
37.如果线程正处于阻塞状态,不能够使线程直接进入可运行状态的情况是( )。
A.sleep()方法的时间到
B.获得了对象的锁
C.线程在调t.join()方法后,线程t结果
D.wait()方法结束
D。【解析】wait()方法会使线程放弃对象锁,进入等待此对象的等待锁定池。
38.当一个Applet被加载,后续对Applet生命周期方法的调用中,可能存在的次序是( )。
A.start(),stop(),destroy()
B.init(),start(),stop(),start(),stop(),destroy()
C.start(),init(),stop(),destroy()
D.init(),start(),destroy()
B。【解析】init()一般用来完成所有必需的初始化操作,start()是在初始化之后Applet被加载时调用,stop()在Applet停止执行时调用,destory()是Applet从系统中撤出时调用。
39.在HTML文件的标志中作为可选属性的是( )。
A.Applet主类的文件名
B.Applet显示区域的宽度
C.Applet主类的路径
D.Applet显示区域的高度
C。【解析】中可使用复了标志,其中的CODEBASE标志(指定URL地址),如果HTML不指定,浏览器使用和HTML文件相同的URL,所以答案选择C。
40.如果应用程序要在Applet上显示输出,则必须重写的方法是( )。
A.Graphics.drawString()
B.repaint()
C.paint()
D.update()
C。【解析】paint()是绘制Applet界面的基本方法。
二、基本操作题(共18分)
本题的功能是计算二维数组各个元素的和。程序中定义了二维数组arr,arr有3行4列共l2个元素,程序中采用for循环语句的嵌套来计算数组中各个元素的和,并将结果保存在sum变量中,最后打印输出结果。
public class javal{
public static void main(String[] args){
int arr[][]={{l,2,3,4},{5,6,7,8},{9,10,11,12}};
int sum=0;
int i=0,j=0;
for(i=0; )
for( )
;
System.OUt.println("sum="+sum);
}
}
第1处:i<3;i++或i<=2;i++
第2处:j=O;j<4;j++或j=0;j<=3;j++
第3处:sum=sum+arr[i][j]
【解析】第1处、第2处是由该数组是3行4列的数组而得出的遍历数组的循环条件;第3处是将数组元素累加并将最终累加结果赋给sum。
三、简单应用题(共24分)
本题是设计一个窗体,窗口的背景色为系统桌面的颜
色,在窗口中分别画了空心和实心的黑色矩形、深灰色圆角
矩形和浅灰色椭圆形,并且画了白色粗体的“Java二级考
试!”字符串。
Import java.awt.*;
Import javax.swing.*;
Public class java2
{
Public static void main(string[]args)
{
Fillframe frame=new fillframe();
Frame. setdefaultcloseoperatio (jframe. exit_on_
close);
Frame.show();
}
}
Class fillframe extends jframe
{
Public fillframe()
{
Settitle("simple");
Setsize(width,height);
Fillpanel panel=new fillpanel();
Panel.setbackground(systemcolor.desktop);
Container contentpane=getcontentpane();
Contentpane.add(panel);
}
Public static final int width=400;
Public static final int width=250;
}
Class fillpanel extends jpanel
{
Public void paintcomponent(graphics g)
{
;
g.setcolor(new color(10,10,10));’
g.drawrect(10,10,100,30);
g.seteolor(new color(100,100,l00));
g.drawroundrect(150,10,100,30,15,15);
g.setcolor(new color(150,150,150));
g.drawoval(280,10,80,30);
g.setcolor(new color(10,10,10));
g.fillreet(10,110,100,30);
g.setcolor(new color(100,100,100));
g.drawroundreet(150,110,100,30,15,15);
g.seteolor(new color(150,150,150));
g.filloval(280,110,80,30);
g.setcolor(color.white);
font f=new font("宋体",_ _,20);
g.setfont(f);
g.drawstring("java二级考试!",l50,200);
}
}
第l处:super.paintComponent(g);
第2处:Font.BOLD
【解析】第1处是通过super语句调用父类的构造方法paintComponent(g)。第2处是通过字体对象的构造函数,设置“Java二级考试!”格式,题目要求是粗体,所以大Font.BOLD。
四、综合应用题(共18分)
本题的功能是监听鼠标的操作。鼠标置于窗口中单击时(左键或右键),在单击的地方会画一个小矩形,如果将鼠标置于小矩形上,则鼠标光标状态改为小十字,按下鼠标左键可拖曳,双击鼠标左键(或右键)时,小矩形消失。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
public class java3
{
public static void main(String[]args)
{
MouseFrame frame=new MouseFrame():
frame.setDefaultCloseOperation(JFrame.EXIT_
oN_CLOSE);
frame.show();
}
}
class MouseFrame extends JFrame
{
public MouseFrame()
{
setTitle("java3");
setSize(DEFAULT WIDTH, DEFAULT
HEIGHT):
MousePanel panel=new MousePanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=200;
}
class MousePanel extends JPanel
{
public MousePanel()
{
squares=new ArrayList();
current=null:
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHan-
dler());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
for(int i=0;i
g2.draw((Rectangle2D)squares.get(i));
}
public void find(Point2D p)
{
for(int i=0;i
{
Rectangle2D r=(Rectangle2D)squares.get(i);
if(r.contains(p))return r;
}
return null:
}
public void add(Point2D p)
{
double x=P.getX();
double Y=P.getY():
current=new Rectangle2D.Double(
x-SIDELENGTH/2.
y-SlDELENGTH/2.
S1DELENGTH,
SIDELENGTH);
squares.add(current);
repaint();
}
public void remove(Rectangle2D s)
{
if(S= =null)return:
if(S= =current)current=null;
squares.remove(s):
repaint();
}
private static final int SIDELENGTH=10:
private ArrayList squares;
private Rectangle2D current;
private class MouseHandter extends MouseAction-
Listener
{
public void mousePressed(MouseEvent event)
{
current=find(event.getPoint());
if(current= =null)
add(event.getPoint());
}
public void mouseClicked(MouseEvent event)
{
current=find(event.getPoint());
if(current!=null&&event.getClickCount()
>=2)
remove(current);
}
}
private class MouseMotionHandler implements Mouse-
MotionListener
{
public void mouseMoved(MouseEvent event)
{
if(find(event.getPoint)= =null)
setCursor(Cursor.getDefaultCursor());
else
setCursor(Cursor.getPredefinedCursor
(Cursor.CROSSHAIR_CURSOR));
}
public void mouseDragged(MouseEvent event)
{
if(current!=null)
{
int x=event.getX():
int Y=event.getY(); 、
current.setFrame(
x-SIDELENGTH/2,
Y-SlDELENGTH/2.
SIDELENGTH,
SIDELENGTH);
repaint();
}
}
}
}
第1处:public Rectangle2D find(Point2D p)
第2处:private class MouseHandler extends MouseAdaopter
第3处:find(event.getPoint())= =null
【解析】第1处定义一个返回类型为Rectangle2D的find函数且有一个Point2D型的形参;第2处定义了继承鼠标适配器MouseAdapt的MouseHandler;第3处判断find函数的返回值是否为空。
展开阅读全文