【計算機二級Java語言】卷008


選擇題

公共知識

【1】下列關於棧敘述正確的是()。
〖A〗棧頂元素最先能被刪除
〖B〗棧頂元素最后才能被刪除
〖C〗棧底元素永遠不能被刪除
〖D〗棧底元素最先被刪除
棧是先進后出的數據結構, 所以棧頂元素最后入棧卻最先被刪除。
棧底元素最先入棧卻最后被刪除。
所以選擇A。
【2】下列敘述中正確的是()。
〖A〗在棧中, 棧中元素隨棧底指針與棧頂指針的變化而動態變化
〖B〗在棧中, 棧頂指針不變, 棧中元素隨棧底指針的變化而動態變化
〖C〗在棧中, 棧底指針不變, 棧中元素隨棧頂指針的變化而動態變化
〖D〗以上說法均不正確
棧是先進后出的數據結構, 在整個過程中, 棧底指針不變, 入棧與出棧操作均由棧頂指針的變化來操作, 所以選擇C。
【3】某二叉樹共有7個結點, 其中葉子結點只有1個, 則該二叉樹的深度為(假設根結點在第1層)()。
〖A〗3
〖B〗4
〖C〗6
〖D〗7
根據二叉樹的基本性質3:在任意一棵二叉樹中, 多為0的葉子結點總比度為2的結點多一個, 所以本題中度為2的結點為1 - 1 = 0個, 所以可以知道本題目中的二叉樹的每一個結點都有一個分支, 所以共7個結點共7層, 即度為7。
【4】軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬於應用軟件的是()。
〖A〗學生成績管理系統
〖B〗C語言編譯程序
〖C〗UNIX 操作系統
〖D〗數據庫管理系統
軟件按功能可以分為:應用軟件、系統軟件、支撐軟件。
操作系統、編譯程序、匯編程序、網絡軟件、數據庫管理系統都屬於系統軟件。
所以B、C、D都是系統軟件, 只有A是應用軟件。
【5】結構化程序所要求的基本結構不包括()。
〖A〗順序結構
〖B〗GOTO跳轉
〖C〗選擇(分支)結構
〖D〗重復(循環)結構
1966年Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。
【6】下面描述中錯誤的是()。
〖A〗系統總體結構圖支持軟件系統的詳細設計
〖B〗軟件設計是將軟件需求轉換為軟件表示的過程
〖C〗數據結構與數據庫設計是軟件設計的任務之一
〖D〗PAD圖是軟件詳細設計的表示工具
詳細設計的任務是為軟件結構圖中而非總體結構圖中的每一個模塊確定實現算法和局部數據結構, 用某種選定的表達工具表示算法和數據結構的細節, 所以A錯誤。
【7】負責數據庫中查詢操作的數據庫語言是()。
〖A〗數據定義語言
〖B〗數據管理語言
〖C〗數據操縱語言
〖D〗數據控制語言
數據定義語言:負責數據的模式定義與數據的物理存取構建; 數據操縱語言:負責數據的操縱, 包括查詢及增、刪、改等操作; 數據控制語言:負責數據完整性、安全性的定義與檢查以及並發控制、故障恢復等功能。
【8】一個教師可講授多門課程, 一門課程可由多個教師講授。則實體教師和課程間的聯系是()。
〖A〗1 : 1聯系
〖B〗1 : m聯系
〖C〗m : 1聯系
〖D〗m : n聯系
解析】因為一個教師可講授多門課程, 而一門課程又能由多個老師講授所以他們之間是多對多的關系, 可以表示為m : n。
【9】有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。
〖A〗自然連接
〖B〗
〖C〗
〖D〗
關系T中的元組是關系R中有而關系S中沒有的元組的集合, 即從關系R中除去與關系S中相同元組后得到的關系T。
所以做的是差運算。
【10】定義無符號整數類為UInt, 下面可以作為類UInt實例化值的是()。
〖A〗-369
〖B〗369
〖C〗0.369
〖D〗整數集合 { 1, 2, 3, 4, 5 }
只有B選項369可以用無符號整數來表示和存儲。
A選項-369有負號, 選項C0.369是小數都不能用無符號整數類存儲, 選項D是一個整數集合得用數組來存儲。

專業知識

【11】下列說法中, 錯誤的是
〖A〗子類的派生過程稱為類的繼承
〖B〗封裝是面向對象技術中隱蔽信息的一種機制
〖C〗方法名相同, 參數類型或個數不同, 稱為重載
〖D〗Java語言中, "方法"是程序封裝的最小單位
程序封裝的最小單位是屬性, 不是方法。
本題答案為D選項。
【12】Java中有效的注釋聲明是
I.//This is a comment
II./**This is a comment*/
III./This is a comment
IV./*This is a comment*/
〖A〗I, IV
〖B〗IV
〖C〗I, II, IV
〖D〗I
Java中注釋有三種方式:(1)單行注釋"//"(2)多行注釋"/* */"(3)文檔注釋"/** */"。
本題答案為C選項。
【13】若已有int s = 5; 則下列表達式的類型為整型的是
〖A〗1.0 * s
〖B〗(float) s
〖C〗s + 1.0
〖D〗s /= 2
double類型與int類型相乘, 結果為double, "1.0 * s"為double型; int類型的s被強轉為float類型, "(float)s"為float型; int類型與double類型相加, 結果為double, "s + 1.0"為double型; 兩個int類型的值進行數學運算結果還是int類型, "s /= 2"為整型。
本題答案為D選項。
【14】若已有int x = 345; 則下列表達式的值與其他三個選項不同的是
〖A〗x % 10
〖B〗x / 100 + 1
〖C〗x % 100 / 10
〖D〗x / 10 % 10
A選項中, "345%10"結果為5; B選項中"345/100+1"等於4; C選項中"345%100/10"等於4; D選項中"345/10%10"等於4。
本題答案為A選項。
【15】下列表達式中不能使x的值增1的是
〖A〗x += 1
〖B〗x + 1
〖C〗x++
〖D〗++x
"x+=1"、"++x"、"x++"都可以使自身的值加1; "x+1"並沒有重新賦值。
本題答案為B選項。
【16】下列代碼段執行后, k的值為
char ch = 'a';
int k = 0;
switch (ch) {
    case 'a':
        k = k + 1;
    case 'b':
        k = k + 2;
        break;
    case 'c':
        k = k + 3;
        break;
}
〖A〗1
〖B〗2
〖C〗3
〖D〗6
switch語句中, break的作用是防止case滲透。
因為ch = 'a', 執行switch語句的case'a'子句, k = 1。
這里沒有break語句, 接着執行case'b', 此時k = 3, 接着執行break語句, 跳出switch語句。
本題答案為C選項。
【17】下列代碼段執行后, a的值為
int a = 1;
for (int k = 0; k < 10; k++) {
    a = a * 2;
}
〖A〗2
〖B〗32
〖C〗512
〖D〗1024
程序中, for循環一共循環10次, 變量a累乘2, 等價於2 ^ 10 = 1024。
本題答案為D選項。
【18】下列代碼段執行后的結果是
int x = 1;
while (x < 15) {
    System.out.print("  " + x);
    x = x + 3;
}
〖A〗1 3 5 7 9 11 13
〖B〗1 4 7 10 13
〖C〗1 3 5 7 9 11 13 15
〖D〗1 4 7 10 13 16
本題主要考查while循環。
當x的值小於15才會進入循環體中執行x = x + 3語句。
當x = 1時可以進入循環體, 執行完x = x + 3后x為4, 以此類推直到x大於15跳出循環。
本題答案為B選項。
【19】下列代碼段執行后, a[3]的值為
int[] a = { 1, 3, 5, 7, 9 };
int t;
for (int i = 0; i < 3; i++) {
    t = a[i];
    a[i] = a[4 - i];
    a[4 - i] = t;
}
〖A〗1
〖B〗3
〖C〗5
〖D〗7
此程序主要實現數組元素的交換。
第一位和最后一位, 第二位和倒數第二位……。
元素a[3] = 7與元素a[1] = 3交換, 交換后a[1] = 7, a[3] = 3。
本題答案為B選項。
【20】下列代碼段執行后的結果是
int k, s = 0;
for (int x = 3; x <= 10; x++) {
    for (k = 2; k < x; k++)
        if (x % k == 0)
            break;
    if (k == x)
        s = s + x;
}
System.out.println(" " + s);
〖A〗0
〖B〗52
〖C〗37
〖D〗15
本題考查循環嵌套。
外層循環的變量x的值分別為:3、4、5、6、7、8、9、10。
內循環是:x分別求余2 ~ x - 1之間的所有數。
如果能整除則退出循環。
並判斷x與k是不是相等, 如果相等累加x的值。
此過程本質是判斷變量x是不是質數, 如果是質數累加x到s。
當x為3、5、7時會累加到s, 則s的值為15。
本題答案為D選項。
【21】下列選項中, 與成員變量共同構成一個類的是
〖A〗關鍵字
〖B〗方法
〖C〗運算符
〖D〗表達式
一個類中包含屬性(成員變量)與方法。
本題答案為B選項。
【22】請閱讀下面程序
public class ExampleStringBuffer {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("test");
        System.out.println("buffer =" + sb);
        System.out.println("length =" + sb.length());
    }
}
程序運行結果中在"length="后輸出的值是
〖A〗10
〖B〗4
〖C〗20
〖D〗30
創建一個StringBuffer, 初始化值為test, 長度為4。
Length()方法是求一求StringBuffer類的長度。
本題答案為B選項。
【23】在當前目錄下存在文件"record.txt", 則下列代碼的運行結果是
public void test() {
    String s[] = new String[10];
    try {
        FileInputStream fis = new FileInputStream("record.txt");
        s[9] = "exception";
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println("exception 1");
    } catch (IOException e) {
        System.out.println("exception 2");
    } finally {
        System.out.println("over");
    }
}
〖A〗exception
〖B〗exception 1
〖C〗exception 2
〖D〗over
"record.txt"文件在當前文件夾, 可以直接訪問, 不會拋IOException異常; 創建一個長度為10的字符串數組, s[9]是第10個元素, 不會拋ArrayIndexOutOfBoundsException異常; 程序中沒有異常拋出, 執行finally子句。
輸出語句為"over"。
本題答案為D選項。
【24】下列能正確定義二維浮點數數組的是
〖A〗float f[][] = new float[7, 7];
〖B〗float f[7][7] = new float[][];
〖C〗float f[][] = new float[7][7];
〖D〗float f[7, 7] = new float[][];
二維數組聲明的方式為:數組類型[][]數組名=new 數組類型[][]。
聲明數組不能在中括號內加入數組長度。
本題答案為C選項。
【25】定義一個類, 要求其中的成員變量可以被該類的所有子類訪問, 但不能被與該類不在同一個包中的非子類訪問, 則成員變量的訪問權限是
〖A〗public
〖B〗private
〖C〗protected
〖D〗default
public可以被所有的類訪問; private只能被本類, protected可以被本類和同一個包中的類及其子類訪問, default不是權限修飾符。
本題答案為C選項。
【26】下列給整型二維數組進行賦值的語句中, 錯誤的是
〖A〗int i[][] = { { 1, 2 }, { 3, 4 } };
〖B〗int i[2][2] = { { 1, 2 }, { 3, 4 } };
〖C〗int i[][] = { { 0 }, { 1, 2 }, { 3, 4 } };
〖D〗int i[][] = { { 0 }, { 1, 2, 3, 4 } };
【解析二維數組聲明的方式為:數組類型[][]數組名=new 數組類型[][], 聲明時, 不能在數據類型中的[]添加參數。
本題答案為B選項。
【27】下列可加入類Dog中的方法是
public class Animal {
    protected void bark() {
        …
    }
}
class Dog extends Animal {
}
〖A〗public void bark() { … }
〖B〗void bark() { … }
〖C〗private void bark() { … }
〖D〗abstract void bark() { … }
繼承關系中, 子類方法的權限要高於等於父類。
Java中修飾符權限大小關系:public > protected>默認>private, 選項B、C錯誤; abstract是修飾抽象方法的關鍵字, 只有父類中的方法為抽象方法時, 子類繼承的方法才能為抽象方法, D選項錯誤。
本題答案為A選項。
【28】下列代碼中, 將引起錯誤的是
1 class Animal {
    2 private String name;
    3 public Animal() {
    }
    4
}
5 public class Dog extends Animal {
    6 private String place;
    7 public Dog() {
    }
    8 public String getValue() {
        return name;
    }
    9 public static void main(String args[]) {
        10 Animal p = new Animal();
        11
    }
    12
}
〖A〗第3行
〖B〗第6行
〖C〗第7行
〖D〗第8行
Animal類的name熟悉是私有的。
private修飾的屬性只能在本類被訪問。
子類不能訪問父類的私有屬性。
第8行代碼出現錯誤。
本題答案為D選項。
【29】能實現線程之間通信的類是
〖A〗ObjectInputStream
〖B〗PipedInputStream
〖C〗FilterInputStream
〖D〗ByteArrayInputStream
在管道流實現線程間的通信。
java.io包中2個類:PipedInputStream和PipedOutputStream類實現了管道機制。
本題答案為B選項。
【30】下面關於管道的敘述中錯誤的是
〖A〗管道流分為字節管道流和字符管道流
〖B〗管道的優點在於提供了一個安全的線程通信方法
〖C〗管道的缺點在於有時會使依賴於管道通信的程序造成死鎖
〖D〗Java使用管道進行線程連接時必須要考慮線程的同步問題
管道流分為字節管道流和字符管道流, 選項A正確; 管道的優點在於提供了一個安全的線程通信方法, 選項B正確; 管道的缺點在於有時會使依賴於管道通信的程序造成死鎖, 選項C正確; Java使用管道進行線程連接時不用考慮線程的同步問題。
本題答案為D選項。
【31】下列關於對象流的描述中, 錯誤的是
〖A〗對象流是字節流的一個分支
〖B〗對象的傳送首先要對所傳送的對象串行化
〖C〗串行化對象可以把一個對象轉換成字節流
〖D〗串行化對象不能把字節流反串行化為原始對象的拷貝
串行化對象可以把字節流反串行化為原始對象的拷貝。
本題答案為D選項。
【32】下列關於Swing布局管理器的描述中, 錯誤的是
〖A〗Swing采用布局管理器來管理組件的排放、位置、大小等
〖B〗Swing具有FlowLayout、BorderLayout和CardLayout布局管理器
〖C〗Swing與AWT相比, 新增加了BoxLayout布局管理器
〖D〗Swing可以把組件直接加到頂層容器中
JavaSwing組件不能直接添加到頂層容器中, 它必須添加到一個與Swing頂層容器相關聯的內容面板(ContentPane)上。
內容面板其實就是一個中間容器, 它是一個輕量級組件。
本題答案為D選項。
【33】下面的代碼運行后得到的結果是
import javax.swing.*;
public class testOut {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "消息類型", "圖標", JOptionPane.WARNING_MESSAGE);
    }
}
〖A〗
〖B〗
〖C〗
〖D〗
showMessageDialog 的構造方法showMessageDialog(Component parentComponent, Object message, String title, int messageType), 其中 messageType 的WARNING_MESSAGE, 為警告圖標, 也就是選項C中顯示的圖標。
本題答案為C選項。
【34】下列關於JComponent類的描述中錯誤的是
〖A〗JComponent類是一個抽象類
〖B〗JComponent類繼承於Container類
〖C〗JComponent類定義了所有子類組件的一般方法
〖D〗JComponent類是所有Swing組件的父類
JComponent類是一個繼承與Container類的抽象類, 它定義了所有子類組件的一般方法, 選項A、B、C正確。
本題答案為D選項。
【35】當容器大小發生改變時, 使容器中組件的大小不發生改變的布局管理器是
〖A〗GridLayout
〖B〗BorderLayout
〖C〗FlowLayout
〖D〗CardLayout
只有flowlayout 不會改變組件的大小。
因為其布局中所有組件的大小都是自動適配的, 不管容器有多大, 組件大小通常都是根據顯示需要的最小尺寸。
本題答案為C選項。
【36】為了使下列程序正常運行並且輸出5行字符串Hello !, 在下划線處應填入的是
class Test5 extends Thread {
    public void ________() {
        int i = 0;
        while (i++ < 5)
            System.out.println("Hello! ");
    }
    public static void main(String[] args) {
        Thread t = __________();
        t.start();
    }
}
〖A〗run, new Test5
〖B〗run, new Thread
〖C〗Test5, new Thread
〖D〗Test5, new Test5
線程的實現有兩種方法(1)繼承Thread類(2)實現Runnable接口。
同時要重寫run()方法。
main()函數創建一個線程的實例, 需要填寫new Thread()。
本題答案為B選項。
【37】在一個線程中調用下列方法, 一定會改變該線程運行狀態的是
〖A〗yield方法
〖B〗urrentThread方法
〖C〗sleep方法
〖D〗一個對象的notify方法
線程的sleep()方法會是線程進入阻塞狀態; yield()方法和notify()方法會使線程進入就緒狀態, 如果線程本身就是就緒狀態則狀態不發生改變。
本題答案為C選項。
【38】為了支持壓棧線程與彈棧線程之間的交互與同步, 應在下划線處填入的選項是
public class MyStack {
    private int idx = 0;
    private int[] data = new int[8];
    public void push(int i) {
        ________ {
            this.notify();
            data[idx] = i;
            idx++;
        }
    }
    ……
}
〖A〗synchronized(this)
〖B〗interrupt()
〖C〗wait()
〖D〗synchronized()
在方法中使用synchronized(對象), 一般可以鎖定當前對象this。
表示同一時刻只有一個線程能夠進入同步代碼塊, 用來保證線程同步。
本題答案為A選項。
【39】下列關於Applet的敘述中, 錯誤的是
〖A〗Applet可以嵌入到瀏覽器中運行
〖B〗Applet的主類要定義為Applet類或JApplet類的子類
〖C〗同一個頁面中的Applet之間可以通信
〖D〗Applet中必須包含main()方法
Applet可以嵌入到瀏覽器中運行。
Applet的主類要定義為Applet類或JApplet類的子類。
同一個頁面中的Applet之間可以通信, 選項A、B、C正確。
Applet中可能不包含main()方法。
本題答案為D選項。
【40】下列代碼包括一個HTML文件和一個定義Applet類的Java程序。為了使HTML文件在瀏覽器中運行時顯示"Hello!", 在下划線處應填入的代碼是
/*hello.html*/
<HTML><HEAD><TITLE > A simple program</TITLE></HEAD><BODY><________ CODE = " Hello.class " WIDTH = 200 HEIGHT = 100></APPLET></BODY></HTML>/*Hello.java*/
import java.awt.*;
import java.applet.*;
public class Hello extends Applet {
    public void paint(________ g) {
        g.drawString("Hello!", 25, 25);
    }
}
〖A〗APPLET, Component
〖B〗PARAM, Component
〖C〗APPLET, Graphics
〖D〗PARAM, Graphics
Html中APPLET標簽是成對存在的, 程序中有結束符沒有開始符, 需加APPLET表簽作為開始符。
Graphics類:可以理解為畫筆, 為我們提供了各種繪制圖形。
本題答案為C選項。

編程題

【41】在考生文件夾中存有文件名為Java_1.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
計算並打印1, 3, 5, 7的階乘以及這些階乘的和。
完成程序, 使程序輸出結果如下:
1 != 1
3 != 6
5 != 120
7 != 5040
sum = 5167
(1) sum = 0
(2) i
(3) b = j * b
本題考查:求一個數的階乘, 以及java中多層循環的應用。
(1) 程序要求求和, 求和的結果存放到sum變量中, 需要對變量進行初始化, 賦初值為0。
(2) 階乘為小於及等於該數的正整數的積。
內循環將小於等於i的值累乘。
所以j <= i。
(3) 將累乘的結果存放到變量b中, 所以b的值應為j * b。
【42】在考生文件夾中存有文件名為Java_2.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
統計骰子旋轉500次后每個面出現的頻率(起始面是隨機的), 某次程序結果如下:

(1) swing
(2) face
(3) new
(4) outputArea
(5) exit
本題考查:java窗口構件、switch分支結構。
(1) JTextArea, JOptionPane都是屬於swing包中的類, 所以需要導入swing包。
(2) switch (表達式) , 表達式為face匹配case的常量值, 執行分支中的內容。
(3) JTextArea在使用的時候必須創建對象, 創建對象用關鍵字new。
(4) JOptionPane.showMessageDialog()方法中必須傳入4個參數, 其中第2個參數傳入的是Object Message, 本程序要求將新建的JTextArea對象添加到容器中。
(5) 程序正常退出system.exit(0);
【43】在考生文件夾中存有文件名為Java_3.java和Java_3.html的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
利用Do / While循環語句編寫Applet程序, 實現畫10個同心圓
程序運行結果如下:

(1)JApplet(2)Graphics(3)g(4)++counter
本題考查:do / While循環語句、Graphics類以及java Applet小程序應用。
(1) java Applet小程序需要繼承JApplet類。
(2) Graphics這個是抽象類, 它的對象是用來傳給paint()方法作為畫筆的。
(3) java的Graphics類提供繪制橢圓的方法drawOval()。
(4) do - while循環的結束條件為counter <= 10, 變量counter的初始值為1, 所以這里需要讓變量counter自增1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM