【计算机二级Java语言】卷014

选择题

公共知识

【1】下列叙述中错误的是()。
〖A〗算法的时间复杂度与问题规模无关
〖B〗算法的时间复杂度与计算机系统无关
〖C〗算法的时间复杂度与空间复杂度没有必然的联系
〖D〗算法的空间复杂度与算法运行输出结果的数据量无关
算法的时间复杂度是指执行算法所需要的计算机工作量, 而算法的计算机工作量是用算法所执行的基本运算次数来度量的, 算法所执行的基本运算次数和问题的规模有关。
算法的空间复杂度指执行这个算法所需要的内存空间。
为降低算法的空间复杂度, 主要应减少输入数据所占的存储空间及额外空间, 通常采用压缩存储技术。
由于在编程时要受到计算机系统运行环境的限制, 因此, 程序的编制通常不可能优于算法的设计。
算法执行时所需要的计算机资源越多算法复杂度越高, 因此算法的复杂度和问题规模成正比。
算法设计时要考虑算法的复杂度, 问题规模越大越是如此。

算法的时间复杂度与空间复杂度没有必然的联系。
算法的空间复杂度与算法运行输出结果的数据量无关。
故本题答案为A选项。

【2】设表的长度为20。则在最坏情况下, 冒泡排序的比较次数为()。
〖A〗190
〖B〗20
〖C〗19
〖D〗90
对长度为n的线性表排序, 在最坏情况下, 冒泡排序需要比较的次数为n(n - 1) / 2。
本题中n = 20, 20×(20 - 1) / 2 = 190。
故本题答案为A选项。
【3】下列叙述中正确的是()。
〖A〗带链栈的栈底指针是随栈的操作而动态变化的
〖B〗若带链队列的队头指针与队尾指针相同, 则队列为空
〖C〗若带链队列的队头指针与队尾指针相同, 则队列中至少有一个元素
〖D〗带链栈的栈底指针是固定的
由于带链栈利用的是计算机存储空间中的所有空闲存储结点, 因此随栈的操作栈顶栈底指针动态变化。
带链的队列中若只有一个元素, 则首尾指针相同。
故本题答案为A选项。
【4】设一棵树的度为3, 共有27个结点, 其中度为3, 2, 0的结点数分别为4, 1, 10。该树中度为1的结点数为()。
〖A〗12
〖B〗13
〖C〗11
〖D〗不可能有这样的树
在树结构中, 一个结点所拥有的后件个数称为该结点的度, 所有结点中最大的度称为树的度。

根据题意, 度为3的树第1层1个根结点, 第2层3个子结点, 每个子结点下各3个子结点, 所以第3层共9个子结点, 前3层共13个结点。
第3层有一个结点度为2即有2个子结点, 本层其他结点各1个子结点;
即第4层共10个结点。
前4层共23个结点。
第4层中的两个结点下各有一个子结点, 即第5层有2个结点, 此2个结点下各有一个子结点。

第3层有8个度为1的结点, 第4层有2个度为1的结点, 第5层有2个度为1的结点, 8 + 2 + 2 = 12。
故本题答案为A选项。

【5】下面描述中正确的是()。
〖A〗好的软件设计应是高内聚低耦合
〖B〗内聚性和耦合性无关
〖C〗内聚性是指多个模块间相互连接的紧密程度
〖D〗耦合性是指一个模块内部各部分彼此结合的紧密程度
软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的要求, 以保证模块划分合理, 并进一步保证以此为依据开发出的软件系统可靠性强, 易于理解和维护。
模块之间的耦合应尽可能的低, 模块的内聚度应尽可能的高。
故本题答案为A选项。
【6】某系统总体结构如下图所示

该系统结构图的最大扇出数、最大扇入数的总和是()。
〖A〗5
〖B〗7
〖C〗4
〖D〗8
模块的扇出是指本模块的直属下层模块的个数。
或者说是由一个模块直接调用的其他模块数。
模块的扇入是指有多少个上级模块调用它。
题干中某系统为一个模块, 其扇出数目为3, 功能2模块扇出数为3, 功能3模块扇出数为2, 功能2.2扇出数目为2, 故最大扇出数为3。
功能2.2.2有2个上级模块调用, 为最大扇入数。
3 + 2 = 5。
故本题答案为A选项。
【7】下面属于应用软件的是()。
〖A〗人事管理系统
〖B〗Oracle数据库管理系统
〖C〗C++编译系统
〖D〗ios操作系统
系统软件是管理计算机的资源, 提高计算机的使用效率, 为用户提供各种服务的软件, 包括各种系统开发、维护工具软件。
应用软件是为了应用于特定的领域而开发的软件。
人事管理系统属于应用软件。
Oracle数据库管理系统、C++编译系统、ios操作系统是系统软件。
故本题答案为A选项。
【8】下面选项中不是关系数据库基本特征的是()。
〖A〗不同的列应有不同的数据类型
〖B〗不同的列应有不同的列名
〖C〗与行的次序无关
〖D〗与列的次序无关
二维表由每行数据组成, 每行数据包含若干属性值, 每个属性都有指定的类型和取值范围。
数据行数是有限的, 每行数据互不相同(元组唯一性), 每行的次序可以任意交换(元组的次序无关性); 表中属性名各不相同即字段名不重复, 属性名(字段名)次序可任意交换。
故本题答案为A选项。
【9】工厂生产中所需的零件可以存放在多个仓库中, 而每一仓库中可存放多种零件。则实体仓库和零件间的联系是()。
〖A〗多对多
〖B〗一对多
〖C〗多对一
〖D〗一对一
零件可以存放在多个仓库中, 而每一仓库中可存放多种零件, 则实体仓库和零件间的联系是多对多。
故本题答案为A选项。
【10】学生和课程的关系模式定义为
S(S#, Sn, Sd, Dc, SA)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);
C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课);
SC(S#, C#, G)(其属性分别学号、课程号和成绩)。
关系中包含对主属性传递依赖的是()。
〖A〗S#→Sd, Sd→Dc
〖B〗S#→Sd
〖C〗S#→Sd, (S#, C#)→G
〖D〗C#→P#, (S#, C#)→G
设X、Y、Z是关系R中互不相同的属性集合, 存在X→Y(Y !→X), Y→Z, 则称Z传递函数依赖于X。
在S中S#→Sd, Sd→Dc, 则Dc传递函数依赖于S#。
故本题答案为A选项。

专业知识

【11】下列选项中, 能将Java源程序编译为字节码的命令是
〖A〗javac
〖B〗javap
〖C〗java
〖D〗javah
javap, javah, java不是java的工具, javac是编译java的工具将源程序

编译为字节码;
故答案选A.

【12】下列方法能够通过编译的是
〖A〗Public void add() { }
〖B〗public Void Add() { }
〖C〗public void Add() { }
〖D〗Public Void Add() { }
java官方规定中public 是权限修饰符, 应全部小写, 返回值类型void也应全部小写, 故答案选 C.
【13】下列变量定义中, 错误的是
〖A〗int x = 3;
〖B〗double f = 2.5;
〖C〗String s = "Hello!";
〖D〗boolean b = 1;
boolean值类型的值只能是true和false, 故D错误, 本题答案为D。
【14】在Java中, 若要使用一个包中的类, 首先要对该包进行引入, 引入的关键字是
〖A〗import
〖B〗package
〖C〗include
〖D〗packet
java中引入包的关键字为import.Package是包, packet也是包, 不过比Package小, 指令include的写法如下:<%@ include file = "xxxxx"%>它就是一种简单的包含以实现代码重用, JSP编译时就会包含进来, 不会产生请求, 故本题选A
【15】下列选项中, 不属于关系运算符的是
〖A〗!=
〖B〗==
〖C〗&&
〖D〗>
&&属于逻辑运算符, 故C错。
本题答案为C。
【16】下列代码段执行后, t的值为
int a = 3, b = 2, c = 8, t = 0;
t = a < b ? a : b < c ? b : c;
〖A〗0
〖B〗2
〖C〗3
〖D〗8
a < b?结果是false, 则得到的值是b, b < c?结果是true, 故得到的值是b, 将b赋值给t, 故t为2, 选项B正确, 本题答案为B。
【17】下列代码段执行后, y的值为
int x = 128, y;
y = 0;
while (x > 1) {
    x = x / 2;
    y++;
}
〖A〗0
〖B〗6
〖C〗7
〖D〗8
/运算符在java做取整操作, x / 2总共进行了6次, y++中++在后先参与运算再自身+1, 本题答案为C。
【18】下列代码段执行后, s的值为
int s = 0;
for (int i = 1; i <= 10; i++) {
    if (i % 5 == 0)
        break;
    s = s + i;
}
〖A〗10
〖B〗15
〖C〗50
〖D〗55
for循环中i进行到5时, break跳出循环不进行s = s + i操作, 之前累加为s = 0 + 1; s = 1 + 2; s = 3 + 3; s = 6 + 4故选A。
本题答案为A。
【19】下列代码段执行后, n的值为
int n = 0;
for (int i = 6; i >= 1; i -= 2) {
    n = 0;
    for (int j = 1; j <= 2 * i - 1; j++)
        n++;
}
〖A〗1
〖B〗3
〖C〗6
〖D〗12
第一次循环 i = 6, i >= 1; i -= 2就是i = i - 2, 故i = 4; 此时n = 0, 进入内循环

j = 1, j < 7, n = 1依次类推直到不满足条件为止, 最终结果为3, 本题答案为B。

【20】下列代码段执行后的结果是
int[] a = new int[5];
for (int i = 0; i < 5; i++)
    a[i] = 2 * i - 1;
for (int i = 0; i < 5; i++)
    if (a[i] == i)
        System.out.println("" + i);
〖A〗0
〖B〗1
〖C〗2
〖D〗4
for循环不加 { } 默认里面只有一个语句, 故当第一个for循环执行完毕时a[0] = -1, a[1] = 1, a[2] = 3, a[3] = 5, a[4] = 7, 当第二个for循环进行到i = 1 a[1] = 1进入if语句才能打印一条语句, 打印为1, 故选B。
本题答案为B。
【21】若有语句Class c0 = Class.forName("java.util.Date"), 下列选项中可得到Date父类的是
〖A〗c0.getModifiers()
〖B〗c0.getSuperclass()
〖C〗c0.getMethod()
〖D〗c0.getDeclaredMethods()
getModifiers()方法返回底层成员的Java语言修饰符, 选项A错误

getSuperclass()方法返回当前对象所表示的类的超类。
选项B正确

GetMethod()该方法是获取本类以及父类或者父接口中所有的公共方法, 选项C错误

getDeclaredMethods()该方法是获取本类中的所有方法, 包括私有的(private、protected、默认以及public)的方法。
选项D错误

本题答案为B。

【22】对象的特性在类中被表示为变量, 称为类的
〖A〗对象
〖B〗属性
〖C〗方法
〖D〗数据类型
对于java中的类, 每个类中都可以有属性和方法。

类属性又可以叫做成员变量, 本题答案为B

【23】下列语句执行后, a的值为
String str = "Programming";
char a = str.charAt(4);
〖A〗g
〖B〗r
〖C〗空格
〖D〗null
charAt()是String类的一个方法, 下标从0开始找对应下标的字符, 本题字符为r, 故本题选B
【24】语句String[][] s = new String[4][]; 定义了
〖A〗一维数组
〖B〗一个串
〖C〗十六个串
〖D〗二维数组
二维数组可以简单理解为在数组中又存储了数组

初始化可以有如下几种:数据类型 数组名[][] = new 数据类型[m][n]数据类型[][]数组名=new 数据类型[m][n]数据类型[]数组名[] = new 数据类型[m][n]故本题答案为D。

【25】下列程序段的运行结果是
int[][] a = { { 1, 4, 3, 2 }, { 8, 6, 5, 7 }, { 3, 7, 2, 5 }, { 4, 8, 6, 1 } };
int i, j, k, t;
for (i = 0; i < 4; i++) {
    for (j = 0; j < 3; j++) {
        for (k = j + 1; k < 4; k++)
            if (a[j][i] > a[k][i]) {
                t = a[j][i];
                a[j][i] = a[k][i];
                a[k][i] = t;
            }
    }
}
for (i = 0; i < 4; i++)
    System.out.print(a[i][i] + " ");
〖A〗1 6 5 7
〖B〗8 7 3 1
〖C〗4 7 5 2
〖D〗1 6 2 1
本题首先定义了一个4行4列的二维数组, 并用了三层for循环来进行由小到大的排序。
外层循环变量i表示数组的列.第二层循环变量j表示数组的行, 第三层循环用于求第i列第j行的最小值, 其中通过if语句对相关数值进行比较和交换。
最后通过for循环对排序后数组对角线上的元素输出。
选项A正确, 本题答案为A。
【26】如果要处理捕获的异常, 应该采用的子句是
〖A〗catch
〖B〗throw
〖C〗try
〖D〗finally
B为抛出异常, try为寻找异常, finally是最终的意思, finally语句里面是无论如何都需要执行的, 经常用来关闭流等操作, 故本题选A
【27】下列程序段执行时会产生的异常是
int[] iArray = new int[5];
iArray[5] = 3;
〖A〗ArrayIndexOutOfBoundsException
〖B〗DividedByZeroException
〖C〗NullPointerException
〖D〗ArithmeticException
A为数组下标越界异常, B为被除数为0异常 比如4 / 0 C为空指针异常, D为ArithmeticException是出现异常的运算条件时, 抛出此异常, 本题答案为A
【28】下列选项中实现了Set接口的类是
〖A〗HashSet
〖B〗LinkedList
〖C〗Vector
〖D〗ArrayList
A实现了Set接口, B, C, D实现的是List接口, 本题答案为A
【29】下列关于字节流的说法中, 错误的是
〖A〗字节流又可以分为字节输入流和字节输出流
〖B〗字节流又称为二进制流
〖C〗字节流是抽象类Reader的子类
〖D〗字节流的类存在于java.io包中
字节流可以分为字节输入流和字节输出流, 且又称为二进制流

存在于java.io包中, 但不是Reader的子类, 故本题答案选C

【30】下列选项中属于抽象类的是
〖A〗InputStream
〖B〗FileStream
〖C〗FilterStream
〖D〗FlaterStream
本题考查Java的I / 0流。
java.io包中处理字节流的抽象类有InputStream和OutputStream。
InputStream用于输入, 它包含7个子类:Output用于输出, 它包含5个子类。
因此, 本题的正确答案是选项A。
【31】下列叙述中正确的是
〖A〗Writer是一个写字符文件的接口
〖B〗Writer是一个写字符文件的抽象类
〖C〗Writer是一个写字节文件的一般类
〖D〗Writer是一个写字节文件的抽象类
Writer是一个抽象类, 并且它是通过字符来复制文件的, 本题答案为B
【32】下列代码实现了从一个文件中读取字符并输出的功能。下划线处应填入的代码是
import java.io.*;
public class test {
    public static void main(String[] args) {
        String str = "";
        String r = "";
        try {
            BufferedReader br = new BufferedReader(new ______________("d:\\test.txt"));
            while ((r = br.readLine()) != null) {
                Str += r;
            }
            System.out.println(str);
        } catch (IOException e) {
            System.out.println("文件读取错误!");
        }
    }
}
〖A〗Reader
〖B〗Buffer
〖C〗FileReader
〖D〗BufferedReader
FileReader用带有指定文件的String参数的构造方法。
创建该输入流对象。
并关联源文件读取文件中的字符。
本题答案为C。
【33】下列选项中不属于MouseListener接口的方法是
〖A〗mouseDragged
〖B〗mousePressed
〖C〗mouseClicked
〖D〗mouseEntered
MouseMotionListener接口实现对鼠标移动事件的监听, 包括2个方法:mouse Moved(MouseEvent)和mouDragged(MouseEvent)。
选项A说法错误, 本题答案为A。
【34】为窗口注册监听器所使用的方法是
〖A〗addActionListener
〖B〗addWindowListener
〖C〗addListenerAction
〖D〗addListenerWindow
本题考查事件监听器的概念。
每类事件都有对应的事件监听器, 监听器是接口, 根据动作来定义方法。
AWT的构件类中提供注册监听器的方法。
注册监听器:public void add<ListenerType>(<ListenerType>listener)。
由此可见, 选项B正确。
本题答案为B。
【35】下面的代码运行后得到的结果是
import javax.swing.*;
public class test {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Good Morning!", "消息", JOptionPane.WARNING_MESSAGE);
    }
}
〖A〗
〖B〗
〖C〗
〖D〗
WARNING_MESSAGE属于警告, 故只有D是警告提示, A是错误提示

C没有提示, 故本题答案选D

【36】下列选项中, 反映Java并行程序设计特点的是
〖A〗简单性
〖B〗可移植
〖C〗安全性
〖D〗多线程
Java反映并行设计的特点是多线程, 可移植是java虚拟机机制, 简单是java面向对象由于面向过程。
Java的安全体现在封装, 异常等, 故本题选D
【37】阅读下列程序:
public class ThreadTest4 extends Thread {
    int i = 0;
    public static void main(String[] args) {
        Thread t1 = new ThreadTest4();
        Thread t2 = new Thread();
        t1.start();
        t2.start();
    }
    public void run() {
        while (i <= 2) {
            System.out.println("i = " + i);
            i++;
        }
    }
}
下列选项中, 错误的是
〖A〗线程t1的线程体是ThreadTest4类中的run()方法
〖B〗线程t2的线程体是Thread类中的run()方法
〖C〗程序运行结果是 i = 0 i = 0 i = 1 i = 1 i = 2 i = 2
〖D〗程序运行结果是 i = 0 i = 1 i = 2
线程t1的线程体是ThreadTest4类中的run()方法, 线程t2的线程体是Thread类中的run()方法, 程序运行结果是, i = 0, i = 1, i = 2

选项C正确, 本题答案为C。

【38】线程在调用下列方法后, 其状态可能保持不变的是
〖A〗sleep()
〖B〗yield()
〖C〗join()
〖D〗stop()
C排队等待状态, D是停止状态, sleep()方法会给其他线程运行的机会, 而不考虑其他线程的优先级, 因此会给较低线程一个运行的机会; yield()方法只会给相同优先级或者更高优先级的线程一个运行的机会。
选项B正确, 本题答案为B。
【39】下列方法中, 不属于Applet生命周期方法的是
〖A〗init()
〖B〗start()
〖C〗stop()
〖D〗paint()
Applet的生命周期中有四个状态:初始态、运行态、停止态和消亡态。
当程序执行完init()方法以后, Applet程序就进入了初始态; 然后马上执行start()方法, Applet程序进入运行态; 当Applet程序所在的浏览器图标化或者是转入其它页面时, 该Applet程序马上执行stop()方法, Applet程序进入停止态; 在停止态中, 如果浏览器又重新装载该Applet程序所在的页面, 或者是浏览器从图标中复原, 则Applet程序马上调用start()方法, 进入运行态; 当然, 在停止态时, 如果浏览器关闭, 则Applet程序调用destroy()方法, 进入消亡态, 故本题选D
【40】下列代码包括一个HTML文件和一个定义Applet类的Java程序。为了使HTML文件在浏览器中运行时显示" A nice day! ", 在下划线处应填入的代码是
/*hello2.html*/
<HTML><HEAD><TITLE > Hello</TITLE></HEAD><BODY><APPLET CODE = " __________ " WIDTH = 150 HEIGHT = 25></APPLET></BODY></HTML>/*AppletTest2.java*/
import java.awt.*;
import javax.swing.*;
import java.applet.*;
public class AppletTest2 extends ______ {
    public void paint(Graphics g) {
        g.drawString("A nice day!", 25, 25);
    }
}
〖A〗AppletTest2.class, JApplet
〖B〗AppletTest2, JApplet
〖C〗AppletTest2.java, Applet
〖D〗AppletTest2, Applet
本题考查HTML和java结合的综合题, 想要输出" A nice day !CODE里面填的是下面的java文件, JApplet它的主要用处是:镶嵌在网页中, 在网页中标签之间加入自己继承了JApplet类的class文件的路径, 客户端如果有JVM的话就能够浏览你编写的程序了, 故本题答案为A

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
对Java_1.java文件进行完善并调试, 使程序的输出结果如下:
字符串 "现在学习如何访问一个字符串"
字符串长度:13
其中第7个字符是:访
从字节数组的第7到12获取字符是:访问一个字符
1.main 2.string.length()3.charAt
本题考查的是考生对String类相关方法的掌握
填空1 : java中执行程序的方法入口为main函数
填空2:获取字符串长度的方法为length()
填空3:返回指定位置的字符为charAt().
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
打开一个文本文件test.txt, 统计该文件中包含的数字的个数与英文字母的个数(忽略大小写)。例如test.txt文本文件中包含的内容为"123abcDEF99G", 则程序的输出结果如下:
数字数是 5, 字母数是 7
1.byte 2.try 3.new FileInputStream 4.close
本题考查考生对io流读写的操作
填空1:数组的定义为 数组类型[]数组名=new 数组类型[数组长度]; 后面为byte类型, 前面也应为byte类型
填空2:处理异常, 文件在读取的时候可能会出现FileNotFondException异常, 用try catch处理
填空3:文件在操作的时候必须创建实例对象
填空4:流在使用结束的时候要释放所占用的资源, 节省开销
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
用冒泡法对数据进行排序, 使程序的输出结果如下:
排序前:
32 18 41 23 2 56 36 67 59 20
排序后:
2 18 20 23 32 36 41 56 59 67
1.length 2.index 3.temp
本题考查考生对冒泡排序法的掌握
填空1:获取数组的长度用length属性
填空2:调用BubbleSort()对数组中所有元素进行排序, 传入具体的元素个数
填空3:通过中间量将两个数据进行互换, 最终要将临时变量temp赋给其中一个元素位置
posted @ 2020-03-10 15:17  M了个J  阅读(906)  评论(0编辑  收藏  举报