2017年計算機二級《JAVA》模擬試題答案

字號:

一、選擇題
    1.D。解析:線性表可以為空表;第一個元素沒有直接前驅(qū),最后一個元素沒有直接后繼;線性表的定義中,元素的排列并沒有規(guī)定大小順序。
    2.B。解析:滿二叉樹指除最后一層外,每一層上所有結(jié)點都有兩個子結(jié)點的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達到值,在最后一層上只缺少右邊的若干葉子結(jié)點的二叉樹。由定義可知,滿二叉樹肯定是完全二叉樹,而完全二叉樹一般不是滿二叉樹。
    3.C。解析:對線性表進行順序查找時,最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進行比較,因此比較次數(shù)為n。
    4.D。解析:結(jié)構(gòu)化程序設計的主要原則概括為自頂向下,逐步求精,模塊化。
    5.B。解析:需求分析是軟件定義時期的最后一個階段。可以概括為四個方面:需求獲取;需求分析;編寫需求規(guī)格說明書;需求評審。
    6.C。解析:軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。軟件測試有3個重要特征:測試的挑剔性、完全測試的不可能性及測試的經(jīng)濟性。
    7.C。解析:模塊的獨立性是評價設計好壞的重要度量標準。衡量軟件的模塊獨立性使用耦合性和內(nèi)聚性兩個定性的度量標準。
    8.C。解析:軟件測試是為了盡可能多地發(fā)現(xiàn)程序中的錯誤,尤其是至今尚未發(fā)現(xiàn)的錯誤。
    9.D。解析:需求分析常用工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。問題分析圖(PAD)、程序流程圖(PFD)、金式圖(N-S)都是詳細設計的常用工具,不是需求分析的工具。
    10.D。解析:模塊化是結(jié)構(gòu)化程序設計的特點。面向?qū)ο笤O計方法使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。他的特點包括:分類性、封裝性、模塊獨立性、繼承和多態(tài)性等。
    11.B。解析:數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個體。有些情況下也把數(shù)據(jù)元素稱為結(jié)點、記錄、表目等。一個數(shù)據(jù)元素可由一個或多個數(shù)據(jù)項組成,數(shù)據(jù)項是有獨立含義的數(shù)據(jù)最小單位,其值能確定一個數(shù)據(jù)元素的數(shù)據(jù)項。
    12.D。解析:棧的特性為后進先出,而棧S只能容納4個元素。當F進棧時,說明棧中有已有B、C、D、E四個元素,所以F無法進棧。
    13.D。解析:在電子郵件程序向郵件服務器中發(fā)送郵件時,使用的是簡單郵件傳輸協(xié)議(SMTP),而在電子郵件程序從郵件服務器中讀取郵件時,可以使用郵局協(xié)議(POP3)。
    14.C。解析:直接選擇排序第一遍掃描就可以把的關(guān)鍵碼找出來(不必等到排序結(jié)束),而其他幾種排序方法都必須等到排序完成才能找到關(guān)鍵碼。
    15.A。解析:二分法查找是一種效率較高的線性表查找方法。要進行二分法查找,則線性表結(jié)點必須是按關(guān)鍵碼值排好序的,且線性表以順序方式存儲。
    16.A。解析:Java的核心包一共有l(wèi)2個,其中:java.lan9包中封裝了所有編程應用的基本類;java.util包提供實用程序類和集合類,如系統(tǒng)特性定義和使用、日期函數(shù)類、 集合等常用工具;java.applet包為Applet提供執(zhí)行需要的所有類,主要是訪問Applet內(nèi)容的通信類;java.rmi包提供程序遠程方法調(diào)用所需的類。因此,本題的正確答案是A。
    17.C。解析:Java程序中使用import關(guān)鍵字導入一個包中的類。在一個Java源程序中,可以有0個或多個import語句,但是必須在所有類定義之前引入標準類。因此,本題中選項C的說法是錯誤的。
    18.B。解析:javac.exe是Java編譯器,能將源程序代碼編譯成字節(jié)碼,以.class擴展名存入Java工作目錄中。它的命令格式為:javac[選項]文件名。其中[選項]包括以下幾個:-g。輸出文件中加行號以及局部變量信息,為調(diào)試程序時用。-o對類文件進行優(yōu)化編譯。-nowarn 關(guān)閉警告信息,只顯示錯誤信息。-verbose 顯示源代碼文件和字節(jié)碼文件的相關(guān)信息。-d<目錄> 指定存放生成的類(.class)文件的位置根據(jù)上述介紹可知,在編譯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程序運行環(huán)境的根目錄,它下面包含bin子目錄,包括平臺所用工具和庫的可執(zhí)行文件以及DLL文件;demo目錄,該目錄包含源代碼的程序示例;include目錄,該目錄包含Win32子目錄,都是本地方法的文件。
    21.A。解析:Java是新一代編程語言,具有很多特點:簡單易學;利用面向?qū)ο蠹夹g(shù);分布式計算;健壯性(魯棒性);安全性;跨平臺(即體系結(jié)構(gòu)中立);可移植性;解釋執(zhí)行;高性能;多線程;動態(tài)性。因此,本題的正確答案是A。
    22.C。解析:本題考查線程的基本控制。Thread類提供的基本線程控制方法包括:sleep()——使比其低的優(yōu)先級線程運行,可以讓一個線程暫停運行一段固定的時間;yield()——使具有與當前線程相同優(yōu)先級的線程有運行的機會;join()——使當前線‘程暫停執(zhí)行,等待調(diào)用該方法的線程結(jié)束后,再恢復執(zhí)行;interrupt()——中斷線程的阻塞狀態(tài),并且線程接收到InterruptException異常。根據(jù)上述介紹可知,只有yield()方法可以使當前同級線程重新獲得運行機會。因此,本題的正確答案是C。
    23.C。解析:do while語句和for語句是循環(huán)語句;it語句和switch語句是分支語句。而if語句稱為條件語句, switch語句稱為多分支語句。
    24.D。解析:本題考查switch語句的用法。switch語句是多分支語句,即根據(jù)表達式的值來執(zhí)行多個操作中的一個。在switch語句中,”表達式”的返回值類型必須是這幾種類型
    之一:int、byte、char、short。本題中,switch的表達式s是一個字符串Strin9類型的值,它不是int、byte、char、short中的任意一個。因此表達式s的類型不對,編譯時出錯。
    25.A。解析:FileReader、BufferedReader是字符類輸入流。FileInputStream是字節(jié)輸入流。對象串行化時,需要使用ObjectlnputStream類中提供的方法從對象流中讀取對象。所以,在程序讀入字符文件時,要使用字符流FileReader或BufferedReader。但是FileReader的參數(shù)是讀入的文件,而BufferedReader的參數(shù)是FileReader流的一個對象。因此,本題的正確答案是A。
    26.C。解析:在java.i0包中,接口Serializable是實現(xiàn)對象串行化的工具。實際上,Serializable接口是一個空接口,它里面既沒有定義抽象方法,也沒有定義常量。Serializable接口的目的只是簡單地標識一個類的對象是可以被串行化的。
    27.B。解析:本題考查線程的創(chuàng)建。在Java中,創(chuàng)建線程有兩種方法:①通過實現(xiàn)Runnable接口創(chuàng)建線程。Runnable接口中只定義了一個run()方法作為線程體。②通過繼承Thread類創(chuàng)建線程,Thread類本身實現(xiàn)了Runnable接口。創(chuàng)建的新的線程不會自動運行,必須調(diào)用start()方法才能運行。本題中HolloWorld類實現(xiàn)了Runnable接口。
    28.D。解析:Java.io包中的類可以處理不同類型的流,比如字節(jié)流、字符流、對象流、非流類等。File類就是一個重要的非流類,它是以一種系統(tǒng)無關(guān)的方式表示一個文件對象的屬性。
    29.D。解析:Java平臺為了防范惡意程序的攻擊,保護本地主機,對Applet作了如下安全限制:①Applet不能運行任何本地可執(zhí)行程序。②禁止加載本地庫或方法。③禁止讀、寫本地計算機的文件系統(tǒng)。④禁止向提供Applet之外的任何主機建立網(wǎng)絡連接。⑤不能讀取某些系統(tǒng)信息。⑥由一個Applet彈出的窗口外觀上與一個Application彈出的窗口不同,Applet彈出的窗口中會有警告提示信息,幫助用戶區(qū)分Applet窗口與可信的Application窗口。
    30.B。解析:本題對StringBuffer(String str)構(gòu)造方法,用str給出字符串的初始值,并分配16個字符的緩存。因此,字符串sb的初始值是”test”,并且包含l6個字符的緩存。length()方法用來獲得字符串長度,不包含緩存。故程序運行結(jié)果中在”length=”后輸出的值應該是字符串sb的長度,即4。
    31.A。解析:本題考查Applet的基本知識。Applel類定義了小應用程序(Applet)與其運行環(huán)境之間的一個接口;JApplet是Applet類的擴展,它繼承了Applet的方法和執(zhí)行機制,同時也增加了對Swing構(gòu)件的支持。每個Jaw小應用程序都必須是Applet類或JApplet類的子類。因此,本題的正確答案是A。
    32.C。解析:繼承是允許將一個類定義為一個更通用類的特例。特殊類稱為子類,通用類稱為父類。除了訂單類的屬性外,特快訂單類可能還有其他一些特殊屬性。顯然,訂單類是通用類,即父類;而特快訂單類是定單類的一個特例,是子類。訂單類和特快訂單類是繼承關(guān)系。
    33.C。解析:本題考查Applet的安全限制。許多瀏覽器為了保護本地主機,一般情況下,對Applet作了如下安全限制:Applet不能運行任何本地可執(zhí)行程序;禁止Applet讀、寫本地計算機的文件系統(tǒng);禁止加載本地庫或方法。Applet只能使用自身的代碼或Applet瀏覽器提供的JavaAPl;禁止向提供Applet之外的任何主機建立網(wǎng)絡連接;不能讀取某些系統(tǒng)信息。除了Java版本號、操作系統(tǒng)名等一些簡單信息外,Applet不能獲得與本地計算機有關(guān)的任何信息。根據(jù)上述介紹可知,Applet只能讀取有限的系統(tǒng)信息,但不是一點兒都不能讀取。因此,本題的正確答案是C。
    34.A。解析:本題考查Swing的容器面板。在Swing的容器面板中:選項板(JTabbedPane)提供一組可供用戶選擇的帶有標簽或圖標的選項,每個選項下面都可以顯示一個構(gòu)件;Swing提供兩種分層面板:JLayeredPane和JDesktopPane。JDesktopPane是JLayeredPane的子類,專門為容納內(nèi)部框架(JInternalFrame)而設計;滾動窗口(JScrollPane)是帶滾動條的面板,主要是通過移動JViewport(視口)來實現(xiàn)的;分隔板(JSplitPane)用于分隔兩個構(gòu)件,這兩個構(gòu)件可以按照水平方向分隔,也可以按照垂直方向分隔。根據(jù)上述介紹可知,Swing中的選項面板是JTabbedPane。因此,本題的正確答案是A。
    35.B。解析:AppletContext類是一個接口類,Applet通過AppletContext接口與環(huán)境進行通信??梢岳眠@個類從Applet環(huán)境獲取信息,而這個環(huán)境一般是指瀏覽器。Applet使用AppletContext類的showDocument()方法可以通知瀏覽器在指定窗口中顯示另一個URL的內(nèi)容。因此,本題的正確答案是B。
    36.D。解析:本題考查線程的創(chuàng)建。Java語言中提供兩種創(chuàng)建線程的方法,一種是通過實現(xiàn)Runnable接口來創(chuàng)建線程,另一種是通過繼承Thread類創(chuàng)建線程。顯然,題目中的程序是使用第二種方法來創(chuàng)建線程。Thread類中定義了run()方法,所以通過繼承Thread類來創(chuàng)建線程時還要重寫Thread類中的run()方法。而run()方法的定義如下:
    public void run(){}
    題目中的代碼比較簡單,就是創(chuàng)建了一個線程,這個線程完成的操作就是打印5行"祝你成功"。仔細閱讀程序,不難發(fā)現(xiàn)第7行有錯。在run()方法的定義中是沒有參數(shù)的,而題目程序中的run方法卻帶有一個參數(shù)。因此,要把第7行的代碼改為"public void run()"。因此,本題的正確答案是D。
    37.B。解析:二維數(shù)組有兩種定義方式:①type arrayName[][];②type[][]arrayName;從題目中的語句可以看出,本題定義了一個二維數(shù)組。
    38.D。解析:Java命名的基本原則包括如下幾條:_、$不作為變量名、方法名的開頭;變量名、方法名首單詞小寫,其余單詞只有首字母大寫;接口名、類名首單詞第一個字母大寫;常量完全大寫。根據(jù)上述命名規(guī)則,選項D的說法是正確的。
    39.D。解析:Java語言使用的是Unicode字符集。而ASCIl是國際上使用最廣泛的字符編碼;BCD是一種數(shù)字壓縮存儲編碼方法。
    40.D。解析:本題考查AWT事件處理。事件就是發(fā)生在用戶界面上的用戶交互行為所產(chǎn)生的一種效果。每類事件都有對應的事件監(jiān)聽器,監(jiān)聽器就是接口。在單行文本輸入?yún)^(qū)(TextField)構(gòu)件上可能發(fā)生的事件包括:FocusEvent焦點事件——焦點的獲得和丟失,這類事件所對應的事件監(jiān)聽器是FocusListener;ActionEvent動作事件——按鈕按下、TextField中按鍵,這類事件所對應的事件監(jiān)聽器是ActionListener;MouseEvent鼠標事件——鼠標單擊、釋放、拖動、移動,這類事件所對應的事件監(jiān)聽器是MousetMotionListener。雖然還包括其他一些監(jiān)聽器,但是在所有事件及其所對應的事件監(jiān)聽器中,并不包括ChangeListener這樣一個事件監(jiān)聽器。因此,本題的正確答案是D。
    二、基本操作題
    第1處:sum=0
    第2處:pos%2= =1或pos%2 1= =0
    第3處:pos++或pos+=1或pos=pos+1
    解析:第1處給整型變量sum賦初值;第2處為判斷數(shù)組中元素下標為奇數(shù)的條件;第3處是元素下標加1繼續(xù)遍歷。
    三、簡單應用題
    第1處:PlafPanel
    第2處:plaf
    解析:第一處由題意可知,類PlafPanel缺少構(gòu)造函數(shù),所以填PlafPanel。第二處是通過String類型的對象plaf,和UIManager.setLookAndFeel()方法實現(xiàn)顯示風格的切換。
    四、綜合應用題
    第1處:txtPassWord.setEchoCharf(’*’)
    第2處:txtPassword.getText()
    第3處:txtUsername.setEditable(true)
    解析:第一處是通過TextField類的setEchoChar函數(shù)設置用戶輸入時,文本框顯示的文本。第二處是通過TextField類的getText函數(shù)獲取用戶的輸入,即得到密碼值。第三處是使用戶名文本框變?yōu)榭捎?,使用戶可以輸入?