1.下列敘述中正確的是
A)所謂算法就是計算方法
B)程序可以作為算法的一種描述方法
C)算法設計只需考慮得到計算結果
D)算法設計可以忽略算法的運算時間
B【解析】算法是指對解題方案的准確而完整的描述,算法不等於數學上的計算方法,也不等於程序。算法設計需要考慮可行性、確定性、有窮性與足夠的情報,不能只考慮計算結果。算法設計有窮性是指操作步驟有限且能在有限時間內完成,如果一個算法執行耗費的時間太長,即使最終得出了正確結果,也是沒有意義的,。算法在實現時需要用具體的程序設計語言描述,所以程序可以作為算法的一種描述方法。
2.下列關於算法的描述中錯誤的是
A)算法強調動態的執行過程,不同於靜態的計算公式
B)算法必須能在有限個步驟之后終止
C)算法設計必須考慮算法的復雜度
D)算法的優劣取決於運行算法程序的環境
D【解析】算法設計不僅要考慮計算結果的正確性,還要考慮算法的時間復雜度和空間復雜度。
3.下列敘述中正確的是
A)算法的復雜度包括時間復雜度與空間復雜度
B)算法的復雜度是指算法控制結構的復雜程度
C)算法的復雜度是指算法程序中指令的數量
D)算法的復雜度是指算法所處理的數據量
A【解析】算法復雜度是指算法在編寫成可執行程序后,運行時所需要的資源,資源包括時間資源和內存資源。算法的復雜度包括時間復雜度與空間復雜度。算法的時間復雜度是指執行算法所需要的計算工作量;算法的空間復雜度是指算法在執行過程中所需要的內存空間。
4.下列敘述中正確的是
A)算法的時間復雜度與計算機的運行速度有關
B)算法的時間復雜度與運行算法時特定的輸入有關
C)算法的時間復雜度與算法程序中的語句條數成正比
D)算法的時間復雜度與算法程序編制者的水平有關
B【解析】為了能夠比較客觀地反映出一個算法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實現過程中的許多細節無關。為此,可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量。算法所執行的基本運算次數還與問題的規模有關;對應一個固定的規模,算法所執行的基本運算次數還可能與特定的輸入有關。
5.下列敘述中正確的是
A)解決同一個問題的不同算法的時間復雜度一般是不同的
B)解決同一個問題的不同算法的時間復雜度必定是相同的
C)對同一批數據作同一種處理,如果數據存儲結構不同,不同算法的時間復雜度肯定相同
D)對同一批數據作不同的處理,如果數據存儲結構相同,不同算法的時間復雜度肯定相同
A【解析】解決同一個問題的不同算法的時間復雜度,可能相同也可能不相同。算法的時間復雜度與數據存儲結構無關,對同一批數據作同一種處理或者不同處理,數據存儲結構相同或者不同,算法的時間復雜度都可能相同或者不同。
6.下列敘述中正確的是
A)算法的空間復雜度是指算法程序中指令的條數
B)壓縮數據存儲空間不會降低算法的空間復雜度
C)算法的空間復雜度與算法所處理的數據存儲空間有關
D)算法的空間復雜度是指算法程序控制結構的復雜程度
C【解析】算法的空間復雜度是指算法在執行過程中所需要的內存空間。算法執行期間所需的存儲空間包括3個部分:輸入數據所占的存儲空間;程序本身所占的存儲空間;算法執行過程中所需要的額外空間。
7.為了降低算法的空間復雜度,要求算法盡量采用原地工作(in place)。所謂原地工作是指
A)執行算法時不使用額外空間
B)執行算法時不使用任何存儲空間
C)執行算法時所使用的額外空間隨算法所處理的數據空間大小的變化而變化
D)執行算法時所使用的額外空間固定(即不隨算法所處理的數據空間大小的變化而變化)
D【解析】對於算法的空間復雜度,如果額外空間量相對於問題規模(即輸入數據所占的存儲空間)來說是常數,即額外空間量不隨問題規模的變化而變化,則稱該算法是原地工作的。
8.下列敘述中正確的是
A)算法的復雜度與問題的規模無關
B)算法的優化主要通過程序的編制技巧來實現
C)對數據進行壓縮存儲會降低算法的空間復雜度
D)數值型算法只需考慮計算結果的可靠性
C【解析】在許多實際問題中,為了減少算法所占的存儲空間,通產采用壓縮存儲技術,以便盡量減少不必要的額外空間。
9.下列敘述中正確的是
A)數據的存儲結構會影響算法的效率
B)算法設計只需考慮結果的可靠性
C)算法復雜度是指算法控制結構的復雜程度
D)算法復雜度是用算法中指令的條數來度量的
A【解析】采用不同的存儲結構,其數據處理的效率是不同的。因此,在進行數據處理時,選擇合適的存儲結構很重要。
10.下列敘述中錯誤的是
A)數據結構中的數據元素可以是另一數據結構
B)數據結構中的數據元素不能是另一數據結構
C)空數據結構可以是線性結構也可以是非線性結構
D)非空數據結構可以沒有根結點
B【解析】數據元素是一個含義很廣泛的概念,它是數據的“基本單位”,在計算機中通常作為一個整體進行考慮和處理。數據元素可以是一個數據也可以是被抽象出的具有一定結構數據集合,所以數據結構中的數據元素可以是另一數據結構。滿足有且只有一個根結點並且每一個結點最多有一個前件,也最多有一個后件的非空的數據結構認為是線性結構,不滿足條件的結構為非線性結構。空數據結構可以是線性結構也可以是非線性結構。非空數據結構可以沒有根結點,如非性線結構“圖”就沒有根結點。
11.下列敘述中正確的是
A)非線性結構可以為空
B)只有一個根結點和一個葉子結點的必定是線性結構
C)只有一個根結點的必定是線性結構或二叉樹
D)沒有根結點的一定是非線性結構
A【解析】如果一個非空的數據結構滿足下列兩個條件:①有且只有一個根結點;②每一個結點最多有一個前件,也最多有一個后件。則稱該數據結構為線性結構。如果一個數據結構不是線性結構,則稱之為非線性結構。線性結構和非線性結構都可以是空的數據結構。樹只有一個根結點,但不論有幾個葉子結點,樹都是非線性結構。
12.下列敘述中錯誤的是
A)向量是線性結構
B)非空線性結構中只有一個結點沒有前件
C)非空線性結構中只有一個結點沒有后件
D)具有兩個以上指針域的鏈式結構一定屬於非線性結構
D【解析】雙向鏈表每個結點有兩個指針,一個為左指針,用於指向其前件結點;一個為右指針,用於指向其后件結點,再加上頭指針,具有兩個以上的指針,但雙向鏈表屬於線性結構。非空線性結構中第一個結點沒有前件,最后一個結點無后件,其余結點最多有一個前件,也最多有一個后件。向量也滿足這個條件,屬於線性結構。
13.設數據結構B=(D, R),其中
D={ a, b, c, d, e, f }
R={ (f, a), (d, b), (e, d), (c, e), (a, c) }
該數據結構為
A)線性結構
B)循環隊列
C)循環鏈表
D)非線性結構
A【解析】數據的邏輯結構有兩個要素:一是數據元素的集合,通常記為D;二是D上的關系,它反映了D中各數據元素之間的前后件關系,通常記為R。即一個數據結構可以表示成B=(D,R)。其中B表示數據結構。為了反映D中各數據元素之間的前后件關系,一般用二元組來表示。例如,假設a與b是D中的兩個數據,則二元組(a,b)表示a是b的前件,b是a的后件。本題中R中的根結點為f,元素順序為f→a→c→e→d→b,滿足線性結構的條件。
14.設數據集合為D={ 1, 2, 3, 4, 5 }。下列數據結構 B=(D, R)中為非線性結構的是
A)R={ (2,5), (5,4), (3,1), (4,3) }
B)R={ (1,2), (2,3), (3,4), (4,5) }
C)R={ (1,2), (2,3), (4,3), (3,5) }
D)R={ (5,4), (4,3), (3,2), (2,1) }
C【解析】A項中,R={(2,5),(5,4),(3,1),(4,3)},2為根結點,元素順序為2→5→4→3→1,屬於線性結構;同理B項1為根結點,元素順序為1→2→3→4→5,D項5為跟結點,元素順序為5→4→3→2→1,均為線性結構。C項中,元素3有兩個前件,屬於非線性結構。
15.下列敘述中正確的是
A)矩陣是非線性結構
B)數組是長度固定的線性表
C)對線性表只能作插入與刪除運算
D)線性表中各元素的數據類型可以不同
B【解析】矩陣也是線性表,只不過是比較復雜的線性表。線性表中各元素的數據類型必須相同。在線性表中,不僅可以做插入與刪除運算,還可以進行查找或對線性表進行排序等操作。
16.在線性表的順序存儲結構中,其存儲空間連續,各個元素所占的字節數
A不同,但元素的存儲順序與邏輯順序一致
B)不同,且其元素的存儲順序可以與邏輯順序不一致
C)相同,元素的存儲順序與邏輯順序一致
D)相同,但其元素的存儲順序可以與邏輯順序不一致
C【解析】在線性表的順序存儲結構中,其存儲空間連續,各個元素所占的字節數相同,在存儲空間中是按邏輯順序依次存放的。
17.下列敘述中正確的是
A)能采用順序存儲的必定是線性結構
B)所有的線性結構都可以采用順序存儲結構
C)具有兩個以上指針的鏈表必定是非線性結構
D)循環隊列是隊列的鏈式存儲結構
B【解析】所有的線性結構都可以用數組保存,即都可以采用順序存儲結構。而反過來不可以,完全二叉樹也能用數組保存(按層次依次存放到數據元素中),但完全二叉樹不屬於非線性結構。雙向鏈表具有兩個以上的指針,但屬於線性結構。循環隊列是隊列的順序存儲結構。
18.下列敘述中正確的是
A)在棧中,棧頂指針的動態變化決定棧中元素的個數
B)在循環隊列中,隊尾指針的動態變化決定隊列的長度
C)在循環鏈表中,頭指針和鏈尾指針的動態變化決定鏈表的長度
D)在線性鏈表中,頭指針和鏈尾指針的動態變化決定鏈表的長度
A【解析】在棧中,通常用指針top來指示棧頂的位置,用指針bottom指向棧底。棧頂指針top動態反應了棧中元素的變化情況。在循環隊列中,隊頭指針和隊尾指針的動態變化決定隊列的長度。鏈式存儲結構中,各數據結點的存儲序號是不連續的,並且各結點在存儲空間中的位置關系與邏輯關系也不一致,故頭指針和尾指針或棧頂指針無法決定鏈表長度。
19.設棧的順序存儲空間為S(1:m),初始狀態為top=0。現經過一系列正常的入棧與退棧操作后,top=m+1,則棧中的元素個數為
A) 0
B)m
C)不可能
D)m+1
C【解析】棧為空時,棧頂指針top=0,經過入棧和退棧運算,指針始終指向棧頂元素。初始狀態為top=0,當棧滿時top=m,無法繼續入棧,top值不可能為m+1。
20.設棧的存儲空間為S(1:50),初始狀態為top=-1。現經過一系列正常的入棧與退棧操作后,top=30,則棧中的元素個數為
A)20
B)19
C)31
D)30
D【解析】棧的初始狀態為top=-1表示棧為空(沒有規定棧中棧底必須是0),經過一系列正常的入棧與退棧操作后top=30,則空間(1:30)中插入了元素,共30個。
21.設棧的順序存儲空間為S(1:m),初始狀態為top=m+1,則棧中的數據元素個數為
A)top-m+1
B)m-top+1
C)m-top
D)top-m
B【解析】棧的初始狀態top=m+1,說明棧空時top=m+1(m在棧底,1是開口向上的),入棧時棧頂指針是減操作(top=top-1),退棧時棧頂指針是加操作(top=top+1)。本題可以假設棧中有x個元素,當x=0時,也就是棧中沒有元素,則top=m+1;當x=m時,也就是棧滿,則top=1,由此可以得出top=m+1-x,繼而得出m-top+1。
22.設棧的順序存儲空間為S(1:m),初始狀態為top=m+1。現經過一系列正常的入棧與退棧操作后,top=0,則棧中的元素個數為
A)1
B)m
C)m+1
D)不可能
D【解析】棧的初始狀態為top=m+1,說明棧空時top=m+1,入棧時棧頂指針是減操作(top=top-1),退棧時棧頂指針是加操作(top=top+1)。棧滿時top=1,說明棧中不能再進行入棧操作,top=0的情況不會出現。
23.設棧的存儲空間為S(1:m),初始狀態為top=m+1。經過一系列入棧與退棧操作后,top=1。現又要將一個元素進棧,棧頂指針top值變為
A)0
B)發生棧滿的錯誤
C)m
D)2
B【解析】棧的初始狀態為top=m+1,說明棧空時top=m+1,入棧時棧頂指針是減操作(top=top-1),退棧時棧頂指針是加操作(top=top+1)。棧滿時top=1,說明棧中不能再進行入棧操作(“上溢”錯誤)。
24.設棧的存儲空間為S(1:m),初始狀態為top=m+1。經過一系列入棧與退棧操作后,top=m。現又在棧中退出一個元素后,棧頂指針top值為
A)0
B)m-1
C)m+1
D)產生棧空錯誤
C【解析】棧的順序存儲空間為S(1: m),初始狀態top=m+1,所以這個棧是m在棧底,1是開口向上的。經過一系列入棧與退棧操作后top=m,則棧中有1個元素,若現在又退出一個元素,那么棧頂指針下移一位,回到m+1的位置。
25.設棧的存儲空間為S(1:50),初始狀態為top=51。現經過一系列正常的入棧與退棧操作后,top=20,則棧中的元素個數為
A)31
B)30
C)21
D)20
A【解析】棧的初始狀態top=51,故本棧是51在棧底,入棧時棧頂指針是減操作(top=top-1),退棧時棧頂指針是加操作(top=top+1)。當top=20時,元素存儲在(20:50)空間中,因此共有50-20+1=31個元素。
26.下列處理中與隊列有關的是
A)二叉樹的遍歷
B)操作系統中的作業調度
C)執行程序中的過程調用
D)執行程序中的循環控制
B【解析】隊列是指允許在一端進行插入,而在另一端進行刪除的線性表。由於最先進入隊列的元素將最先出隊,所以隊列具有“先進先出”的特性,體現了“先來先服務”的原則。操作系統中的作業調度是指根據一定信息,按照一定的算法,從外存的后備隊列中選取某些作業調入內存分配資源並將新創建的進程插入就緒隊列的過程。執行程序中的過程調用一般指函數調用,需要調用時候轉入被調用函數地址執行程序,與隊列無關。執行程序中的循環控制是指算法的基本控制結構,包括對循環條件的判定與執行循環體,與隊列無關。二叉樹是一個有限的結點集合,二叉樹的遍歷是指不重復地訪問二叉樹中的所有結點,與隊列無關。
27.設有棧S和隊列Q,初始狀態均為空。首先依次將A,B,C,D,E,F入棧,然后從棧中退出三個元素依次入隊,再將X,Y,Z入棧后,將棧中所有元素退出並依次入隊,最后將隊列中所有元素退出,則退隊元素的順序為
A)DEFXYZABC
B)FEDZYXCBA
C)FEDXYZCBA
D)DEFZYXABC
B【解析】棧是一種特殊的線性表,它所有的插入與刪除都限定在表的同一端進行。隊列是指允許在一端進行插入,而在另一端進行刪除的線性表。將A,B,C,D,E,F入棧后,棧中元素為ABCDEF,退出三個元素入隊,隊列元素為FED,將X,Y,Z入棧后棧中元素為ABCXYZ,退棧全部入隊后,隊列元素為FEDZYXCBA。
28.下列敘述中正確的是
A)循環隊列是順序存儲結構
B)循環隊列是鏈式存儲結構
C)循環隊列空的條件是隊頭指針與隊尾指針相同
D)循環隊列的插入運算不會發生溢出現象
A【解析】循環隊列是隊列的一種順序存儲結構。在循環隊列中,在隊列滿和隊列為空時,隊頭指針與隊尾指針均相同;當需要插入的數據大於循環隊列的存儲長度,入隊運算會覆蓋前面的數據,發生溢出現象。
29.下列敘述中正確的是
A)在循環隊列中,隊尾指針的動態變化決定隊列的長度
B)在循環隊列中,隊頭指針和隊尾指針的動態變化決定隊列的長度
C)在帶鏈的隊列中,隊頭指針與隊尾指針的動態變化決定隊列的長度
D)在帶鏈的棧中,棧頂指針的動態變化決定棧中元素的個數
B【解析】在循環隊列中,隊頭指針和隊尾指針的動態變化決定隊列的長度。帶鏈的棧和帶鏈的隊列均采用鏈式存儲結構,而在這種結構中,各數據結點的存儲序號是不連續的,並且各結點在存儲空間中的位置關系與邏輯關系也不一致,故頭指針和尾指針或棧頂指針無法決定鏈表長度。
30.循環隊列的存儲空間為 Q(1:50),初始狀態為 front=rear=50。經過一系列正常的入隊與退隊操作后,front=rear=25,此后又插入一個元素,則循環隊列中的元素個數為
A)1,或50且產生上溢錯誤
B)51
C)26
D)2
A【解析】循環隊列長度為50,由初始狀態為front=rear=50可知此時循環隊列為空。入隊運算時,首先隊尾指針rear進1(即rear+1),然后在隊尾指針rear指向的位置插入新元素。當隊尾指針rear=50+1時,置rear=1。退隊運算時,排頭指針front進1(即front+1),然后刪除front指針指向的位置上的元素,當排頭指針front=50+1時,置front=1。當front=rear=25時可知隊列空或者隊列滿,此后又插入了一個元素,如果之前隊列為空,插入操作之后隊列里只有一個元素;如果插入之前隊列已滿(50個元素),執行插入則會產生溢出錯誤。
31.循環隊列的存儲空間為 Q(1:40),初始狀態為 front=rear=40。經過一系列正常的入隊與退隊操作后,front=rear=15,此后又退出一個元素,則循環隊列中的元素個數為
A) 14
B)15
C)40
D)39,或0且產生下溢錯誤
D【解析】當front=rear=15時可知隊列空或者隊列滿,此后又退出一個元素,如果之前隊列為空,退出操作會產生錯誤,隊列里有0個元素;如果退出之前隊列已滿(40個元素),執行退出后,隊列里還有39個元素。
32.設循環隊列的存儲空間為Q(1:50),初始狀態為front=rear=50。現經過一系列入隊與退隊操作后,front=rear=1,此后又正常地插入了兩個元素。最后該隊列中的元素個數為
A)3
B)1
C)2
D)52
C【解析】由front=rear=1可知隊列空或者隊列滿,此后又可以正常地插入了兩個元素說明插入前隊列為空,則插入后隊列元素個數為2。
33.設循環隊列的存儲空間為Q(1:m),初始狀態為空。現經過一系列正常的入隊與退隊操作后,front=m,rear=m-1,此后從該循環隊列中刪除一個元素,則隊列中的元素個數為
A)m-1
B)m-2
C)0
D)1
B【解析】從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素。如果rear-front>0,則隊列中的元素個數為rear-front個;如果rear-front<0,則隊列中的元素個數為rear-front+m。該題中m-1<m,即rear-front<0,則該循環隊列中的元素個數為(m-1)-m+m=m-1。此后從該循環隊列中刪除一個元素,則隊列中的元素個數為m-1-1=m-2。
34.設循環隊列的存儲空間為Q(1:m),初始狀態為空。現經過一系列正常的入隊與退隊操作后,front=m-1,rear=m,此后再向該循環隊列中插入一個元素,則隊列中的元素個數為
A) m
B)m-1
C)1
D)2
D【解析】該題中m-1<m,即rear-front>0,則該循環隊列中的元素個數為m-(m-1)=1。此后從該循環隊列中插入一個元素,則隊列中的元素個數為1+1=2。
35.設循環隊列為Q(1:m),其初始狀態為front=rear=m。經過一系列入隊與退隊運算后,front=30,rear=10。現要在該循環隊列中作順序查找,最壞情況下需要比較的次數為
A)19
B)20
C)m-19
D)m-20
D【解析】front=30,rear=10,front>rear,則隊列中有10-30+m=m-20個元素,在作順序查找時,最壞情況下(最后一個元素才是要找的元素或沒有要查找的元素)比較次數為m-20次。
36.設循環隊列的存儲空間為Q(1:m),初始狀態為 front=rear=m。經過一系列正常的操作后,front=1,rear=m。為了在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數為
A)0
B)1
C)m-2
D)m-1
C【解析】該題中1<m,即rear-front>0,則該循環隊列中的元素個數為m-1。此在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數為m-1-1=m-2。
37.設循環隊列的存儲空間為Q(1:50),初始狀態為front=rear=50。經過一系列正常的操作后,front-1=rear。為了在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數為
A)48
B)49
C)1
D)0
A【解析】該題中rear-front=front-1- front<0,則該循環隊列中的元素個數為rear-front+50=front-1- front+50=49。在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數為49-1=48。
38.設循環隊列的存儲空間為Q(1:50),初始狀態為front=rear=50。經過一系列正常的操作后,front=rear-1。為了在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數為
A)1
B)0
C)49
D)50
B【解析】該題中rear-front=rear-(rear-1)>0,則該循環隊列中的元素個數為rear-front=rear-(rear-1)=1。因隊列中只有1個元素,故尋找值最大的元素不需要進行比較,即比較次數為0。
39.線性表的鏈式存儲結構與順序存儲結構相比,鏈式存儲結構的優點有
A)節省存儲空間
B)插入與刪除運算效率高
C)便於查找
D)排序時減少元素的比較次數
B【解析】線性表的順序存儲結構稱為順序表,線性表的鏈式存儲結構稱為鏈表,兩者的優缺點如下表所示。
類型 |
優點 |
缺點 |
順序表 |
(1)可以隨機存取表中的任意結點 (2)無需為表示結點間的邏輯關系額外增加存儲空間 |
(1)插入和刪除運算效率低 (2)存儲空間不便於擴充 (3)不便於對存儲空間的動態分配 |
鏈表 |
(1)在進行插入和刪除運算時,只需要改變指針即可,不需要移動元素 (2)存儲空間易於擴充並且方便空間的動態分配 |
需要額外的空間(指針域)來表示數據元素之間的邏輯關系,存儲密度比順序表低 |
40.下列結構中屬於線性結構鏈式存儲的是
A)雙向鏈表
B)循環隊列
C)二叉鏈表
D)二維數組
A【解析】雙向鏈表也叫雙鏈表,是鏈表(采用鏈式存儲結構)的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。循環隊列是隊列的一種順序存儲結構。二叉鏈表和二維數組屬於非線性結構。
41.在線性表的鏈式存儲結構中,其存儲空間一般是不連續的,並且
A)前件結點的存儲序號小於后件結點的存儲序號
B)前件結點的存儲序號大於后件結點的存儲序號
C)前件結點的存儲序號可以小於也可以大於后件結點的存儲序號
D)以上三種說法均不正確
C【解析】在線性表的鏈式存儲結構中,各數據結點的存儲序號是不連續的,並且各結點在存儲空間中的位置關系與邏輯關系也不一致,因此前件結點的存儲序號與后件結點的存儲序號之間不存在大小關系。
42.下列敘述中正確的是
A)結點中具有兩個指針域的鏈表一定是二叉鏈表
B)結點中具有兩個指針域的鏈表可以是線性結構,也可以是非線性結構
C)循環鏈表是循環隊列的鏈式存儲結構
D)循環鏈表是非線性結構
B【解析】結點中具有兩個指針域的鏈表既可以是雙向鏈表也可以是二叉鏈表,雙向鏈表是線性結構,二叉鏈表屬於非線性結構。循環鏈表是線性鏈表的一種形式,屬於線性結構,采用鏈式存儲結構,而循環隊列是隊列的一種順序存儲結構。
43.帶鏈的棧與順序存儲的棧相比,其優點是
A)入棧與退棧操作方便
B)可以省略棧底指針
C)入棧操作時不會受棧存儲空間的限制而發生溢出
D)所占存儲空間相同
C【解析】帶鏈的棧就是用一個線性鏈表來表示的棧,線性鏈表不受存儲空間大小的限制,因此入棧操作時不會受棧存儲空間的限制而發生溢出(不需考慮棧滿的問題)。
44.下列敘述中正確的是
A)帶鏈棧的棧底指針是隨棧的操作而動態變化的
B)若帶鏈隊列的隊頭指針與隊尾指針相同,則隊列為空
C)若帶鏈隊列的隊頭指針與隊尾指針相同,則隊列中至少有一個元素
D)不管是順序棧還是帶鏈的棧,在操作過程中其棧底指針均是固定不變的
A【解析】由於帶鏈棧利用的是計算機存儲空間中的所有空閑存儲結點,因此隨棧的操作棧頂棧底指針動態變化。帶鏈的隊列中若只有一個元素,則頭指針與尾指針相同。
45.帶鏈棧空的條件是
A)top=bottom=NULL
B)top=-1 且 bottom=NULL
C)top=NULL 且 bottom=-1
D)top=bottom=-1
A【解析】在帶鏈的棧中,只會出現棧空和非空兩種狀態。當棧為空時,有top=bottom=NULL;當棧非空時,top指向鏈表的第一個結點(棧頂)。
46.在帶鏈棧中,經過一系列正常的操作后,如果top=bottom,則棧中的元素個數為
A)0 或 1
B)0
C)1
D)棧滿
A【解析】帶鏈棧就是沒有附加頭結點、運算受限的單鏈表。棧頂指針就是鏈表的頭指針。如果棧底指針指向的存儲單元中存有一個元素,則當top=bottom時,棧中的元素個數為1;如果棧底指針指向的存儲單元中沒有元素,則當top=bottom時,棧中的元素個數為0。
47.某帶鏈棧的初始狀態為top=bottom=NULL,經過一系列正常的入棧與退棧操作后,top=bottom=20。該棧中的元素個數為
A)0
B)1
C)20
D)不確定
B【解析】帶鏈的棧就是用一個單鏈表來表示的棧,棧中的每一個元素對應鏈表中的一個結點。棧為空時,頭指針和尾指針都為NULL;棧中只有一個元素時,頭指針和尾指針都指向這個元素。
48.某帶鏈棧的初始狀態為top=bottom=NULL,經過一系列正常的入棧與退棧操作后,top=10,bottom=20。該棧中的元素個數為
A)0
B)1
C)10
D)不確定
D【解析】帶鏈的棧使用了鏈表來表示棧,而鏈表中的元素存儲在不連續的地址中,因此當top=10,bottom=20時,不能確定棧中元素的個數。
49.帶鏈隊列空的條件是
A)front=rear=NULL
B)front=-1 且 rear=NULL
C)front=NULL 且 rear=-1
D)front=rear=-1
A【解析】帶鏈的隊列就是用一個單鏈表來表示的隊列,隊列中的每一個元素對應鏈表中的一個結點。隊列空時,頭指針和尾指針都為NULL。
50.在帶鏈隊列中,經過一系列正常的操作后,如果front=rear,則隊列中的元素個數為
A)0
B)1
C)0 或 1
D)隊列滿
C【解析】帶鏈隊列空時,頭指針和尾指針都為NULL;隊列中只有一個元素時,頭指針和尾指針都指向這個元素。
51.某帶鏈的隊列初始狀態為front=rear=NULL。經過一系列正常的入隊與退隊操作后,front=rear=10。該隊列中的元素個數為
A)0
B)1
C)1或0
D)不確定
B【解析】帶鏈隊列空時,頭指針和尾指針都為null;隊列中只有一個元素時,頭指針和尾指針都指向這個元素。
52.某帶鏈的隊列初始狀態為front=rear=NULL。經過一系列正常的入隊與退隊操作后,front=10, rear=5。該隊列中的元素個數為
A)4
B)5
C)6
D)不確定
D【解析】帶鏈的隊列使用了鏈表來表示隊列,而鏈表中的元素存儲在不連續的地址中,因此當front=10,rear=5時,不能確定隊列中元素的個數。
53.下列敘述中錯誤的是
A)循環鏈表中有一個表頭結點
B)循環鏈表是循環隊列的存儲結構
C)循環鏈表的表頭指針與循環鏈表中最后一個結點的指針均指向表頭結點
D)循環鏈表實現了空表與非空表運算的統一
B【解析】循環鏈表是指在單鏈表的第一個結點前增加一個表頭結點,隊頭指針指向表頭結點,最后一個結點的指針域的值由NULL改為指向表頭結點。循環鏈表是線性表的一種鏈式存儲結構,循環隊列是隊列的一種順序存儲結構。
54.從表中任何一個結點位置出發就可以不重復地訪問到表中其他所有結點的鏈表是
A)循環鏈表
B)雙向鏈表
C)單向鏈表
D)二叉鏈表
A【解析】在循環鏈表中,所有結點的指針構成了一個環狀鏈,只要指出表中任何一個結點的位置,就可以從它出發不重復地訪問到表中其他所有結點。
55.非空循環鏈表所表示的數據結構
A)有根結點也有葉子結點
B)沒有根結點但有葉子結點
C)有根結點但沒有葉子結點
D)沒有根結點也沒有葉子結點
A【解析】循環鏈表表頭結點為根結點,鏈表的最后一個結點為葉子節點,雖然它含有一個指向表頭結點的指針,但是表頭結點並不是它的一個后件。
56.下列結構中為非線性結構的是
A)樹
B)向量
C)二維表
D)矩陣
A【解析】由定義可以知道,樹為一種簡單的非線性結構。在數這種數據結構中,所有數據元素之間的關系具有明顯的層次特性。
57.某棵樹中共有25個結點,且只有度為3的結點和葉子結點,其中葉子結點有7個,則該樹中度為3的結點數為
A)6
B)7
C)8
D)不存在這樣的樹
D【解析】根據題意,樹中只有度為3的結點和葉子結點(7個),則度為3的結點有25-7=18個;又根據樹中的結點數=樹中所有結點的度之和+1,設度為3的結點數為n,則3n+1=25,得n=8。兩種方式得到的度為3的結點數不同,故不存在這樣的樹。
58.某棵樹的度為4,且度為4、3、2、1的結點個數分別為1、2、3、4,則該樹中的葉子結點數為
A)11
B)9
C)10
D)8
A【解析】設葉子結點數為n,根據樹中的結點數=樹中所有結點的度之和+1,得4×1+3×2+2×3+1×4+n×0+1=21,則n=21-1-2-3-4=11。
59.設一棵樹的度為3,共有27個結點,其中度為3,2,0的結點數分別為4,1,10。該樹中度為1的結點數為
A) 11
B) 12
C) 13
D)不可能有這樣的樹
B【解析】設度為1的結點數為n,根據樹中的結點數=樹中所有結點的度之和+1,得3×4+2×1+1×n+0×10+1=27,則n=12。
60.設一棵度為3的樹,其中度為2,1,0的結點數分別為3,1,6。該樹中度為3的結點數為
A)1
B)2
C)3
D)不可能有這樣的樹
A【解析】設樹的結點數為n,則度為3的結點數為n-3-1-6=n-10,根據樹中的結點數=樹中所有結點的度之和+1,得3×(n-10)+2×3+1×1+0×6+1=n,解得n=11,則度為3的結點數為n-10=11-10=1。
61.設一棵樹的度為3,其中沒有度為2的結點,且葉子結點數為5。該樹中度為3的結點數為
A) 3
B)1
C) 2
D)不可能有這樣的樹
C【解析】設樹的結點數為m,度為3的結點數為n,則度為1的結點數為m-n-5, 根據樹中的結點數=樹中所有結點的度之和+1,得3×n+1×(m-n-5)+5×0+1=m,則n=2。
62.度為3的一棵樹共有30個結點,其中度為3,1的結點個數分別為3,4。則該樹中的葉子結點數為
A) 14
B) 15
C) 16
D)不可能有這樣的樹
B【解析】設葉子結點數為n,則度為2的結點數為30-3-4-n=23-n,根據樹中的結點數=樹中所有結點的度之和+1,得3×3+2×(23-n)+1×4+0×n+1=30,則n=15。
63.設某棵樹的度為3,其中度為2,1,0的結點個數分別為3,4,15。則該樹中總結點數為
A)不可能有這樣的樹
B)30
C)22
D)35
A【解析】設樹的總結點數為n,則度為3的結點數為n-3-4-15=n-22,根據樹中的結點數=樹中所有結點的度之和+1,得3×(n-22)+2×3+1×4+0×15+1=n,則n=27.5,求出的結點數不為整數,故不可能有這樣的樹存在。
64.某二叉樹共有845個結點,其中葉子結點有45個,則度為1的結點數為
A)400
B)754
C)756
D)不確定
C【解析】葉子結點有45個,根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,則度為2的結點數為44個,因此度為1的結點數為845-45-44=756個。
65.某二叉樹中有15個度為1的結點,16個度為2的結點,則該二叉樹中總的結點數為
A)32
B)46
C)48
D)49
C【解析】根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,得度為0的結點數為16+1=17個,故總的結點數=17+15+16=48個。
66.某二叉樹共有730個結點,其中度為1的結點有30個,則葉子結點個數為
A) 1
B)351
C) 350
D)不存在這樣的二叉樹
D【解析】設葉子結點數為n,根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,則度為2的結點數為n-1,n+n-1+30=730,得n=350.5。由於結點數只能為整數,所以不存在這樣的二叉樹。
67.某二叉樹中共有350個結點,其中200個為葉子結點,則該二叉樹中度為2的結點數為
A)不可能有這樣的二叉樹
B)150
C)199
D)149
A【解析】葉子結點數為200,根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,則度為2的結點數為199,199+200>350,故不存在這樣的二叉樹。
68.某二叉樹的深度為7,其中有64個葉子結點,則該二叉樹中度為1的結點數為
A)0
B)1
C)2
D)63
A【解析】葉子結點有64個,根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,則度為2的結點數為63個;又深度為m的二叉樹最多有2m-1個結點,則該二叉樹最多有27-1=127個結點。64+63=127,因此該樹不存在度為1的結點。
69.深度為7的二叉樹共有127個結點,則下列說法中錯誤的是
A)該二叉樹是滿二叉樹
B)該二叉樹有一個度為1的結點
C)該二叉樹是完全二叉樹
D)該二叉樹有64個葉子結點
B【解析】滿二叉樹滿足深度為m的二叉樹最多有2m-1個結點,本題中二叉樹深度為7且有127個結點,滿足27-1=127,達到最大值,故此二叉樹為滿二叉樹,也是完全二叉樹。滿二叉樹第k層上有2k-1結點,則該二叉樹的葉子結點數為27-1=64個。滿二叉樹不存在度為1的結點。
70.深度為5的完全二叉樹的結點數不可能是
A)15
B)16
C)17
D)18
A【解析】設完全二叉樹的結點數為n,根據深度為k的二叉樹至多有2k-1個結點,再根據完全二叉樹的定義可知,2k-1-1<n≤2k-1。本題中完全二叉樹的深度為5,則25-1-1<n≤25-1,15<n≤31。因此,結點數不能為15。
71.某完全二叉樹共有256個結點,則該完全二叉樹的深度為
A)7
B)8
C)9
D)10
C【解析】根據完全二叉樹的性質:具有n個結點的完全二叉樹的深度為[log2n]+1。本題中完全二叉樹共有256個結點,則深度為[log2256]+1=8+1=9。
72.深度為7的完全二叉樹中共有125個結點,則該完全二叉樹中的葉子結點數為
A)62
B)63
C)64
D)65
B【解析】在滿二叉樹的第k層上有2k-1個結點、且深度為m的滿二叉樹有2m-1個結點,則深度為6的滿二叉樹共有26-1=63個結點,第6層上有26-1=32個結點。本題是深度為7的完全二叉樹,則前6層共有63個結點,第7層的結點數為125-63=62個且全為葉子結點。由於第6層上有32個結點,第7層上有62個結點,則第6層上有1個結點無左右子樹(該結點為葉子結點)。因此,該完全二叉樹中共有葉子結點62+1=63個。
73.在具有2n個結點的完全二叉樹中,葉子結點個數為
A)n
B)n+1
C)n-1
D)n/2
A【解析】由二叉樹的定義可知,樹中必定存在度為0的結點和度為2的結點,設度為0結點有a個,根據度為0的結點(即葉子結點)總比度為2的結點多一個,得度為2的結點有a-1個。再根據完全二叉樹的定義,度為1的結點有0個或1個,假設度1結點為0個,a+0+a-1=2n,得2a=2n-1,由於結點個數必須為整數,假設不成立;當度為1的結點為1個時,a+1+a-1=2n,得a=n,即葉子結點個數為n。
74.下列數據結構中為非線性結構的是
A)二叉鏈表
B)循環隊列
C)循環鏈表
D)雙向鏈表
A【解析】二叉樹的鏈式存儲結構也稱為二叉鏈表,二叉樹是樹的一種,屬於非線性結構。
75.下列敘述中正確的是
A)非完全二叉樹可以采用順序存儲結構
B)有兩個指針域的鏈表就是二叉鏈表
C)有的二叉樹也能用順序存儲結構表示
D)順序存儲結構一定是線性結構
C【解析】在計算機中,二叉樹通常采用鏈式存儲結構,但對於滿二叉樹和完全二叉樹來說,可以按層進行順序存儲。因此A項錯誤,C項正確。雖然滿二叉樹和完全二叉樹可以采用順序存儲結構,但仍是一種非線性結構,因此D項錯誤。雙向鏈表也有兩個指針域,因此B項錯誤。
76.有二叉樹如下圖所示:
則前序序列為
A)ABDEGCFH
B)DBGEAFHC
C)DGEBHFCA
D)ABCDEFGH
A【解析】前序遍歷首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹;在遍歷左、右子樹時,仍然先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。故本題前序序列是ABDEGCFH。
中序遍歷首先遍歷左子樹,然后訪問跟結點,最后遍歷右子樹;在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問跟結點,最后遍歷右子樹。故本題的中序序列是DBGEAFHC。
后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點;在遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。故本題的后序序列是DGEBHFCA。
77.設二叉樹的前序序列為ABDEGHCFIJ,中序序列為DBGEHACIFJ。則后序序列為
A)JIHGFEDCBA
B)DGHEBIJFCA
C)GHIJDEFBCA
D)ABCDEFGHIJ
B【解析】二叉樹的前序序列為ABDEGHCFIJ,由於前序遍歷首先訪問根結點,可以確定該二叉樹的根結點是A。再由中序序列為DBGEHACIFJ,可以得到結點D、B、G、E、H位於根結點的左子樹上,結點C、I、F、J位於根結點的右子樹上。由於中序遍歷和后序遍歷都是先遍歷左子樹,故本題后序遍歷首先訪問D結點;再由后序遍歷是最后訪問根結點,故本題后序遍歷最后訪問的結點是根結點A。采用排除法可知,后續序列為DGHEBIJFCA。
78.某二叉樹的中序遍歷序列為CBADE,后序遍歷序列為CBEDA,則前序遍歷序列為
A)CBADE
B)CBEDA
C)ABCDE
D)EDCBA
C【解析】二叉樹的后序遍歷序列為CBEDA,由於后序遍歷最后訪問根結點,可以確定該二叉樹的根結點是A。再由中序遍歷序列為CBADE,可以得到子序列(CB)一定在左子樹中,子序列(DE)一定在右子樹中。結點C、B在中序序列和后序序列中順序未變,說明結點B是結點C的父結點;結點D、E在中序序列和后序序列中順序相反,說明結點D是結點E的父結點。因此該二叉樹的前序遍歷序列為ABCDE。
79. 某二叉樹的前序序列為ABCDEFG,中序序列為DCBAEFG,則該二叉樹的深度(根結點在第1層)為
A)2
B)3
C)4
D)5
C【解析】二叉樹的前序序列為ABCDEFG,則A為根結點;中序序列為DCBAEFG,可知結點D、C、B位於根結點的左子樹上,結點E、F、G位於根結點的右子樹上。另外,結點B、C、D在前序序列和中序序列中順序相反,則說明這三個結點依次位於前一個結點的左子樹上;結點E、F、G順序未變,則說明這三個結點依次位於前一個結點的右子樹上。故二叉樹深度為4。
80.設二叉樹的前序序列與中序序列均為ABCDEFGH,則該二叉樹的后序序列為
A)ABCDHGFE
B)DCBAHGFE
C)EFGHABCD
D)HGFEDCBA
D【解析】二叉樹的前序序列與中序序列均為ABCDEFGH,可知二叉樹根結點為A,且根結點A只有右子樹,沒有左子樹。同理,可以推出結點B只有右子樹無左子樹。依此類推,該二叉樹除葉子結點外,每個結點只有右子樹無左子樹。因此該二叉樹的后序序列為HGFEDCBA。
81.某二叉樹的后序遍歷序列與中序遍歷序列相同,均為ABCDEF,則按層次輸出(同一層從左到右)的序列為
A)CBAFED
B)FEDCBA
C)DEFCBA
D)ABCDEF
B【解析】該二叉樹的后序遍歷序列與中序遍歷序列均為ABCDEF,則根結點為F;根結點F只有左子樹,右子樹為空。即ABCDE是根結點F的右子樹集合。這樣問題就轉化為就后序遍歷序列與中序遍歷序列均為ABCDE的子樹,同理可得左子樹集合的根結點為E,且根結點只有左子樹右子樹。依次類推,該二叉樹除葉子結點外,每個結點只有左子樹無右子樹,結構如下:
按層次輸出(同一層從左到右)的序列為FEDCBA。
82.某二叉樹的前序序列為ABDFHCEG,中序序列為HFDBACEG。該二叉樹按層次輸出(同一層從左到右)的序列為
A)HGFEDCBA
B)HFDBGECA
C)ABCDEFGH
D)ACEGBDFH
C【解析】二叉樹的前序序列為ABDFHCEG,可以確定這個二叉樹的根結點是A;再由中序序列HFDBACEG,可以得到HFDB為根結點A的左子樹,CEG為根結點A的右子樹。同理依次對左子樹HFDB和右子樹CEG進行同樣的推理,得到該二叉樹的結構如下:
該二叉樹按層次輸出(同一層從左到右)的序列為ABCDEFGH。
83.某完全二叉樹按層次輸出(同一層從左到右)的序列為ABCDEFGH。該完全二叉樹的前序序列為
A)ABCDEFGH
B)ABDHECFG
C)HDBEAFCG
D)HDEBFGCA
B【解析】完全二叉樹的特點是除最后一層外,每一層上的結點數均達到最大值;在最后一層上只缺少右邊的若干結點。根據這一特點,再根據題意輸出序列為ABCDEFGH,可以得到該二叉樹的結構如下:
故此完全二叉樹的前序序列為ABDHECFG。
84.設非空二叉樹的所有子樹中,其左子樹上的結點值均小於根結點值,而右子樹上的結點值均不小於根結點值,則稱該二叉樹為排序二叉樹。對排序二叉樹的遍歷結果為有序序列的是
A)前序序列
B)中序序列
C)后序序列
D)前序序列或后序序列
B【解析】中序遍歷的次序是先遍歷左子樹,再遍歷根結點,最后遍歷右子樹。而在排序二叉樹中,左子樹結點值<根結點值≤右子樹結點值,要使對排序二叉樹的遍歷結果為有序序列,只能采用中序遍歷。
85.設二叉樹中共有15個結點,其中的結點值互不相同。如果該二叉樹的前序序列與中序序列相同,則該二叉樹的深度為
A)4
B)6
C)15
D)不存在這樣的二叉樹
C【解析】在具有n個結點的二叉樹中,如果各結點值互不相同,若該二叉樹的前序序列與中序序列相同,則說明該二叉樹只有右子樹,左子樹為空,二叉樹的深度為n;若該二叉樹的后序序列與中序序列相同,則說明該二叉樹只有左子樹,右子樹為空,二叉樹的深度為n。故本題中二叉樹的深度為15。
86.在長度為n的順序表中查找一個元素,假設需要查找的元素一定在表中,並且元素出現在表中每個位置上的可能性是相同的,則在平均情況下需要比較的次數為
A)n/4
B)n
C)3n/4
D)(n+1)/2
D【解析】在順序表中查找,最好情況下第一個元素就是要查找的元素,則比較次數為1;在最壞情況下,最后一個元素才是要找的元素,則比較次數為n。則平均比較次數:(1+2+┉+n)/n=(n(n+1)/2)/n=(n+1)/2。
87.在長度為n的順序表中查找一個元素,假設需要查找的元素有一半的機會在表中,並且如果元素在表中,則出現在表中每個位置上的可能性是相同的。則在平均情況下需要比較的次數大約為
A)n
B)3n/4
C)n/2
D)n/4
B【解析】在順序表中查找,最好情況下第一個元素就是要查找的元素,則比較次數為1;在最壞情況下,最后一個元素才是要找的元素,則比較次數為n。這是找到元素的情況。如果沒有找到元素,則要比較n次。因此,平均需要比較:找到元素的情況×+未找到元素的情況×=(1+2+┉+n)/n×+n×=,大約為。
88.下列算法中均以比較作為基本運算,則平均情況與最壞情況下的時間復雜度相同的是
A)在順序存儲的線性表中尋找最大項
B)在順序存儲的線性表中進行順序查找
C)在順序存儲的有序表中進行對分查找
D)在鏈式存儲的有序表中進行查找
A【解析】尋找最大項,無論如何都要查看所有的數據,與數據原始排列順序沒有多大關系,無所謂最壞情況和最好情況,或者說平均情況與最壞情況下的時間復雜度是相同的。而查找無論是對分查找還是順序查找,都與要找的數據和原始的數據排列情況有關,最好情況是第1次查看的一個數據恰好是要找的數據,只需要比較1次;如果沒有找到再查看下一個數據,直到找到為止,最壞情況下是最后一次查看的數據才是要找的,順序查找和對分查找在最壞情況下比較次數分別是n和log2n,平均情況則是1~最壞情況的平均,因而是不同的。
89.線性表的長度為n。在最壞情況下,比較次數為n-1的算法是
A)順序查找
B)同時尋找最大項與最小項
C)尋找最大項
D)有序表的插入
C【解析】順序查找要逐個查看所有元素,會比較n次。在最壞情況下,尋找最大項無論如何需要查看表中的所有元素,n個元素比較次數為n-1。同時尋找最大項和最小項,需要為判斷較大值和較小值分別進行比較,會有更多的比較次數。有序表的插入最壞情況下是插入到表中的最后一個元素的后面位置,則會比較n次。
90.下列敘述中正確的是
A)二分查找法只適用於順序存儲的有序線性表
B)二分查找法適用於任何存儲結構的有序線性表
C)二分查找法適用於有序循環鏈表
D)二分查找法適用於有序雙向鏈表
A【解析】二分查找法(又稱對分查找法)只適用於順序存儲的有序表。在此所說的有序表是指線性表的中元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。
91.設有序線性表的長度為n,則在有序線性表中進行二分查找,最壞情況下的比較次數為
A)n(n-1)/2
B)n
C)nlog2n
D)log2n
D【解析】有序線性表的長度為n,設被查找元素為x,則二分查找的方法如下:將x與線性表的中間項比較:若中間項的值等於x,則說明查到,查找結束;若x小於中間項的值,則在線性表的前半部分(即中間項以前的部分)以相同的方法進行查找;若x大於中間項的值,則在線性表的后半部分(即中間項以后的部分)以相同的方法進行查找。這個過程一直進行到查找成功或子表長度為0(說明線性表中沒有這個元素)為止。對於長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次。
92.在長度為97的順序有序表中作二分查找,最多需要的比較次數為
A)48
B)96
C)7
D)6
C【解析】對於長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次。本題中n=97,最多需要的比較次數為log297,6<log297<7,故需要比較7次。
93.設表的長度為n。下列查找算法中,在最壞情況下,比較次數最少的是
A)順序查找
B)尋找最大項
C)尋找最小項
D)有序表的二分查找
D【解析】在最壞情況下的比較次數:順序查找為n,尋找最大項和最小項均為n-1,有序表的二分查找為log2n。
94.設順序表的長度為40,對該表進行冒泡排序。在最壞情況下需要的比較次數為
A)40
B)41
C)780
D)820
C【解析】對長度為n的線性表排序,在最壞情況下,冒泡排序需要經過n/2遍的從前住后的掃描和n/2遍的從后住前的掃描,需要比較的次數為n(n-1)/2。本題中n=40,故比較次數為40×(40-1)÷2=780。
95.在快速排序法中,每經過一次數據交換(或移動)后
A)只能消除一個逆序
B)能消除多個逆序
C)不會產生新的逆序
D)消除的逆序個數一定比新產生的逆序個數多
B【解析】在一個排列中,如果一對數的前后位置與大小順序相反,即前面的數大於后面的數,那么它們就稱為一個逆序。快速排序的思想是:從線性表中選取一個元素,設為T,將線性表中后面小於T的元素移到前面,而前面大於T的元素移到后面,結果就將線性表分成兩部分(稱兩個子表),T插入到其分割線的位置處,這個過程稱為線性表的分割,然后再用同樣的方法對分割出的子表再進行同樣的分割。快速排序不是對兩個相鄰元素進行比較,可以實線通過一次交換而消除多個逆序,但由於均與T(基准元素)比較,也可能會產生新的逆序。
96.設表的長度為15。則在最壞情況下,快速排序所需要的比較次數為
A)75
B)55
C)15
D)105
D【解析】快速排序在最壞情況下需要進行n(n-1)/2次比較,但實際的排序效率要比冒泡排序高得多。本題中n=15,15×(15-1)÷2=105。
97.設順序表的長度為16,對該表進行簡單插入排序。在最壞情況下需要的比較次數為
A)120
B)60
C)30
D)15
A【解析】簡單插入排序在最壞情況下,即初始排序序列是逆序的情況下,比較次數為n(n-1)/2,移動次數為n(n-1)/2。本題中n=16,16×(16-1)÷2=8×15=120。
98.在希爾排序法中,每經過一次數據交換后
A)不會產生新的逆序
B)只能消除一個逆序
C)能消除多個逆序
D)消除的逆序個數一定比新產生的逆序個數多
C【解析】希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。在子序列中每進行一次比較就有可能移去整個線性表中的多個逆序,從而改善整個排序過程的性能。
99.下列序列中不滿足堆條件的是
A)(98,95,93,94,89,90,76,80,55,49)
B)(98,95,93,94,89,85,76,64,55,49)
C)(98,95,93,94,89,90,76,64,55,49)
D)(98,95,93,96,89,85,76,64,55,49)
D【解析】根據堆的定義,n個元素的序列(h1,h2,…hn),當且僅當hi≤h2i且hi≤h2i+1時為小頂堆,當且僅當hi≥h2i且hi≥h2i+1時為大頂堆。D項中,h2=95,h4=96,h2<h4,但h5=89,h2>h5,不滿足小頂堆和大頂堆條件。
100.在最壞情況下,堆排序的時間復雜度是
A)O(log2n)
B)O(nlog2n)
C)O(n2)
D)O(n1.5)
B【解析】堆排序的方法對於規模較小的線性表並不合適,但對於較大規模的線性表來說是很有效的。在最壞情況下,堆排序需要比較次數為nlog2n,時間復雜度為O(nlog2n)。
101.設順序表的長度為n。下列算法中,最壞情況下比較次數等於n(n-1)/2的是
A)快速排序
B)堆排序
C)順序查找
D)尋找最大項
A【解析】對於長度為n的線性表,最壞情況下查找或排序的次數如下表:
類型 |
最壞情況下查找或比較次數 |
時間復雜度 |
順序查找 |
n |
O(n) |
需找最大項或最小項 |
n-1 |
O(n-1) |
二分查找法 |
log2n |
O(log2n) |
冒泡排序法 |
n(n-1)/2 |
O(n(n-1)/2) |
快速排序法 |
n(n-1)/2 |
O(n(n-1)/2) |
簡單插入排序法 |
n(n-1)/2 |
O(n(n-1)/2) |
希爾排序法 |
nr(1<r<2) |
O(n1.5)) |
簡單選擇排序法 |
n(n-1)/2 |
O(n(n-1)/2) |
堆排序 |
nlog2n |
O(nlog2n) |
102.下列各組排序法中,最壞情況下比較次數相同的是
A)簡單選擇排序與堆排序
B)簡單插入排序與希爾排序
C)冒泡排序與快速排序
D)希爾排序與堆排序
C【解析】最壞情況下比較次數:簡單選擇排序為n(n-1)/2,堆排序為nlog2n,簡單插入排序為n(n-1)/2,希爾排序為nr(1<r<2),冒泡排序為n(n-1)/2,快速排序為n(n-1)/2。故比較次數相同的是冒泡排序與快速排序。
103.下列排序方法中,最壞情況下時間復雜度(即比較次數)最低的是
A)快速排序
B)希爾排序
C)簡單插入排序
D)冒泡排序
B【解析】最壞情況下,希爾排序需要比較nr(1<r<2)次,快速排序、簡單插入排序、冒泡排序均需要比較n(n-1)/2次,故希爾排序時間復雜度最低。
104.下列各排序法中,最壞情況下的時間復雜度最低的是
A)堆排序
B)快速排序
C)希爾排序
D)冒泡排序
A【解析】最壞情況下,堆排序需要比較nlog2n次,希爾排序需要比較nr(1<r<2)次,快速排序、冒泡排序均需要比較n(n-1)/2次。故堆排序時間復雜度最低。
105.下面屬於良好程序設計風格的是
A)源程序文檔化
B)程序效率第一
C)隨意使用無條件轉移語句
D)程序輸入輸出的隨意性
A【解析】要形成良好的程序設計風格,主要應注意和考慮:源程序文檔化;數據說明的次序規范化,說明語句中變量安排有序化,使用注釋來說明復雜數據的結構;程序編寫要做到清晰第一、效率第二,先保證程序正確再要求提高速度,避免不必要的轉移;對所有的輸入數據都要進行檢驗,確保輸入數據的合法性。
106.下面不屬於結構化程序設計原則的是
A)逐步求精
B)自頂向下
C)模塊化
D)可繼承性
D【解析】結構化程序設計方法的原則包括:自頂向下、逐步求精、模塊化、限制使用goto語句。可繼承性是面向對象方法的特點。
107.結構化程序設計風格強調的是
A)程序的執行效率
B)程序的易讀性
C)不考慮goto語句的限制使用
D)程序的可移植性
B【解析】按結構化程序設計方法設計出的程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以確保程序的正確性,程序容易閱讀並被人理解,便於用戶使用和維護。可見結構化程序設計風格強調的是易讀性。
108.結構化程序的三種基本控制結構是
A)順序、選擇和調用
B)過程、子程序和分程序
C)順序、選擇和重復(循環)
D)調用、返回和轉移
C【解析】1966年Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。
109.不屬於對象構成成份的是
A)規則
B)屬性
C)方法(或操作)
D)標識
A【解析】對象由一組表示其靜態特征的屬性和它執行的一組操作組成,對象名唯一標識一個對象。
110.下面對“對象”概念描述正確的是
A)屬性就是對象
B)操作是對象的動態屬性
C)任何對象都必須有繼承性
D)對象是對象名和方法的封裝體
B【解析】對象是由描述該對象屬性的數據以及可以對這些數據施加的所有操作封裝在一起構成的統一體。對象可以做的操作表示它的動態行為,通常也稱為方法或服務,屬性即對象所包含的信息。對象可以有繼承性,但並不是任何對象都必須有繼承性。
111.下面不屬於對象主要特征的是
A)對象唯一性
B)對象分類性
C)對象多態性
D)對象可移植性
D【解析】對象有如下一些基本特點:
①標識唯一性:指對象是可區分的,並且由對象的內在本質來區分,而不是通過描述來區分。
②分類性:指可以將具有相同屬性和操作的對象抽象成類。
③多態性:指同一個操作可以是不同對象的行為,不同對象執行同一類操作產生不同的結果。
④封裝性:從外面看只能看到對象的外部特征,對象的內部對外是不可見的。
⑤模塊獨立性好。
112.將自然數集設為整數類I,則下面屬於類I實例的是
A)-518
B)5.18
C)518
D)518E-2
C【解析】類是具有共同屬性、共同方法的對象的集合。類是對象的抽象,它描述了屬於該對象類型的所有對象的性質,而一個對象則是其對應類的一個實例。自然數集是全體非負整數組成的集合,A項是負數實例,B項是浮點數實例,D項是用科學計數法表示的浮點數實例。
113.下面敘述中正確的是
A)軟件是程序、數據及相關文檔的集合
B)軟件中的程序和文檔是可執行的
C)軟件中的程序和數據是不可執行的
D)軟件是程序和數據的集合
A【解析】計算機軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據及相關文檔的完成集合。程序、數據和相關文檔又稱為軟件的三要素。
114.下面對軟件描述錯誤的是
A)文檔是不可執行的
B)程序和數據是可執行的
C)軟件文檔是與程序開發、維護和應用無關的資料
D)軟件是程序、數據及相關文檔的集合
C【解析】軟件是程序、數據及相關文檔的集合。其中,程序是軟件開發人員根據用戶需求開發的、用程序設計語言描述的、適合計算機執行的指令(語句)序列;數據是使程序能正常操縱信息的數據結構;文檔是與程序開發、維護和使用有關的圖文資料。可見,軟件有兩部分組成:一是機器可執行的程序和數據;二是機器不可執行的文檔。
115.下面對軟件特點描述正確的是
A)軟件具有明顯的制作過程
B)軟件在使用中存在磨損、老化問題
C)軟件復制不涉及知識產權
D)軟件是一種邏輯實體,具有抽象性
D【解析】軟件具有以下特點:軟件是一種邏輯實體,而不是物理實體,具有抽象性;軟件的生產與硬件不同,它沒有明顯的制作過程;軟件在運行、使用期間不存在磨損、老化問題;軟件的開發、運行對硬件和環境具有依賴性;軟件復雜性高,成本昂貴;軟件開發涉及諸多的社會因素(包括軟件知識產權及法律等問題)。
116.下面屬於系統軟件的是
A)UNIX系統
B)ERP系統
C)辦公自動化系統
D)學生成績管理系統
A【解析】軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件)。系統軟件是管理計算機的資源,提高計算機使用效率並服務於其他程序的軟件,如操作系統,編譯程序,匯編程序,數據庫管理系統和網絡軟件等。UNIX系統屬於操作系統,故屬於系統軟件。ERP系統、辦公自動化系統、學生成績管理系統屬於應用軟件。
117.下面屬於應用軟件的是
A)編譯程序
B)Android操作系統
C)匯編程序
D)財務報表統計軟件
D【解析】應用軟件是為解決特定領域的應用而開發的軟件。例如,事務處理軟件,工程與科學計算軟件,實時處理軟件,嵌入式軟件,人工智能軟件等應用性質不同的各種軟件。編譯程序、Android操作系統、匯編程序屬於系統軟件,財務報表統計屬於應用軟件。
118.下面屬於工具(支撐)軟件的是
A)IOS系統
B)數據庫管理系統
C)財務管理系統
D)Studio.NET
D【解析】支撐軟件是介於系統軟件和應用軟件之間,協助用戶開發的工具性軟件,包括輔助和支持開發和維護應用軟件的工具軟件,如需求分析軟件,設計工具軟件,編碼工具軟件,測試工具軟件,維護工具軟件等,也包括輔助管理人員控制開發進程和項目管理的工具軟件,如計划進度管理工具軟件,過程控制工具軟件,質量管理及配置管理工具軟件等。IOS系統、數據庫管理系統屬於系統軟件,財務管理系統屬於應用軟件,Studio.NET屬於支撐軟件。
119.下列敘述中正確的是
A)軟件工程是為了解決軟件生產率問題
B)軟件工程的三要素是方法、工具和進程
C)軟件工程是用於軟件的定義、開發和維護的方法
D)軟件工程是用工程、科學和數學的原則與方法研制、維護計算機軟件的有關技術及管理方法
D【解析】軟件工程是試圖用工程、科學和數學的原理與方法研制、維護計算機軟件的有關技術及管理方法,是應用於計算機軟件的定義、開發和維護的一整套方法、工具、文檔、實踐標准和工序。軟件工程的目標是在給定成本、進度的前提下,開發出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品,追求這些目標有助於提高軟件產品的質量和開發效率,減少維護的困難。軟件工程包含3個要素:方法、工具和過程。
120.下列敘述中正確的是
A)軟件過程是軟件開發過程
B)軟件過程是軟件維護過程
C)軟件過程是軟件開發過程和軟件維護過程
D)軟件過程是把輸入轉化為輸出的一組彼此相關的資源和活動
D【解析】軟件過程是把輸入轉化為輸出的一組彼此相關的資源和活動。軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。軟件過程所進行的基本活動主要有軟件規格說明、軟件開發或軟件設計與實線、軟件確認、軟件演進。在過程結束時,將輸入(用戶要求)轉化為輸出(軟件產品)。
121.軟件生命周期是指
A)軟件的運行和維護
B)軟件的需求分析、設計與實現
C)軟件的實現和維護
D)軟件產品從提出、實現、使用維護到停止使用退役的過程
D【解析】通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬於軟件生命周期。
122.軟件生命周期可分為定義階段、開發階段和維護階段,下面屬於定義階段任務的是
A)軟件設計
B)軟件測試
C)可行性研究
D)數據庫設計
C【解析】軟件生命周期可分為定義階段、開發階段和維護階段。
軟件定義階段的任務是:確定軟件開發工作必須完成的目標;確定工程的可行性。
軟件開發階段的任務是:具體完成設計和實現定義階段所定義的軟件,通常包括總體設計、詳細設計、編碼和測試。其中總體設計和詳細設計又稱為系統設計,編碼和測試又稱為系統實現。
軟件維護階段的任務是:使軟件在運行中持久地滿足用戶的需要。
123.軟件生存周期中,解決軟件“做什么”的階段是
A)需求分析
B)軟件設計
C)軟件實現
D)可行性研究
A【解析】軟工生命周期可細化為可行性研究和計划制定、需求分析、軟件設計(總體設計和詳細設計)、編碼、軟件測試、運行和維護等階段。需求分析是對待開發軟件提出的需求進行分析並給出詳細定義,是解決軟件“做什么”的階段。
124.軟件生命周期中,確定軟件系統"怎么做"的階段是
A)軟件測試
B)軟件設計
C)系統維護
D)需求分析
B【解析】軟件設計是系統設計人員和程序設計人員在反復理解軟件需求的基礎上,給出軟件的結構、模塊的划分、功能的分配以及處理流程,是解決軟件“怎么做”的階段。
125.軟件需求分析階段的主要任務是
A)確定軟件開發方法
B)確定軟件開發工具
C)確定軟件開發計划
D)確定軟件系統的功能
D【解析】軟件需求是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。需求分析的任務是發現需求、求精、建模和定義需求的過程。
126.下面描述中不屬於軟件需求分析階段任務的是
A)撰寫軟件需求規格說明書
B)軟件的總體結構設計
C)軟件的需求分析
D)軟件的需求評審
B【解析】需求分析階段的工作可以分為4個方面:需求獲取、需求分析、編寫需求規格說明書和需求評審。軟件的總體結構設計屬於軟件設計階段的任務。
127.下面不屬於軟件需求規格說明書內容的是
A)軟件的可驗證性
B)軟件的功能需求
C)軟件的性能需求
D)軟件的外部接口
A【解析】軟件需求規格說明應重點描述軟件的目的,軟件的功能需求、性能需求、外部接口、屬性及約束條件等。
128.下面可以作為軟件需求分析工具的是
A)N-S圖
B)程序流程圖
C)PAD圖
D)數據流程圖(DFD圖)
D【解析】常見的需求分析方法有結構化分析方法和面向對象的分析方法。結構化分析方法工具包括數據流圖(DFD)、數據字典(DD)、判定表和判定樹等。程序流程圖、N-S圖、PAD圖屬於軟件設計階段使用的工具。
129.數據流圖(DFD)中的有向箭頭(→)表示
A)控制流
B)數據流
C)輸入流
D)輸出流
B【解析】數據流圖中的主要圖形元素與說明如下:
加工(轉換):輸入數據經加工變換產生輸出。
數據流:沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名。
存儲文件:表示處理過程中存放各種數據的文件。
數據的原點和終點:表示系統和環境的接口,屬系統之外的實體。
130.下列數據流圖(DFD)構造規則中正確的是
A)子圖的輸入輸出數據流與父圖中相關加工的輸入輸出數據流必須一致
B)“數據存儲”間應有數據流
C)“數據流”可不帶有數據流名
D)父圖子圖是指任意上下層的兩個數據流圖
A【解析】數據流圖應遵循以下構造規則和注意事項:
①對加工處理建立唯一、層次性的編號,且每個加工處理通常要求既有輸入又有輸出。
②數據存儲之間不應有數據流。
③數據流圖的一致性。即輸入輸出、讀寫的對應。
④父圖、子圖關系與平衡規則。相鄰兩層DFD之間具有父子關系,子圖代表了父圖中某個加式的詳細描述,父圖表示了子圖間的接口。子圖個數不大於父圖中的處理個數。所有子圖的輸入輸出數據流和父圖中相應處理的輸入輸出數據流必須一致。
131.軟件設計一般划分為兩個階段,兩個階段依次是
A)數據設計和接口設計
B)算法設計和數據設計
C)界面設計和結構設計
D)總體設計(概要設計)和詳細設計
D【解析】從工程管理角度來看,軟件設計分兩步完成:概要設計和詳細設計。
從技術觀點來看,軟件設計包括軟件結構設計、數據設計、接口設計和過程設計。
132.對軟件設計中應遵循的准則描述正確的是
A)高耦合低內聚
B)高內聚低耦合
C)模塊獨立性僅與內聚度相關
D)內聚與耦合無關
B【解析】軟件設計應遵循的准則有抽象、逐步求精和模塊化、信息隱蔽和局部化、模塊獨立性(高內聚低耦合)。
133.下面描述錯誤的是
A)模塊的獨立性與模塊的信息隱蔽和局部化無關
B)內聚性和耦合性是模塊獨立程度的定性度量標准
C)一個模塊的內聚性越高則該模塊的獨立性越強
D)一個模塊的耦合性越高則該模塊的獨立性越弱
A【解析】模塊獨立性的概念是抽象、模塊化、信息隱蔽和局部化的直接結果。
模塊的獨立性程度是評價設計好壞的重要程度標准,有兩個定性標准度量,即模塊間的耦合性和模塊內的內聚性。
耦合性是模塊間互相連接的緊密程度的度量。一個模塊的耦合性越高則該模塊的獨立性越弱。內聚性是指一個模塊內部各個元素間彼此結合的緊密程度。一個模塊的內聚性越高則該模塊的獨立性越強。好的軟件設計,應盡量做到高內聚、低耦合。
134.軟件系統總體結構圖的作用是
A)描述軟件系統結構的圖形工具
B)描述軟件系統的控制流
C)描述軟件系統的數據流
D)描述軟件系統的數據結構
A【解析】結構圖是描述軟件系統結構的圖形工具,描述了軟件系統的層次和分塊結構關系,它反映了整個系統的功能實現以及模塊與模塊之間的聯系與通信,是未來程序中的控制層次體系。
135.對軟件系統總體結構圖,下面描述中錯誤的是
A)深度等於控制的層數
B)扇入是一個模塊直接調用的其他模塊數
C)扇出是一個模塊直接調用的其他模塊數
D)原子模塊一定是結構圖中位於葉子節點的模塊
B【解析】與結構圖有關的術語如下:
深度:表示控制的層數。
上級模塊、從屬模塊:上、下兩層模塊a和b,且有a調用b,則a是上級模塊,b是從屬模塊。
寬度:整體控制跨度(最大模塊數的層)的表示。
扇入:調用一個給定模塊的模塊個數。
扇出:由一個模塊直接調用的其他模塊數。
原子模塊:樹中位於葉子結點的模塊。
136.某系統總體結構如下圖所示
該系統結構圖是
A)層次結構
B)網狀結構
C)分支結構
D)循環結構
A【解析】軟件設計中使用結構圖描述軟件系統的層次和分塊結構關系,故結構圖也稱為層次結構圖。
137.某系統結構圖如下圖所示
該系統結構圖的深度是
A)1
B)2
C)3
D)4
D【解析】深度表示控制的層數。本題中,“某系統”為第1層,“功能1、功能2…功能n”為第二層,“功能2.1、功能2.2、功能2.3、功能n.1、功能n.2”為第3層,“功能2.2.1、功能2.2.2”為第4層,共4層,故深度為4。
138.某系統總體結構如下圖所示
該系統結構圖的寬度是
A)2
B)3
C)4
D)5
D【解析】寬度指整體控制跨度(橫向最大模塊數)的表示。本題中第1層有1個模塊,第二層有3個模塊,第3層有5個模塊,第4層有2個模塊,故寬度為5。
139.某系統結構圖如下圖所示(圖中n≥5)
該系統結構圖的寬度是
A)n
B)3
C)2
D)1
A【解析】寬度指整體控制跨度(橫向最大模塊數)的表示。本題中第1層有1個模塊,第二層有n個模塊(注意n≥5),第3層有5個模塊,故寬度為n。
140.某系統結構圖如下圖所示:
該系統結構圖的最大扇入數是
A)0
B)1
C)2
D)3
C【解析】扇入是指調用一個給定模塊的模塊個數。本題中,模塊“功能3.1”被“功能2.3”和“功能3”2個上級模塊調用,其余模塊都是被一個上級模塊調用,故最大扇入數是2。
141.某系統結構圖如下圖所示。該系統結構圖的最大扇入數是
A)4
B)3
C)2
D)1
B【解析】扇入是指調用一個給定模塊的模塊個數。本題中,模塊“功能n.1”被“功能1”、“功能2”和“功能n”3個上級模塊調用,故最大扇入數是3。本題需要注意的是,第二層中有省略號,表示第二層有n個模塊,但只有3個模塊調用“功能n.1”。
142.某系統結構圖如下圖所示,該系統結構圖的最大扇入數是
A)1
B)2
C)3
D)n
D【解析】扇入是指調用一個給定模塊的模塊個數。本題中需要注意的是兩個省略號的位置,第一個省略號表示第二層有n個模塊,第二個省略號表示模塊“功能n.1”被第二層的n個模塊調用,故最大扇入數是n。
143.某系統總體結構如下圖所示
該系統結構圖的最大扇出數是
A)2
B)5
C)3
D)1
C【解析】扇出指一個模塊直接調用的其他模塊數。本題中,模塊“某系統”調用“功能1”“功能2”“功能3”3個模塊,扇出數為3;模塊“功能2”調用“功能2.1”“功能2.2”“功能2.3”3個模塊,扇出數為3;其余模塊調用少於3個模塊,故最大扇出數為3。
144.某系統結構圖如下圖所示(n≥5)
該系統結構圖的最大扇出數是
A)3
B)n
C)2
D)n+1
B【解析】扇出指一個模塊直接調用的其他模塊數。本題中第二層有n(n≥5)個模塊,模塊“某系統”直接調用這n個模塊,故最大扇出數是n。
145.某系統總體結構如下圖所示
該系統結構圖的最大扇出數、最大扇入數的總和是
A)4
B)5
C)7
D)8
B【解析】本題中最大扇出數是3(模塊“某系統”調用“功能1”“功能2”“功能3”3個模塊),最大扇入數是2(模塊“功能2.2.2被“功能2.2”“功能2.3”2個模塊調用),故二者總和是5。
146.下面屬於軟件設計階段產生的文檔是
A)詳細設計規格說明書
B)數據流程圖和數據字典
C)軟件確認測試計划
D)軟件需求規格說明書
A【解析】軟件設計階段產生的文檔有概要設計說明書、詳細設計說明書和測試計划初稿;數據流程圖、數據字典和需求規格說明書是需求分析階段產生的;軟件確認測試計划屬於軟件測試階段的文檔。
147.下面不能作為軟件設計工具的是
A)PAD圖
B)程序流程圖
C)數據流程圖(DFD圖)
D)總體結構圖
C【解析】軟件設計可以使用的工具有總體結構圖、程序流程圖、N-S圖、PAD圖、PDL。數據流程圖(DFD圖)是需求分析使用的工具。
148.軟件測試的目的是
A)發現程序中的錯誤
B)發現並改正程序中的錯誤
C)執行測試用例
D)診斷和改正程序中的錯誤
A【解析】軟件測試是為了發現錯誤而執行程序的過程,只發現錯誤而不改正錯誤。
149.下面對軟件測試描述錯誤的是
A)嚴格執行測試計划,排除測試的隨意性
B)隨機地選取測試數據
C)軟件測試的目的是發現錯誤
D)軟件測試是保證軟件質量的重要手段
B【解析】軟件測試的准則如下:
①所有測試都應追溯到需求。
②嚴格執行測試計划,排除測試的隨意性。
③充分注意測試中的群集現象。
④程序員應避免檢查自己的程序。
⑤窮舉測試不可能。
⑥妥善保存測試計划、測試用例、出錯統計和最終分析報告,為維護提供方便。
150.軟件測試用例包括
A)被測程序和測試規程
B)測試計划和測試數據
C)輸入數據和預期輸出結果
D)輸入數據和輸出數據
C【解析】測試用例(Test Case)是為測試設計的數據,由測試輸入數據和與之對應的預期輸出結構兩部分組成。測試用例的格式為:
[(輸入值集),(輸出值集)]
151.使用白盒測試方法時,設計測試用例應根據
A)程序的內部邏輯
B)程序的復雜結構
C)程序的功能
D)使用說明書
A【解析】白盒測試又稱為結構測試或邏輯驅動測試,它允許測試人員利用程序內部的邏輯結構及有關信息來設計或選擇測試用例,對程序所有的邏輯路徑進行測試。
152.下面屬於白盒測試方法的是
A)等價類划分法
B)判定-條件覆蓋
C)因果圖法
D)錯誤推測法(猜錯法)
B【解析】白盒測試法主要有邏輯覆蓋、基本路徑測試等。其中,邏輯覆蓋又包括語句覆蓋、路徑覆蓋、判定覆蓋、條件覆蓋、判斷-條件覆蓋
153.在黑盒測試方法中,設計測試用例的根據是
A)數據結構
B)模塊間的邏輯關系
C)程序調用規則
D)軟件要完成的功能
D【解析】黑盒測試方法也稱功能測試或數據驅動測試。黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證。它完全不考慮程序內部的邏輯結構和內部特征,只依據程序的需求和功能規格說明,檢查程序的功能是否符合它的功能要求。
154.下面屬於黑盒測試方法的是
A)邊界值分析法
B)路徑測試
C)條件覆蓋
D)語句覆蓋
A【解析】黑盒測試方法主要有等價類划分法、邊界值分析法、錯誤推測法和因果圖等。
155.通常軟件測試實施的步驟是
A)集成測試、確認測試、系統測試
B)單元測試、集成測試、確認測試
C)確認測試、集成測試、單元測試
D)單元測試、集成測試、回歸測試
B【解析】軟件測試的實施過程主要有4個步驟:單元測試、集成測試、確認測試(驗收測試)和系統測試。
156.單元測試主要涉及的文檔是
A)編碼和詳細設計說明書
B)確認測試計划
C)需求規格說明書
D)總體設計說明書
A【解析】單元測試是對軟件設計的最小單位——模塊(程序單元)進行正確性檢驗的測試。單元測試的依據是詳細設計說明書和源程序(編碼);集成測試的依據是概要設計說明書;確認測試的依據是需求規格說明書。
157.軟件集成測試不采用
A)一次性組裝
B)自頂向下增量組裝
C)自底向上增量組裝
D)迭代式組裝
D【解析】集成測試是測試和組裝軟件的過程。集成測試時將模塊組裝成程序通常采用兩種方式:非增量方式組裝和增量方式組裝。非增量方式也稱為一次性組裝方式。增量方式包括自頂向下、自底向上、自頂向下與自底向上相結合的混合增量方法。
158.程序調試的任務是
A)發現並改正程序中的錯誤
B)診斷和改正程序中的錯誤
C)發現程序中的錯誤
D)設計和運行測試用例
B【解析】程序調試的任務是診斷和改正程序中的錯誤;而軟件測試是盡可能多的發現軟件中的錯誤。軟件測試貫穿整個軟件生命周期,程序調試主要在開發階段。
159.數據庫(DB)、數據庫系統(DBS)和數據庫管理系統(DBMS)之間的關系是
A)DBS就是DB,也就是DBMS
B)DBS包括DB和DBMS
C)DB包括DBS和DBMS
D)DBMS包括DB和DBS
B【解析】數據庫(DB)是存放數據的倉庫;數據庫管理系統(DBMS)是用來管理數據及數據庫的系統;數據庫系統(DBS)是由數據庫、數據庫管理系統、數據庫管理員、硬件等在一起的總稱。因此DBS包括DB和DBMS。
160.數據庫系統中,存儲在計算機內有結構的數據集合稱為
A)數據庫
B)數據模型
C)數據庫管理系統
D)數據結構
A【解析】數據庫是指長期存儲在計算機內的、有組織的、可共享的數據集合。
161.下列敘述中正確的是
A)數據庫的數據項之間無聯系
B)數據庫中任意兩個表之間一定不存在聯系
C)數據庫的數據項之間存在聯系
D)數據庫的數據項之間以及兩個表之間都不存在聯系
C【解析】數據庫的數據項之間以及表之間都存在聯系。
162.能夠減少相同數據重復存儲的是
A)記錄
B)字段
C)文件
D)數據庫
D【解析】數據庫表的一行稱為一個記錄,一列稱一個字段。文件管理階段不能保證相同數據重復存儲。在數據庫系統階段使用數據庫管理數據,可大大減少相同數據重復存儲。
163.數據庫管理系統是
A)一種操作系統在
B)操作系統的一部分
C)一種編譯程序
D)操作系統支持下的系統軟件
D【解析】數據庫管理系統是數據庫系統的核心,它位於用戶和操作系統之間,從軟件分類的角度來說,屬於系統軟件。
164.數據庫管理系統的基本功能不包括
A)數據庫定義
B)數據庫和網絡中其他系統的通信
C)數據庫的建立和維護
D)數據庫訪問
B【解析】數據庫管理系統的功能包括數據模式定義、數據存取的物理構建、數據操縱、數據完整性安全性的定義與檢查、數據庫的並發控制與故障恢復、數據的服務。
165.數據庫系統中完成查詢操作使用的語言是
A)數據操縱語言
B)數據定義語言
C)數據控制語言
D)數據並發語言
A【解析】數據庫管理系統提供了相應的數據語言:
數據定義語言(DDL):該語言負責數據的模式定義與數據的物理存取構建。
數據操縱語言(DML):該語言負責數據的操縱,包括查詢與增、刪、改等操作。
數據控制語言(DCL):該語言負責數據完整性、安全性的定義與檢查以及並發控制、故障恢復等功能。
166.在數據庫管理技術發展的三個階段中,沒有專門的軟件對數據進行管理的是
A)文件系統階段
B)人工管理階段
C)文件系統階段和數據庫階段
D)人工管理階段和文件系統階段
B【解析】數據庫管理技術的三個階段是人工管理階段、文件系統階段和數據庫系統階段。人工管理階段沒有專門的軟件對數據進行管理。
167.關於數據庫管理階段的特點,下列說法中錯誤的是
A)數據獨立性差
B)數據的共享性高,冗余度低,易擴充
C)數據真正實現了結構化
D)數據由DBMS統一管理和控制
A【解析】數據庫管理階段具有高度的物理獨立性和一定的邏輯獨立性,是數據管理三級階段中對立性最高的階段。
168.按照傳統的數據模型分類,數據庫系統可分為
A)大型、中型和小型
B)數據、圖形和多媒體
C)西文、中文和兼容
D)層次、網狀和關系
D【解析】數據庫系統已經發展了三個階段:第一代的網狀、層次型數據庫系統,第二代的關系型數據庫系統,第三代的面向對象的數據庫系統。
169.下列敘述中正確的是
A)數據庫系統避免了一切冗余
B)數據庫系統減少了數據冗余
C)數據庫系統中數據的一致性是指數據類型一致
D)數據庫系統比文件系統能管理更多的數據
B【解析】數據庫系統共享性大,冗余度小,但只是減少了冗余,並不是避免一切冗余。數據的一致性是指在系統中同一數據在不同位置的出現應保持相同的值,而不是數據類型的一致。數據庫系統比文件系統有更強的管理控制能力,而不是管理更多的數據。
170.數據庫系統的數據獨立性是指
A)不會因為存儲策略的變化而影響存儲結構
B)不會因為數據的變化而影響應用程序
C)不會因為系統數據存儲結構與數據邏輯結構的變化而影響應用程序
D)不會因為某些存儲結構的變化而影響其他的存儲結構
C【解析】數據庫系統的數據獨立性,是指數據庫中數據獨立於應用程序且不依賴於應用程序,即數據的邏輯結構、存儲結構與存取方式的改變不會影響應用程序。數據獨立性一般分為物理獨立性和邏輯獨立性兩級。
171.在關系數據庫中,描述全局數據邏輯結構的是
A)概念模式
B)用戶模式
C)內模式
D)物理模式
A【解析】數據庫系統在其內部分為三級模式及兩級映射,三級模式即概念模式、內模式和外模式。
概念模式是數據庫系統中全局數據邏輯結構的描述,是全體用戶公共數據視圖。
外模式也稱子模式或者用戶模式,是用戶的數據視圖,也就是用戶所能夠看見和使用的局部數據的邏輯結構和特征的描述,是與某一應用有關的數據的邏輯表示。
內模式又稱物理模式,是數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式。
172.數據庫中對概念模式內容進行說明的語言是
A)數據控制語言
B)數據操縱語言
C)數據定義語言
D)數據並發語言
C【解析】概念模式主要描述數據的概念記錄類型以及它們間的關系,它還包括一些數據間的語義約束,對它的描述可用DDL語言(數據定義語言)定義。
173.將數據庫的結構划分成多個層次,是為了提高數據庫的
A)管理規范性
B)數據處理並發性
C)邏輯獨立性和物理獨立性
D)數據共享
C【解析】數據庫系統通常采用三級模式結構並且提供兩級映射功能,其中的外模式/模式映射保證了數據庫系統具有較高的邏輯獨立性,而模式/內模式映射保證了數據庫系統具有較高的物理獨立性。
174.在數據庫的三級模式中,外模式(用戶模式或子模式)有
A)3個
B)2個
C)1個
D)任意多個
D【解析】一個數據庫可以有多個外模式(因為用戶可有多個),但概念模式和內模式只能有一個。
175.數據模型的三個要素是
A)外模式、概念模式、內模式
B)實體完整性、參照完整性、用戶自定義完整性
C)數據增加、數據修改、數據查詢
D)數據結構、數據操作、數據約束
D【解析】數據模型是數據特征的抽象,所描述的內容有三個部分:數據結構、數據操作、數據約束。
數據結構主要描述數據的類型、內容、性質以及數據間的聯系等。
數據操作主要描述在相應數據結構上的操作類型與操作方式。
數據約束主要描述數據結構內數據間的語法、語義聯系,它們之間的制約與依存關系,以及數據動態變化的規則,以保證數據的正確、有效與相容。
176.在數據庫系統中,數據模型包括概念模型、邏輯模型和
A)物理模型
B)空間模型
C)時間模型
D)謂詞模型
A【解析】數據模型按照不同的應用層次分為3種類型:概念數據模型、邏輯數據模型、物理數據模型。
概念數據模型簡稱概念模型,它是一種面向客觀世界、面向用戶的模型;它與具體的數據庫管理系統無關,與具體的計算機平台無關。
邏輯數據模型又稱邏輯模型,它是一種面向數據庫系統的模型,該模型着重於在數據庫系統一級的實現。
物理數據模型又稱物理模型,它是一種面向計算機物理表示的模型,此模型給出了數據模型在計算機上物理結構的表示。
177.下面模型中為概念模型的是
A)關系模型
B)層次模型
C)實體-聯系模型
D)網狀模型
C【解析】較為有名的概念數據模型有實體聯系模型(E-R模型)、面向對象模型及謂詞模型;邏輯數據模型有層次模型、網狀模型、關系模型和面向對象模型。
178.建立表示學生選修課程活動的實體聯系模型,其中的兩個實體分別是
A)學生和學號
B)課程和課程號
C)課程和成績
D)學生和課程
D【解析】實體是概念世界中的基本單位,是客觀存在並可以相互區別的事物。要建立表示學生選修課程活動的實體聯系模型,能互相區別並可以聯系起來的實體是學生和課程。
179.每所學校都有一名校長,而每個校長只在一所學校任職,則實體學校和實體校長之間的聯系是
A)一對一
B)一對多
C)多對一
D)多對多
A【解析】每所學校只有一名校長,每個校長只在一所學校任職,則實體學校和實體校長之間是一對一的聯系。
180.在學校每間宿舍住1到6名學生,每個學生只在一間宿舍居住,則實體宿舍與實體學生間的聯系是
A)一對一
B)一對多
C)多對一
D)多對多
B【解析】一間宿舍可以住多名學生,一個學生只能在一個宿舍,則實體宿舍與實體學生間的聯系是一對多。宿舍是一的一方,學生是多的一方。
181.每個學校有一名校長,且不同學校的校長可以是同一人,則實體學校和實體校長間的聯系是
A)一對一
B)多對多
C)多對一
D)一對多
C【解析】由於每個學校只對應一個校長,而一個校長可以對應多個學校,所以學校和校長之間是多對一關系。學校是多的一方,校長是一的一方。
182.在學校里,教師可以講授不同的課程,同一課程也可由不同教師講授,則實體教師與實體課程間的聯系是
A)一對多
B)一對一
C)多對一
D)多對多
D【解析】一個教師可以講授不同的課程,同一課程也可由不同教師講授,則實體教師與實體課程間的聯系是多對多。
183.若實體A和B是一對一的聯系,實體B和C是多對一的聯系,則實體A和C的聯系是
A)一對一
B)多對一
C)多對多
D)一對多
B【解析】實體之間的聯系具有傳遞性,實體A和B是一對一的聯系,實體B和C是多對一的聯系,明顯實體A和C為多對一的聯系。
184.E-R圖中用來表示實體的圖形是
A)菱形
B)三角形
C)矩形
D)橢圓形
C【解析】在E-R圖中實體集用矩形表示,矩形框內寫實體名;屬性用橢圓表示,並用無向邊將其與相應的“實體”或“聯系”連接起來;聯系用菱形表示,在菱形框內寫聯系名,並用無向邊將其與有關實體連接起來,在無向邊旁標上聯系的類型(1:1、1:n或n:n)。
185.用樹型結構表示實體之間聯系的模型是
A)層次模型
B)關系模型
C)網狀模型
D)運算模型
A【解析】層次模型的基本結構是樹型結構,是一對多的;網狀模型類似於圖的結構,是多對多的。
186.關系數據模型的三個組成部分中不包括
A)關系的數據操縱
B)關系的並發控制
C)關系的數據結構
D)關系的完整性約束
B【解析】關系數據模型的三個組成部分:關系的數據結構(用二維表表示),關系操縱(查詢、刪除、插入、修改),關系的數據約束(實體完整性約束、參照完整性約束、用戶定義的完整性約束)。
187.在關系數據庫設計中,關系模式是用來記錄用戶數據的
A)實體
B)視圖
C)屬性
D)二維表
D【解析】關系模式采用二維表來表示關系,簡稱表。
188.下面選項中不是關系數據庫基本特征的是
A)不同的列應有不同的列名
B)不同的列應有不同的數據類型
C)與行的次序無關
D)與列的次序無關
B【解析】關系數據庫中的二維表一般滿足7個性質:
①元組(行)個數是有限的——元組個數有限性。
②元組(行)均不相同——元組的唯一性。
③元組(行)的次序可以任意交換——元組的次序無關性。
④元組(行)的分量是不可分割的基本特征——元組分量的原子性。
⑤屬性(列)名各不相同——屬性名唯一性。
⑥屬性(列)與次序無關,可以任意交換——屬性的次序無關性。
⑦屬性(列)的分量具有與該屬性相同的值域——分量值域的統一性。
189.下列關於關系模型中鍵(碼)的描述中正確的是
A)至多由一個屬性組成
B)由一個或多個屬性組成,其值能夠惟一標識關系中一個元組
C)可以由關系中任意個屬性組成
D)關系中可以不存在鍵
B【解析】鍵由一個或多個屬性組成,其值能夠惟一標識關系中一個元組(表中的一行)。
190.在關系表中,屬性值必須是另一個表主鍵的有效值或空值,這樣的屬性是
A)主鍵
B)候選鍵
C)外鍵
D)次鍵
C【解析】一個屬性(即一列),在某張表中不是主鍵(主碼),但在其他表中是主鍵(主碼),則它是第一張表的外鍵(外碼)。
191.下列敘述中正確的是
A)關系模式的候選關鍵字只能有1個
B)關系模式的候選關鍵字可以有1個或多個
C)關系模式可以沒有候選關鍵字
D)關系模式必須有2個以上的候選關鍵字
B【解析】在關系模式中凡能唯一標識元組的最小屬性集稱為該關系的鍵或碼。關系模式中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。關系模式中不能沒有候選鍵。
192.學生關系模式中有D(D#,Dn,Dl,DAddr)(其屬性分別為系編號、系名稱、系主任和系地址)和S(S#,Sn,SG,Date,Maj,D#)(其屬性分別為學號、姓名、性別、入學日期、專業和系編號)兩個關系,關系S的主鍵(碼)是S#,關系S的外鍵(碼)是
A)Dl
B)Maj
C)D#
D)Dn
C【解析】D#在關系D中為主鍵,但在關系S中不是主鍵,因此D#是關系S的外鍵(碼)。
193.學校的數據庫中有表示系和學生的關系:系(系編號,系名稱,系主任,電話,地點),學生(學號,姓名,性別,入學日期,專業,系編號),則關系學生中的主鍵和外鍵分別是
A)學號,無
B)學號,專業
C)學號,姓名
D)學號,系編號
D【解析】在“系”表中,“系編號”為主鍵;在“學生”表中,“學號”是主鍵,“系編號”不是主鍵,則“系編號”是表“學生”的外鍵。
194.圖書館數據庫系統中有下列模式:
書(書號, 類別, 書名,出版社,年份,作者,價格,總藏書量,現有庫存)
借書卡(卡號,姓名,單位,類別)
借書記錄 (卡號,書號,借期,還期)
其中關系書和關系借書卡的主鍵分別為書號和卡號,關系借書記錄的主鍵為
A)卡號,書號
B)書號,借期
C)卡號,書號,借期
D)卡號,借期
A【解析】在關系借書記錄對應的二維表中,想要唯一確定一行,需要卡號、書號。因此,關系借書記錄的主鍵為(卡號,書號)。
195.關系的實體完整性要求關系中不能為空的屬性是
A)主鍵屬性
B)外鍵屬性
C)全部屬性
D)候選鍵屬性
A【解析】關系模型中可以有3類完整性約束:實體完整性約束、參照完整性約束和用戶定義的完整性約束。實體完整性約束是指若屬性M是關系的主鍵,則屬性M中的屬性值不能為空值。
196.有兩個關系R和T如下圖所示:
則由關系R得到關系T的運算是
A)並
B)交
C)選擇
D)投影
D【解析】從關系模式中指定若干屬性組成新的關系稱為投影。對關系R進行投影運算的結果記為πA(R),其中,A為R中的屬性列。本題中關系T中的兩列與關系R中的兩列相同,故為投影運算。
197.關系R經過運算σA=B∧C>4∧D>3(R)的結果為
A) (a,a,2,4)
B)(e,e,6,1)
C) (c,c,11,4)
D)(a,a,2,4)和(e,e,6,1)
C【解析】選擇運算是在二維表中選出符合條件的行,形成新的關系的過程。設關系的邏輯條件為F,則關系R滿足F的選擇運算可寫成σF(R)。本題中條件為 “A=B∧C>4∧D>3”(∧為並且的意思),只有(c,c,11,4)滿足。
198.大學生學籍管理系統中有關系模式 S(S#,Sn,Sg,Sd,Sa),其中屬性S#、Sn、Sg、Sd、Sa分別是學生學號、姓名、性別、系別和年齡,關鍵字是S#。檢索全部男生姓名的表達式為
A)
B)
C)
D)
B【解析】檢索全部男生是選擇行,用σ操作;檢索姓名是選列(投影)用π操作。先從表S中檢索出性別是“男的”行σSg=‘男’(S),然后對結果進行投影,只取“姓名”列πSn(σSg=‘男’(S))。
199.表示學生選修課程的關系模式是SC(S#,C#,G),其中S#為學號,C#為課程號,G為成績,檢索選修了課程號為2的課且成績不及格的學生學號的表達式是
A)
B)
C)
D)
C【解析】按“課程號為2”(C#=2)和“成績不及格”(G<60)的條件在SC表中做檢索(σ操作,σC#=2∧G<60(SC)),兩個條件是“且”的關系(∧)。因為最后結果只需要“學號”,所以在篩選后再做投影操作只取“學號”列πS# (σC#=2∧G<60(SC))。
200.有三個關系R、S和T如下,
則關系T由關系R和S通過( )得到。
A)交
B)差
C)選擇
D)並
A【解析】關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組所組成,記為R∩S。本題中,關系T中的行既屬於關系R又屬於關系S,故為交運算。
201.有三個關系R,S和T如下圖所示:
則由關系R和S得到關系T的運算是
A)交 B)投影 C)並 D)選擇
C【解析】關系R與S經並運算后所得到的關系由屬於R或屬於S的元組構成,記為R∪S。本題中,關系T中的行要么屬於關系R,要么屬於關系S,故為並運算。
202.有三個關系R、S和T如下,
則由關系R和關系S得到關系T的操作是
A)選擇
B)差
C)交
D)並
B【解析】關系R和關系S經過差運算后得到的關系由屬於關系R而且不屬於關系S的元組構成,記為R-S。觀察題干可知,關系T中的行屬於關系R,但不屬於關系S,故為差運算。
203.有三個關系R,S和T如下圖所示:
則由關系R和S得到關系T的運算是
A)交 B)並 C)投影 D)自然連接
D【解析】自然連接要求兩個關系中進行比較的是相同的屬性,並且進行等值連接,在結果中還要把重復的屬性列去掉。本題屬於自然連接,隱含條件是R.A=S.A。
204.由關系R1和R2得到關系R3的操作是
A)笛卡爾積
B)並
C)等值連接
D)交
C【解析】關系R1和關系R2沒有同名列,但關系R1中的B列與關系R2中的D列有相等值,因此屬於等值連接。
205.學生選課成績表的關系模式是SC(S#,C#,G),其中S#為學號,C#為課程號,G為成績,關系T=πS#,C#(SC)/C表示
A)全部學生的學號
B)選修了表C中全部課程的學生學號
C)選修了課程C1或C2的學生學號
D)所選課程成績及格的學生學號
B【解析】πS#,C#(SC)表示從關系SC中取出S#、C#兩列,得到的結果與關系C進行除運算,表示選修了表C中全部課程的學生學號。
206.設有表示學生選課的關系學生S、課程C和選課SC:
S(學號,姓名,年齡,性別,籍貫),
C(課程號,課程名,教師,辦公室),
SC(學號,課程號,成績)。
則檢索籍貫為上海的學生姓名、學號和選修的課程號的表達式是
A)
B)
C)
D)
C【解析】檢索籍貫為“上海”是選擇行,用σ操作;檢索姓名、學號和選修的課程號是選列(投影),用π操作。因此,表達式中必須同時既有σ也有π,且π的操縱要包含“姓名”“學號”“課程號”三列。另外,做上述σ操作和π操作的表應是S和SC進行自然連接的結果表,而不能僅對表S做上述操作,因為S表中沒有“課程號”列。
207.定義學生選修課程的關系模式如下:
S (S#,Sn,Sd,Sa)(其屬性分別為學號、姓名、所在系、年齡);
C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課);
SC(S#,C#,G)(其屬性分別學號、課程號和成績)。
檢索選修了課程號為2且成績不及格的學生的姓名的表達式是
A)
B)
C)
D)
C【解析】學生的“姓名”要在表S中進行查找,按成績查找課程號應在表SC中進行,因為“課程號”和“成績”列同時存在於表SC中,故應對以上兩個表進行連接操作。首先在表SC中選出“課程號為2且成績不及格”的行σC#=2∧G<60(SC),但只要“學號”列πS#(σC#=2∧G<60(SC)),得到查詢結果的一個小表。將這個小表與表S進行連接再從結果中只取“姓名”列πSn(πS#(σC#=2∧G<60(SC))⋈S)。
208.現有表示患者和醫療的關系如下:P(P#,Pn,Pg,By),其中P#為患者編號,Pn為患者姓名,Pg為性別,By為出生日期, Tr(P#,D#,Date,Rt),其中D#為醫生編號,Date為就診日期,Rt為診斷結果。檢索在1號醫生處就診的男性病人姓名的表達式是
A)
B)
C)
D)
B【解析】檢索病人姓名需要涉及P表的Pn列,而醫生編號需要從Tr表的D#處獲得,所以必須將P表和Tr表進行連接后再進行操作。在連接操作之前,先從Tr表中篩選出D#=1的行(σ操作,σD#=1(Tr)),並僅篩選出P#(π操作,πP#(σD#=1(Tr))),得到篩選結果的一個小表;再從P表中篩選出性別為“男”(Pg=’男’)的行(σ操作,σPg=’男’(Tr)),得到第二張小表。將兩個小表進行連接(πP#(σD#=1(Tr))⋈σPg=’男’(Tr)),連接后還要從連接結果中只保留“姓名”Pn列,故再做一個π操作(πPn(πP#(σD#=1(Tr))⋈σPg=’男’(Tr)))。
209.定義學生選修課程的關系模式如下:
S (S#,Sn,Sd, Sa)(其屬性分別為學號、姓名、所在系、年齡);
C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課);
SC(S#,C#,G)(其屬性分別學號、課號和成績)。
檢索選修課程名為“操作系統”的成績在90分以上(含90分)的學生姓名的表達式是
A)
B)
C)
D)
A【解析】課程名“操作系統”需要在C表中進行查找,成績在“90分以上(含90分)”需要在SC表中查找,“學生姓名”需要在S表中查找,所以必須對上述三個表進行連接后再進行操作。具體操作是:先從C表中選出課程名是“操作系統”的行σCn=”操作系統”(C),但是只要“課程”列πC# (σCn=”操作系統”(C)),得到篩選結果的一個小表;在SC表中找出“90分以上(含90分)”的行σG>=90(SC),得到第二個小表;兩個小表進行連接操作並從結果中取“學號”列πS#(πC# (σCn=”操作系統”(C)) ⋈σG>=90(SC));這樣得到的結果再與S表連接並從結果中只取“姓名”列πSn(πS#(πC#(σCn=”操作系統”(C))⋈σG>=90(SC))⋈S)。
210.在關系數據庫設計中,關系模式設計屬於
A)物理設計
B)需求分析
C)概念設計
D)邏輯設計
D【解析】關系數據庫設計有需求分析、概念設計、邏輯設計、物理設計、編碼、測試、運行、進一步修改等幾個階段。在需求分析階段形成需求說明書,概念設計階段形成概念數據模型(E-R模型,作為進一步設計數據庫的依據),邏輯設計階段形成邏輯數據模型(從E-R圖向關系模式轉換、關系視圖設計、模式規范化),物理設計階段形成數據庫內部模型(此時涉及具體軟件硬件環境)。
211.在進行邏輯設計時,將E-R圖中實體之間聯系轉換為關系數據庫的
A)元組
B)關系
C)屬性
D)屬性的值域
B【解析】E-R模型與關系模型間的轉換關系如下表所示。
E-R模型 |
關系模型 |
屬性 |
屬性 |
實體 |
元組 |
實體集 |
關系 |
聯系 |
關系 |
212.關系數據庫規范化的目的是為了解決關系數據庫中的
A)數據操作復雜的問題
B)查詢速度低的問題
C)插入、刪除異常及數據冗余問題
D)數據安全性和完整性保障的問題
C【解析】關系模式進行規范化的目的是使關系結構更加合理,消除存儲異常,使數據冗余盡量小,便於插入、刪除和更新等操作。
213.關系模型中的關系模式至少應是
A)1NF
B)2NF
C)3NF
D)BCNF
A【解析】關系數據庫中的關系是要滿足一定要求的,滿足不同程度要求的為不同的范式。滿足最低要求的叫第一范式,簡稱1NF。在滿足第一范式的基礎上,進一步滿足更多要求規范則是第二范式。然后在滿足第二范式的基礎上,還可以再滿足第三范式,以此類推。
對於關系模式,若其中的每個屬性都已不能再分為簡單項,則它屬於第一范式。
若某個關系R為第一范式,並且R中每一個非主屬性完全依賴於R的某個候選鍵,則稱其為第二范式。第二范式消除了非主屬性對主鍵的部分依賴。
如果關系R是第二范式,並且每個非主屬性都不傳遞依賴於R的候選鍵,則稱R為第三范式。(傳遞依賴:在關系模式中,如果Y→X,X→A,且X不決定Y和A不屬於X,那么Y→A是傳遞依賴。)
比第三范式更高級的BCF范式,它要求所有屬性都不傳遞依賴於關系的任何候選鍵。
214.定義部門關系模式如下:
部門(部門號,部門名,部門成員,部門總經理),
使它不滿足第一范式的屬性是
A)部門名
B)部門成員
C)部門總經理
D)部門號
B【解析】對於關系模式,若其中的每個屬性都已不能再分為簡單項,則它屬於第一范式。本題中“部門成員”可進一步分解(成員編號、姓名等),因此不滿足第一范式。
215.定義學生選修課程的關系模式如下:
SC(S#,Sn,C#,Cn,G)(其屬性分別為學號、姓名、課程號、課程名、成績)
該關系的范式最高達到
A)1NF
B)2NF
C)3NF
D)BCNF
A【解析】本題中關系SC的主鍵是(學號,課程號),但僅“學號”就能決定“”“姓名”,僅“課程號”就能決定“課程名”,因此不滿足第二范式。
216.定義學生、教師和課程的關系模式S (S#,Sn,Sd,Dc,Sa)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡); C(C#,Cn,P#)(其屬性分別為課程號、課程名、先修課);SC(S#,C#,G)(其屬性分別為學號、課程號和成績),則該關系為
A)第一范式
B)第二范式
C)第三范式
D)BCNF范式
B【解析】本題中關系S中的“學號”列可決定“所在系”列,“所在系”列又可決定“所在系的系主任”,存在傳遞函數依賴,不滿足第三范式。
217.定義學生、教師和課程的關系模式:S (S#,Sn,Sd, Sa)(屬性分別為學號、姓名、所在系、年齡);C(C#,Cn,P#)(屬性分別為課程號、課程名、先修課);SC(S#,C#,G)(屬性分別為學號、課程號和成績)。則該關系為
A)BCNF范式
B)第一范式
C)第二范式
D)第三范式
D【解析】本題每個關系中每個非主屬性既不部分依賴於主鍵也不傳遞依賴於主鍵,滿足第三范式。關系C的主鍵既可以是“課程號”,也可以是“課程名”,“課程號”和“課程名”也可相互決定,所以不滿足BCF范式。
218.某圖書集團數據庫中有關系模式R(書店編號,書籍編號,庫存數量,部門編號,部門負責人),其中要求(1)每個書店的每種書籍只在該書店的一個部門銷售;(2)每個書店的每個部門只有一個負責人;(3)每個書店的每種書籍只有一個庫存數量。則關系模式R最高是
A)1NF
B)2NF
C)3NF
D)BCNF
B【解析】由題可知關系模式R有三個函數依賴:
(書店編號,書籍編號)→部門編號
(書店編號,部門編號)→負責人
(書店編號,書籍編號)→庫存數量
由此可知,(書店編號,書籍編號)可以唯一標識關系模式R中的每個元組,因此屬於關系模式的主鍵。在此關系模式中,每個屬性都是不可再分的,R屬於1NF,且“書店編號”和“書籍編號”單獨之一都不能決定其他非主屬性,所以R屬於2NF;但(書店編號,書籍編號)可以決定“部門編號”,“部門編號”又可決定“部門負責人”,存在傳遞依賴,所以不屬於3NF,更不是BCNF。
219.學生和課程的關系模式定義為:
S (S#,Sn,Sd,Dc,Sa)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡);
C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課);
SC(S#,C#,G)(其屬性分別學號、課程號和成績)。
關系中包含對主屬性傳遞依賴的是
A)S#→Sd
B)S#→Sd,(S#,C#)→G
C)S#→Sd,Sd→Dc
D)C#→P#,(S#,C#)→G
C【解析】關系SC的主屬性為(S#、C#),但在SC中S#(學號)單獨就可以決定Sd(所在系),Sd(所在系)可決定Dc(所在系的系主任),故對主屬性傳遞依賴的是S#→Sd,Sd→Dc。
220.設有課程關系模式如下:
R(C#,Cn,T,Ta)(其中C#為課程號,Cn為課程名,T為教師名,Ta為教師地址)並且假定不同課程號可以有相同的課程名,每個課程號下只有一位任課教師,但每位教師可以有多門課程。該關系模式可進一步規范化為
A)R1(C#,Cn,T),R2(T,Ta)
B)R1(C#,Cn),R2(T,Ta)
C)R1(C#,Cn,Ta),R2(T,Ta)
D)R1(C#,T),R2(T,Ta)
A【解析】本題的碼為課程號,由於每門課程只有一位任課教師,課程號就可以決定教師名、教師地址。課程號可決定教師名,教師名又決定教師地址,這里有對主屬性的傳遞依賴。可將該關系模式拆分為兩個關系模式R1和R2,其中R1包含課程號、課程名、教師名,R2包含教師名、教師地址。其中R1的主碼是課程號,R2的主碼為教師名。這樣兩個表都不會出現對主屬性的傳遞依賴。
221.下列敘述中正確的是( )。
A)算法的時間復雜度是指算法在執行過程中基本運算的次數
B)算法的時間復雜度是指算法執行所需要的時間
C)算法的時間復雜度是指算法執行的速度
D)算法復雜度是指算法控制結構的復雜程度
A【解析】算法的時間復雜度是指執行算法所需要的計算工作量,其計算工作量是用算法所執行的基本運算次數來度量的。
222.下列敘述中正確的是( )。
A)循環隊列是隊列的一種鏈式存儲結構
B)循環隊列是隊列的一種順序存儲結構
C)循環隊列中的隊尾指針一定大於隊頭指針
D)循環隊列中的隊尾指針一定小於隊頭指針
B【解析】在實際應用中,隊列的順序存儲結構一般采用循環隊列的形式。當循環隊列滿或者為空時:隊尾指針=隊頭指針。
223.某完全二叉樹有256個結點,則該二叉樹的深度為( )。
A)7
B)8
C)9
D)10
C【解析】根據完全二叉樹的性質:具有n個結點的完全二叉樹的深度為[log2n]+1。本題中完全二叉樹共有256個結點,則深度為[log2256]+1=8+1=9。
224.下列敘述中錯誤的是( )。
A)線性結構也能采用鏈式存儲結構
B)線性結構一定能采用順序存儲結構
C)有的非線性結構也能采用順序存儲結構
D)非線性結構一定不能采用順序存儲結構
D【解析】滿二叉樹與完全二叉樹均為非線性結構,但可以按照層次進行順序存儲。
225.需求分析的主要任務是( )。
A)確定軟件系統的功能
B)確定軟件開發方法
C)確定軟件開發工具
D)確定軟件開發人員
A【解析】需求分析是軟件開發之前必須要做的准備工作之一。需求是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。故需求分析的主要任務是確定軟件系統的功能。
226.一個模塊直接調用的下層模塊的數目稱為模塊的( )。
A)扇入數
B)扇出數
C)寬度
D)作用域
B【解析】扇入數指調用一個給定模塊的模塊個數。扇出數是指由一個模塊直接調用的其他模塊數,即一個模塊直接調用的下層模塊的數目。
227.將數據和操作置於對象統一體中的實現方式是( )。
A)隱藏
B)抽象
C)封裝
D)結合
C【解析】對象具有封裝性,從外面看只能看到對象的外部特性,對象的內部對外是封閉的。即封裝實現了將數據和操作置於對象統一體中。
228.采用表結構來表示數據及數據間聯系的模型是( )。
A)層次模型
B)概念模型
C)網狀模型
D)關系模型
D【解析】關系模型采用二維表來表示,簡稱表。
229.在供應關系中,實體供應商和實體零件之間的聯系是( )。
A)多對多
B)一對一
C)多對一
D)一對多
A【解析】一家供應商可提供多種零件,一種零件也可被多家供應商提供。所以實體供應商和實體零件之間的聯系是多對多。
230.如果定義班級關系如下:
班級(班級號,總人數,所屬學院,班級學生)
則使它不滿足第一范式的屬性是( )。
A)班級號
B)班級學生
C)總人數
D)所屬學院
B【解析】對於關系模式,若其中的每個屬性都已不能再分為簡單項,則它屬於第一范式模式。題目中“班級”關系的“班級學生”屬性,還可以進行再分,如學號、姓名、性別、出生日期等,因此不滿足第一范式。
231.下列敘述中正確的是( )。
A)鏈表可以是線性結構也可以是非線性結構
B)鏈表只能是非線性結構
C)快速排序也適用於線性鏈表
D)對分查找也適用於有序鏈表
A【解析】線性表的鏈式存儲結構稱為線性鏈表,線性鏈表可以是線性結構也可以是非線性結構。快速排序和對分查找是適用於順序存儲的線性表。
232.循環隊列的存儲空間為Q(1:50)。經過一系列正常的入隊與退隊操作后,front=rear=25。后又成功地將一個元素退隊,此時隊列中的元素個數為( )。
A)24
B)49
C)26
D)0
B【解析】當front=rear時可知隊列要么為空要么隊列滿,題目又成功地將一個元素退隊,說明之前隊列為滿(為空時隊列中無元素),退出一個元素后隊列中還有50-1=49個元素。
233.設二叉樹中有20個葉子結點,5個度為1的結點,則該二叉樹中總的結點數為( )。
A)46
B)45
C)44
D)不可能有這樣的二叉樹
C【解析】二叉樹中只存在度為0、1、2的結點,根據在二叉樹中度為0的結點(葉子結點)總比度為2的結點多一個,可知本題中度為2的結點有20-1=19個。故該二叉樹中總的結點數為20+5+19=44個。
234.設棧與隊列初始狀態為空。首先A,B,C,D,E依次入棧,再F,G,H,I,J依次入隊;然后依次出隊至隊空,再依次出棧至棧空。則輸出序列為( )。
A)E,D,C,B,A,F,G,H,I,J
B)E,D,C,B,A,J,I,H,G,F
C)F,G,H,I,J,A,B,C,D,E,
D)F,G,H,I,J,E,D,C,B,A
D【解析】棧稱為“后進先出”表或“先進后出”的線性表;隊列稱為“先進先出”或“后進后出”的線性表。F,G,H,I,J依次入隊,則依次出隊順序為F,G,H,I,J;A,B,C,D,E依次入棧,則依次出棧順序為E,D,C,B,A。故輸出順序為F,G,H,I,J,E,D,C,B,A。
235.下面不屬於軟件工程三要素的是( )。
A)環境
B)工具
C)過程
D)方法
A【解析】軟件工程包含3個要素:方法、工具和過程。
236.程序流程圖是( )。
A)總體設計階段使用的表達工具
B)詳細設計階段使用的表達工具
C)編碼階段使用的表達工具
D)測試階段使用的表達工具
B【解析】詳細設計階段常見的工具有程序流程圖、N-S圖、PAD圖、HIPO圖、判定表等。
237.下面屬於“對象”成份之一的是( )。
A)封裝 B)規則 C)屬性 D)繼承
C【解析】面向對象方法中的對象由兩部分組成:①數據,也稱為屬性,即對象所包含的信息,表示對象的狀態;②方法,也稱為操作,即對象所能執行的功能、所能具有的行為。
238.數據庫管理系統能實現對數據庫中數據的查詢、插入、修改和刪除,這類功能稱為( )。
A)數據控制功能
B)數據定義功能
C)數據存儲功能
D)數據操縱功能
D【解析】數據定義功能:負責數據的模式定義與數據的物理存取構建。
數據操縱功能:負責數據的操縱,包括查詢與增、刪、改等操作。
數據控制功能:負責數據完整性、安全性的定義與檢查以及並發控制、故障恢復等功能。
239.實體電影和實體演員之間的聯系是( )。
A)一對一 B)多對多
C)多對一 D)一對多
B【解析】一部電影可由多名演員參演,一名演員可以參演多部電影,因此實體電影和實體演員之間的聯系是多對多。
240.定義學生的關系模式如下:
S(S#,Sn,Sex,Age,D#,Da)(其屬性分別為學號、姓名、性別、年齡、所屬學院、院長)
該關系的范式最高是( )。
A)1NF B)2NF C)3NF D)BCNF
B【解析】關系數據庫中的關系是要滿足一定要求的,滿足不同程度要求的為不同的范式。滿足最低要求的叫第一范式,簡稱1NF。在滿足第一范式的基礎上,進一步滿足更多要求規范則是第二范式。然后在滿足第二范式的基礎上,還可以再滿足第三范式,以此類推。
對於關系模式,若其中的每個屬性都已不能再分為簡單項,則它屬於第一范式。
若某個關系R為第一范式,並且R中每一個非主屬性完全依賴於R的某個候選鍵,則稱其為第二范式。第二范式消除了非主屬性對主鍵的部分依賴。
如果關系R是第二范式,並且每個非主屬性都不傳遞依賴於R的候選鍵,則稱R為第三范式。(傳遞依賴:在關系模式中,如果Y→X,X→A,且X不決定Y和A不屬於X,那么Y→A是傳遞依賴。)
本題中,關系S滿足第一范式和第二范式,但是S#→D#,D#→Da,存在傳遞依賴,因此不滿足第三范式。該關系的范式最高是2NF。
241.下列敘述中正確的是( )。
A)快速排序法適用於順序存儲的線性表
B)快速排序適用於鏈式存儲的線性表
C)鏈式存儲的線性表不可能排序
D)堆排序適用於非線性結構
A【解析】排序可以在不同的存儲結構上實現,但快速排序法適用於順序存儲的線性表,不適用於鏈式存儲的線性表。堆排序適用於線性結構,不適用於非線性結構。
242.循環隊列的存儲空間為Q(1:50)。經過一系列正常的入隊與退隊操作后,front=rear=25。后又成功地將一個元素入隊,此時隊列中的元素個數為( )。
A)50 B)1 C)26 D)2
答案:B
【解析】當front=rear=25時可知隊列要么為空要么隊列滿,題目中又成功地將一個元素入隊,說明之前隊列為空(為滿時隊列中無法入隊元素),為空的隊列入隊一個元素后隊列中元素個數為1。
243.樹的度為3,且有9個度為3的結點,5個度為1的結點,但沒有度為2的結點。則該樹總的結點數為( )。
A)32
B)14
C)33
D)19
C【解析】在樹中,樹中的節點數等於樹中所有節點的度之和再加1。題干中樹的度為3,有9個度為3的結點,5個度為1的結點,無度為2的結點,設有n個度為0的結點,則總結點數=9×3+5×1+0×2+n×0+1=33個。
244.設棧與隊列初始狀態為空。首先A,B,C,D,E依次入棧,再F,G,H,I,J依次入隊;然后依次出棧至棧空,再依次出隊至隊空。則輸出序列為( )。
A)F,G,H,I,J,A,B,C,D,E
B)F,G,H,I,J,E,D,C,B,A
C)E,D,C,B,A,J,I,H,G,F
D)E,D,C,B,A,F,G,H,I,J
D【解析】棧稱為“后進先出”表或“先進后出”的線性表;隊列稱為“先進先出”或“后進后出”的線性表。A,B,C,D,E依次入棧,則依次出棧順序為E,D,C,B,A;F,G,H,I,J依次入隊,則依次出隊順序為F,G,H,I,J。故輸出順序為E,D,C,B,A,F,G,H,I,J。
245.屬於結構化程序設計原則的是( )。
A)模塊化
B)可繼承性
C)可封裝性
D)多態性
A【解析】結構化程序設計方法的原則包括:自頂向下、逐步求精、模塊化、限制使用goto語句。B、C、D三項屬於面向對象方法的特點。
246.確定軟件項目是否進行開發的文檔是( )。
A)需求分析規格說明書
B)可行性報告
C)軟件開發計划
D)測試報告
B【解析】可行性報告產生於軟件定義階段,用於確定軟件項目是否進行開發。
247.基本路徑測試是屬於( )。
A)黑盒測試方法且是靜態測試
B)黑盒測試方法且是動態測試
C)白盒測試方法且是動態測試
D)白盒測試方法且是靜態測試
C【解析】白盒測試法主要有邏輯覆蓋、基本路徑測試等。黑盒測試方法主要有等價類划分法、邊界值分析法、錯誤推測法和因果圖等。基本路徑測試根據軟件過程性描述中的控制流確定程序的環路復雜性度量,用此度量定義基本路徑集合,並由此導出一組測試用例對每一條獨立執行路徑進行測試。因此基本路徑測試屬於動態測試。
248.關系數據庫中的鍵是指( )。
A)關系的所有屬性
B)關系的名稱
C)關系的專用保留字
D)能唯一標識元組的屬性或屬性集合
D【解析】在關系(二維表)中凡是能唯一標識元組的最小屬性集稱為該關系的鍵或者碼。