全國計算機二級C語言複習題及答案
全國計算機等級考試已經進入衝刺階段了,考生們在最後的幾天複習裏,可以多做幾套練習題訓練自己的做題速度,下面是本站小編為考生搜索整理了關於計算機二級C語言複習題及答案,供大家參考學習,希望對你有所幫助。想了解更多相關信息請持續關注我們應屆畢業生考試網!
1)下面敍述正確的是________。
A)算法的執行效率與數據的存儲結構無關
B)算法的空間複雜度是指算法程序中指令(或語句)的條數
C)算法的有窮性是指算法必須能在執行有限個步驟之後終止
D)算法的時間複雜度是指執行算法程序所需要的時間
(1)C
知識點:算法的基本概念;算法複雜度的概念和意義(時間複雜度與空間複雜度)
評 析:算法的設計可以避開具體的計算機程序設計語言,但算法的實現必須藉助程序設計語言中提供的數據類型及其算法。數據結構和算法是計算機科學的兩個重要支柱。它們是一個不可分割的整體。算法在運行過程中需輔助存儲空間的大小稱為算法的空間複雜度。算法的有窮性是指一個算法必須在執行有限的步驟以後結束。算法的時間複雜度是指執行算法所需要的計算工作量,即算法執行過程中所需要的基本運算次數。
(2)以下數據結構屬於非線性數據結構的是________。
A)隊列 B)線性表 C)二叉樹 D)棧
(2)C
知識點:棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算
評 析:線性表、棧和隊列等數據結構所表達和處理的數據以線性結構為組織形式。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛插入的元素。所以棧又稱後進先出表(Last In First Out)。隊列可看作是插入在一端進行,刪除在另一端進行的線性表,允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,只能刪除隊頭元素,隊列的最後一個元素一定是最新入隊的元素。因此隊列又稱先進先出表(First In First Out)。二叉樹的數據結構是樹型結構,結構中數據元素之間存在着一對多的關係,因此它是一種非線性數據結構。
(3)在一棵二叉樹上第8層的結點數最多是________。
A)8 B)16 C)128 D)256
(3)C
知識點:二叉樹的定義及其存儲結構
評 析:根據二叉樹的性質:二叉樹第i(I>1)層上至多有2i-1個結點。得到第8層的結點數最多是128。
(4)下面描述中,不符合結構化程序設計風格的是________。
A)使用順序、選擇和重複(循環)三種基本控制結構表示程序的控制邏輯
B)自頂向下
C)注重提高程序的執行效率
D)限制使用goto語句
(4)C
知識點:結構化程序設計
評 析:結構化程序設計方法的四條原則是:1.自頂向下:2.逐步求精;3.模塊化;4.限制使用goto語句。“自頂向下”是説,程序設計時,應先考慮總體,後考慮細節,先考慮全局目標,後考慮局部目標;“逐步求精’’是説,對複雜問題,應設計一些子目標作過渡,逐步細節化;“模塊化”是説,一個複雜問題肯定是由若干稍簡單的問題構成,解決這個複雜問題的程序,也應對應若干稍簡單的問題,分解成若干稍小的部分。
(5)下面概念中,不屬於面向對象方法的是________。
A)對象、消息 B)繼承、多態 C)類、封裝 D)過程調用
(5)D
知識點:面向對象的程序設計方法、對象、方法、屬性及繼承與多態性
評 析:面向對象方法是一種運用對象、類、封裝、繼承、多態和消息等概念來構造、測試、重構軟件的方法。面向對象方法從對象出發,發展出對象、類、消息、繼承等概念。
(6)在結構化方法中,用數據流程圖(DFD)作為描述工具的軟件開發階段是________。
A)可行性分析 B)需求分析 C)詳細設計 D)程序編碼
(6)B
知識點:結構化設計方法
評 析:軟件開發階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數據流程圖和數據字典。
(7)軟件生命週期中所花費用最多的階段是________。
A)詳細設計 B)軟件編碼 C)軟件測試 D)軟件維護
(7)D
知識點:軟件工程基本概念,軟件生命週期概念,軟件工具與軟件開發環境
評 析:軟件生命週期分為軟件定義、軟件開發及軟件運行維護3個階段。本題中詳細設計、軟件編碼和軟件測試都屬於軟件開發階段;維護是軟件生命週期的最後一個階段,也是持續時間最長,花費代價最大的一個階段,軟件工程學的一個目的就是提高軟件的可維護性,降低維護的代價。
(8)數據庫系統的核心是________。
A)數據模型 B)DBMS C)軟件工具 D)數據庫
(8)B
知識點:數據庫的基本概念:數據庫,數據庫管理系統,數據庫系統
評 析:數據庫管理系統DBMS是數據庫系統的核心。DBMS是負責數據庫的建立、使用和維護的軟件。DBMS建立在操作系統之上,實施對數據庫的統一管理和控制。用户使用的各種數據庫命令以及應用程序的執行,最終都必須通過DBMS。另外,DBMS還承擔着數據庫的安全保護工作,按照DBA所規定的要求,保證數據庫的完整性和安全性。
(9)下列敍述中正確的是________。
A)數據處理是將信息轉化為數據的過程
B)數據庫設計是指設計數據庫管理系統
C)如果一個關係中的屬性或屬性組並非該關係的關鍵字,但它是另一個關係的關鍵
字,則稱其為本關係的外關鍵字
D)關係中的每列稱為元組,一個元組就是一個字段
(9)C
知識點:數據模型,實體聯繫模型及E-R圖,從E-R圖導出關係數據模型
評 析:數據處理是指將數據轉換成信息的過程,故選項A敍述錯誤;設計數據庫的目的實質上是設計出滿足實際應用需求的實際關係模型,故選項B敍述錯誤;關係中的行稱為元組,對應存儲文件中的記錄,關係中的列稱為屬性。對應存儲文件中的字段,故D選項敍述錯誤。
(10)下列模式中,_______是用户模式。
A)內模式 B)外模式 C)概念模式 D)邏輯模式
(10)B
知識點:數據庫的基本概念:數據庫,數據庫管理系統,數據庫系統
評 析:數據庫管理系統的三級模式結構由外模式、模式和內模式組成。外模式,或稱子模式,或稱用户模式,是指數據庫用户所看到的數據結構,是用户看到的數據視圖。模式,或稱邏輯模式,是數據庫中對全體數據的邏輯結構和特性的描述,是所有用户所見到的數據視圖的總和。外模式是模式的一部分。內模式,或稱存儲模式,或稱物理模式,是指數據在數據庫系統內的存儲介質上的表示。即對數據的物理結構和存取方式的描述。
(11)C語言規定,程序中各函數之間_______。
A)既允許直接遞歸調用也允許間接遞歸調用
B)不允許直接遞歸調用也不允許間接遞歸調用
C)允許直接遞歸調用不允許間接遞歸調用
D)不允許直接遞歸調用允許間接遞歸調用
(11)A
知識點:函數的遞歸調用
評 析:c語言規定,程序中各函數之間既允許直接遞歸調用也允許間接遞歸調用。
(12)C語言中下列敍述正確的是_______。
A)不能使用do-while語句構成的循環
B)do-while語句構成的循環,必須用break語句才能退出
C)do-while語句構成的循環,當while語句中的表達式值為非零時結束循環
D)do-while語句構成的循環,當while語句中的表達式值為零時結束循環
(12)D
知識點:do-while語句
評 析:選項A是錯誤的,c語言支持do-while語句;選項B是錯誤的,do-while構成的循環,當while語句中的表達式值為零時結束循環,而不是非零;選項C也是錯誤的。
(13)以下選項中屬於C語言的數據類型是_______。
A)複數型 B)邏輯型 C)雙精度型 D)集合型
(13)C
知識點:c語言的數據類型
評 析:c語言的數據類型分為基本類型、構造類型、指針類型、空類型四大類。其中,基本類型分為整型、字符型、實型三類。實型又稱浮點型,包括單精度型和雙精度型兩種類型。
(14)在C語言中,不正確的int類型的常數是_______。
A)32768 B)0 C)037 D)0xAF
(14)A
知識點:int類型的範圍
評 析: c語言中int類型的常數的範圍是:-32768~32767。c整常數可用三種形式表示:十進制整數,八進制整數,十六進制整數。選項A超出範圍,不正確。
(15)下列描述中不正確的是_______。
A)字符型數組中可以存放字符串
B)可以對字符型數組進行整體輸入、輸出
C)可以對整型數組進行整體輸入、輸出
D)不能在賦值語句中通過賦值運算符“=”對字符型數組進行整體賦值
(15)C
知識點:對數組的理解
評 析: c語言規定只能逐個引用數組元素而不能一次引用整個數組。字符數組的輸入、輸出可以將整個字符串一次輸入或輸出。所以,選項C的説法是不正確的。
(16)以下程序的輸出結果是_______。
main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p。&x[1][1];
for(i=0;i<4;i+=2)printf("%d",p[i]];
}
A)5 2 B)5 1 C)5 3 D)9 7
(16)C
知識點:通過指針引用數組元素
評 析:題中*p=&x[1][1];是指將數組x的數組元素x[1][1]的地址賦值給指針變量p,使p指向x[l][l]這個數組元素,那麼p[0]即為指針變量p當前所指向的數組元素x[l][1]的值。具體執行時如下所示:
i=0時,輸出p[0],也就是x[1][1],輸出是5:
i=2時,輸出p[2],即p[2+0],也就是x[2][0],輸出是3。
(17)以下程序的運行結果是_______。
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a十5,*q=NULL;
*q=*(p+5);
printf("%d %d ",*p,*q);
}
A)運行後報錯 B)6 6
C)6 12 D)5 5
(17)A
知識點:通過指針引用數組
評 析:題目中沒有給q分配存儲單元,只是簡單地給它賦了一個值,所以程序的運行結果是6 ll NULL pointer assignment,也就是運行後報錯。
(18)以下説法中正確的是________。
A)c語言程序總是從第一個函數開始執行
B)在C語言程序中,要調用函數必須在main()函數中定義
C)C語言程序總是從main()函數開始執行
D)c語言程序中的main()函數必須放在程序的開始部分
(18)C
知識點: C程序的運行順序
評 析:c語言的程序是由主函數main()開始運行,由主函數來調用其他函數,所以選項A錯誤;c語言中定義的函數必須是並列的,不能在一個函數中定義其他函數,選項B錯誤;函數必須先定義後使用,在調用函數之前要定義函數,而mmn()函數不一定要放在程序的開始部分,故選項D錯誤。
(19)能正確表示a和b同時為正或同時為負的邏輯表達式是________。
A)(a>=0l lb>=0)&&(a<0I lb<0) a="">=0&&b>--0)&&(a<0&&b<o)< p="">
C)(a+b>0) &&(a+b<=0) b="">0
(19)D
知識點:對邏輯表達式的判斷
評 析:邏輯表達式是指用邏輯運算符將關係表達式或邏輯量連接起來。
選項A中,表達式表示的是a,b為異號;
選項B中,表達式表示的是0,因為沒有滿足條件的值;
選項C中,表達式表示的是0,因為沒有滿足條件的值;
選項D表示的是a和b為同號。
(20)若己定義:int a[9],*p=a;並在以後的語句中未改變p的值,不能表示a[l]地址的表達式是________。
A)p+l B)a+l C)a++ D)++p
(20)C
知識點:數組地址的表示
評 析:數組名是指針常量,是個固定的指針,不能對數組名賦予一個新的地址值,也不能使這個指針常量“移動”,指向數組的其他元素。