[转载]数据结构笔试题基础
第一章 數據結構與算法
一.算法的基本概念
計算機解題的過程實際上是在實施某種算法,這種算法稱為計算機算法。
1.算法的基本特征:可行性,確定性,有窮性,擁有足夠的情報。
2.算法的基本要素:算法中對數據的運算和操作、算法的控制結構。
3.算法設計的基本方法:列舉法、歸納法、遞推、遞歸、減半遞推技術、回溯法。
4.算法設計的要求:正確性、可讀性、健壯性、效率與低存儲量需求
二.算法的復雜度
1.算法的時間復雜度:指執行算法所需要的計算工作量
2.算法的空間復雜度:執行這個算法所需要的內存空間
三.數據結構的定義
1.數據的邏輯結構:反映數據元素之間的關系的數據元素集合的表示。數據的邏輯結構包括集合、線形結構、樹形結構和圖形結構四種。
2.數據的存儲結構:數據的邏輯結構在計算機存儲空間種的存放形式稱為數據的存儲結構。常用的存儲結構有順序、鏈接、索引等存儲結構。
四.數據結構的圖形表示:
在數據結構中,沒有前件的結點稱為根結點;沒有后件的結點成為終端結點。插入和刪除是對數據結構的兩種基本運算。還有查找、分類、合并、分解、復制和修改等。
五.線性結構和非線性結構
根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分為兩大類型:線性結構和非線性結構。
線性結構:非空數據結構滿足:有且只有一個根結點;每個結點最多有一個前件,最多只有一個后件。非線性結構:如果一個數據結構不是線性結構,稱之為非線性結構。
常見的線性結構:線性表、棧、隊列
六.線性表的定義
線性表是n 個元素構成的有限序列(A1,A2,A3……)。表中的每一個數據元素,除了第一個以外,有且只有一個前件。除了最后一個以外有且只有一個后件。即線性表是一個空表,或可以表示為(a1,a2,……an), 其中ai(I=1,2,……n)是屬于數據對象的元素,通常也稱其為線性表中的一個結點。
非空線性表有如下一些特征:
(1)有且只有一個根結點a1,它無前件;
(2)有且只有一個終端結點an,它無后件;
(3)除根結點與終端結點外,其他所有結點有且只有一個前件,也有且只有一個后件。線性表中結點的個數n稱為線性表的長度。當n=0時稱為空表。
七.線性表的順序存儲結構
線性表的順序表指的是用一組地址連續的存儲單元依次存儲線性表的數據元素。
線性表的順序存儲結構具備如下兩個基本特征:
1.線性表中的所有元素所占的存儲空間是連續的;
2.線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。
即線性表邏輯上相鄰、物理也相鄰,則已知第一個元素首地址和每個元素所占字節數,則可求出任一個元素首地址。
假設線性表的每個元素需占用K個存儲單元,并以所占的第一個單元的存儲地址作為數據元素的存儲位置。則線性表中第i+1個數據元素的存儲位置LOC(ai+1)和第i個數據元素的存儲位置LOC(ai)之間滿足下列關系:
LOC(ai+1)=LOC(ai)+K
LOC(ai)=LOC(a1)+(i-1)*K???? ①
其中,LOC(a1)是線性表的第一個數據元素a1的存儲位置,通常稱做線性表的起始位置或基地址。
因為在順序存儲結構中,每個數據元素地址可以通過公式①計算得到,所以線性表的順序存儲結構是隨機存取的存儲結構。
在線性表的順序存儲結構下,可以對線性表做以下運算:
插入、刪除、查找、排序、分解、合并、復制、逆轉
八.順序表的插入運算
線性表的插入運算是指在表的第I個位置上,插入一個新結點x,使長度為n的線性表(a1,a2 …ai…an)變成長度為n+1的線性表(a1,a2…x,ai…an).
該算法的時間主要花費在循環的結點后移語句上,執行次數是n-I+1。
當I=n+1,最好情況,時間復雜度o(1) 當I=1, 最壞情況,時間復雜度o(n)
算法的平均時間復雜度為o(n)
九.順序表的刪除運算
線性表的刪除運算是指在表的第I個位置上,刪除一個新結點x,使長度為n的線性表(a1,a2 …ai…an)變成長度為n-1的線性表(a1,a2…ai-1,ai+1…an).
當I=n,時間復雜度o(1),當I=1,時間復雜度o(n) ,平均時間復雜度為o(n)
十.棧及其基本運算
1.什么是棧? 棧實際上也是一個線性表,只不過是一種特殊的線性表。棧是只能在表的一端進行插入和刪除運算的線性表,通常稱插入、刪除這一端為棧頂(TOP),另一端為棧底(BOTTOM)。當表中沒有元素時稱為空棧。棧頂元素總是后被插入的元素,從而也是最先被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。
假設棧S=(a1,a2,a3,……an),則a1 稱為棧底元素,an稱為棧頂元素。棧中元素按a1,a2,a3……an的次序進棧,退棧的第一個元素應該是棧頂元素。即后進先出。
2.棧的順序存儲及其運算
用S(1:M)作為棧的順序存儲空間。M為棧的最大容量。
棧的基本運算有三種:入棧、退棧與讀棧頂元素。
入棧運算:在棧頂位置插入一個新元素。
首先將棧頂指針進一(TOP+1),然后將新元素插入到棧頂指針指向的位置。
退棧運算:指取出棧頂元素并賦給一個指定的變量。
首先將棧頂元素賦給一個指定的變量,然后將棧頂指針退一(TOP-1)
讀棧頂元素:將棧頂元素賦給一個指定的變量。棧頂指針不會改變。
十一.隊列及其基本運算
1.什么是隊列
隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做對頭,允許插入的一端叫做對尾。
隊列的修改是先進先出。往隊尾插入一個元素成為入隊運算。從對頭刪除一個元素稱為退隊運算。
2.循環隊列及其運算
在實際應用中,隊列的順序存儲結構一般采用循環隊列的形式。所謂循環隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環狀空間。在循環隊列中,,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針 rear指向的位置之間所有的元素均為隊列中的元素。
在實際使用循環隊列時,為了能區分隊滿還是隊列空,通常需要增加一個標志S:
隊列空,則S=0,rear=front=m???? 隊列滿,則S=1,rear=front=m
循環隊列主要有兩種基本運算:入隊運算和退隊運算
n????? 入隊運算
指在循環隊列的隊尾加入一個新元素,首先rear=rear+1,當rear=m+1時,置rear=1,然后將新元素插入到隊尾指針指向的位置。當S=1,rear=front,說明隊列已滿,不能進行入隊運算,稱為“上溢”。
n????? 退隊運算
指在循環隊列的排頭位置退出一個元素并賦給指定的變量。首先front=front+1,并當front=m+1時,置front=1,然后將排頭指針指向的元素賦給指定的變量。當循環隊列為空S=0,不能進行退隊運算,這種情況成為“下溢”。
十二.線性單鏈表的結構及其基本運算
1.線性單鏈表的基本概念
一組任意的存儲單元存儲線性表的數據元素,因此,為了表示每個數據元素ai與其直接后繼數據元素ai+1之間的邏輯關系,對數據元素ai來說,除了存儲其本身的信息之外,還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置)。這兩部分信息組成數據元素ai的存儲映象,成為結點。它包括兩個域:其中存儲數據元素信息的域稱為數據域,存儲直接后繼存儲位置的域稱為指針域。指針域中存儲的信息稱做指針或鏈。N個結點鏈結成一個鏈表,即為線性表(a1, a2,……,an)的鏈式存儲結構。又由于此鏈表的每個結點中只包含一個指針域,故又稱線性鏈表或單鏈表。
有時,我們在單鏈表的第一個結點之前附設一個結點,稱之為頭結點,它指向表中第一個結點。頭結點的數據域可以不存儲任何信息,也可存儲如線性表的長度等類的附加信息,頭結點的指針域存儲指向第一個結點的指針(即第一個元素結點的存儲位置)。
在單鏈表中,取得第I個數據元素必須從頭指針出發尋找,因此,單鏈表是非隨機存取的存儲結構?? 鏈表的形式:單向,雙向
2.線性單鏈表的存儲結構
3帶鏈
3.帶列的棧與隊列
棧也是線性表,也可以采用鏈式存儲結構。
隊列也是線性表,也可以采用鏈式存儲結構。
十三.線性鏈表的基本運算 1.線性鏈表的插入 2.線性鏈表的刪除
十四.雙向鏈表的結構及其基本運算
在雙向鏈表的結點中有兩個指針域,其一指向直接后繼,另一指向直接前驅。
十五.循環鏈表的結構及其基本運算
是另一種形式的鏈式存儲結構,它的特點是表中最后一個結點的指針域指向頭結點,整個鏈表形成一個環。因此,從表中任一結點出發均可找到表中其他結點。
十六.樹的定義
樹是一種簡單的非線性結構。樹型結構的特點:
1.每個結點只有一個前件,稱為父結點,沒有前件的結點只有一個,稱為樹的根結點。
2.每一個結點可以有多個后件結點,稱為該結點的子結點。沒有后件的結點稱為葉子結點
3.一個結點所擁有的后件個數稱為樹的結點度
4.樹的最大層次稱為樹的深度。
十七.二叉樹的定義及其基本性質
1.二叉樹是另一種樹型結構,它的特點是每個結點至多只有二棵子樹(即二叉樹中不存在度大于2的結點),并且,二叉樹的子樹有左右之分,其次序不能任意顛倒。
2.二叉樹的基本性質
①在二叉樹的第I層上至多有2i-1個結點。
②深度為k的二叉樹至多有2k-1個結點(k>=1)
③在任意一個二叉樹中,度為0的結點總是比度為2的結點多一個;
④具有n 個結點的二叉樹,其深度至少為[log2n]+1。
一棵深度為k且有2k-1個結點的二叉樹稱為滿二叉樹。這種樹的特點是每一層上的結點數都是最大結點數。
3.滿二叉樹與完全二叉樹
滿二叉樹:除最后一層以外,每一層上的所有結點都有兩個子結點。在滿二叉樹的第K層上有2K-1個結點,且深度為M的滿二叉樹右2M-1個結點
完全二叉樹:除最后一層以外,每一層上的結點數均達到最大值;在最后一層上只缺少右邊的若干結點。具有N個結點的完全二叉樹的深度為[log2n]+1
完全二叉樹總結點數為N,
若N為奇數,則葉子結點數為(N+1)/2 若N為偶數,則葉子結點數為N/2
4.二叉樹的存儲結構
二叉樹通常采用鏈式存儲結構
十八.二叉樹的遍歷
就是遵從某種次序,訪問二叉樹中的所有結點,使得每個結點僅被訪問一次。一般先左后右。
1.前序遍歷DLR 首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。
2.中序遍歷LDR 首先遍歷左子樹,然后根結點,最后右子樹
3.后序遍歷LRD 首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。
十九.順序查找與二分查找
1.順序查找 在兩種情況下只能用順序查找:線性表為無序表、鏈式存儲結構的有序表
2.二分查找 只適用于順序存儲的有序表(從小到大)。
對于長度為N的有序線性表,在最壞情況下,二分查找只需要比較log2N次,而順序查找要比較N次。 排序:指將一個無序序列整理成按值非遞減順序排列的有序序列。
二十.交換類排序法
冒泡排序與快速排序法屬于交換類的排序方法
1.冒泡排序法 假設線性表的長度為N,則在最壞的情況下,冒跑排序需要經過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數為N(N-1)/2
2.快速排序法
二十一.選擇類排序法 1.簡單選擇排序法 2.堆排序法
二十三.插入類排序法 1.簡單插入排序法2.希爾排序法
?????????? 最壞情況下????? 最好情況下????? 說明
交換排序????? 冒泡排序????? n(n-1)/2??????????? 最簡單的交換排序。在待排序的元素序列基本有序的前提下,效率最高
???? 快速排序????? n(n-1)/2????? O(Nlog2 N)?????
插入排序????? 簡單插入排序????? n(n-1)/2??????????? 每個元素距其最終位置不遠時適用
???? 希爾排序????? O(n1.5)???????????
選擇排序????? 簡單選擇排序????? n(n-1)/2???????????
???? 堆排序????? O(nlog2n)??????????? 適用于較大規模的線性表
練習:
1.棧和隊列的共同特點是(只允許在端點處插入和刪除元素)
2.如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是(e2,e4,e3,e1)
3.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是(DCBEA)
4.棧通常采用的兩種存儲結構是(線性存儲結構和鏈表存儲結構)
5.下列關于棧的敘述正確的是(D)
???? A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特征D.棧有后進先出的特征
6.鏈表不具有的特點是(B)A.不必事先估計存儲空間?????? B.可隨機訪問任一元素
C.插入刪除不需要移動元素????? D.所需空間與線性表長度成正比
7.用鏈表表示線性表的優點是(便于插入和刪除操作)
8.在單鏈表中,增加頭結點的目的是(方便運算的實現)
9.循環鏈表的主要優點是(從表中任一結點出發都能訪問到整個鏈表)
10.線性表L=(a1,a2,a3,……ai,……an),下列說法正確的是(D)
???? A.每個元素都有一個直接前件和直接后件?? B.線性表中至少要有一個元素
???? C.表中諸元素的排列順序必須是由小到大或由大到小
???? D.除第一個和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
11.線性表若采用鏈式存儲結構時,要求內存中可用存儲單元的地址(D)
A.必須是連續的 B.部分地址必須是連續的C.一定是不連續的 D.連續不連續都可以
12.線性表的順序存儲結構和線性表的鏈式存儲結構分別是(隨機存取的存儲結構、順序存取的存儲結構)
13.樹是結點的集合,它的根結點數目是(有且只有1)
14.在深度為5的滿二叉樹中,葉子結點的個數為(31)
15.具有3個結點的二叉樹有(5種形態)
16.設一棵二叉樹中有3個葉子結點,有8個度為1的結點,則該二叉樹中總的結點數為(13)
17.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是(cedba)
18.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為(DGEBHFCA)
19.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是(gdbehfca)
20.數據庫保護分為:安全性控制、 完整性控制 、并發性控制和數據的恢復。
1. 在計算機中,算法是指(解題方案的準確而完整的描述)
2.在下列選項中,哪個不是一個算法一般應該具有的基本特征(無窮性)
說明:算法的四個基本特征是:可行性、確定性、有窮性和擁有足夠的情報。
3. 算法一般都可以用哪幾種控制結構組合而成(順序、選擇、循環)
4.算法的時間復雜度是指(算法執行過程中所需要的基本運算次數)
5. 算法的空間復雜度是指(執行過程中所需要的存儲空間)
6. 算法分析的目的是(分析算法的效率以求改進)
7. 下列敘述正確的是(C)
A.算法的執行效率與數據的存儲結構無關
B.算法的空間復雜度是指算法程序中指令(或語句)的條數
C.算法的有窮性是指算法必須能在執行有限個步驟之后終止
D.算法的時間復雜度是指執行算法程序所需要的時間
8.數據結構作為計算機的一門學科,主要研究數據的邏輯結構、對各種數據結構進行的運算,以及(數據的存儲結構)
9. 數據結構中,與所使用的計算機無關的是數據的(C)
A.存儲結構?? B.物理結構???? C.邏輯結構???? D.物理和存儲結構
10. 下列敘述中,錯誤的是(B)
A.數據的存儲結構與數據處理的效率密切相關
B.數據的存儲結構與數據處理的效率無關
C.數據的存儲結構在計算機中所占的空間不一定是連續的
D.一種數據的邏輯結構可以有多種存儲結構
11. 數據的存儲結構是指(數據的邏輯結構在計算機中的表示)
12. 數據的邏輯結構是指(反映數據元素之間邏輯關系的數據結構)
13. 根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分為(線性結構和非線性結構)
14. 下列數據結構具有記憶功能的是(C)A.隊列B.循環隊列C.棧D.順序表
15. 下列數據結構中,按先進后出原則組織數據的是(B)
A.線性鏈表?? B.棧??????????? C.循環鏈表??????? D.順序表
16. 遞歸算法一般需要利用(隊列)實現。
17. 下列關于棧的敘述中正確的是(D)A.在棧中只能插入數據B.在棧中只能刪除數據
C.棧是先進先出的線性表??????????? D.棧是先進后出的線性表
18. 棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是(DCBEA)
19.如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是(e2,e4,e3,e1)
20.? 由兩個棧共享一個存儲空間的好處是(節省存儲空間,降低上溢發生的機率)
21.? 應用程序在執行過程中,需要通過打印機輸出數據時,一般先形成一個打印作業,將其存放在硬盤中的一個指定(隊列)中,當打印機空閑時,就會按先來先服務的方式從中取出待打印的作業進行打印。
22.下列關于隊列的敘述中正確的是(C)A.在隊列中只能插入數據 B.在隊列中只能刪除數據?? C.隊列是先進先出的線性表??????????? D.隊列是先進后出的線性表
23.下列敘述中,正確的是(D)A.線性鏈表中的各元素在存儲空間中的位置必須是連續的
B.線性鏈表中的表頭元素一定存儲在其他元素的前面 C.線性鏈表中的各元素在存儲空間中的位置不一定是連續的,但表頭元素一定存儲在其他元素的前面 D.線性鏈表中的各元素在存儲空間中的位置不一定是連續的,且各元素的存儲順序也是任意的
24.下列敘述中正確的是(A)A.線性表是線性結構????? B.棧與隊列是非線性結構
C.線性鏈表是非線性結構???????????????????????????????? D.二叉樹是線性結構
25. 線性表L=(a1,a2,a3,……ai,……an),下列說法正確的是(D)
A.每個元素都有一個直接前件和直接后件????? B.線性表中至少要有一個元素
C.表中諸元素的排列順序必須是由小到大或由大到小D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
26.線性表若采用鏈式存儲結構時,要求內存中可用存儲單元的地址(連續不連續都可以)
27. 鏈表不具有的特點是(B)A.不必事先估計存儲空間??????????? B.可隨機訪問任一元素
C.插入刪除不需要移動元素??????????? D.所需空間與線性表長度成正比
28. 非空的循環單鏈表head的尾結點(由p所指向),滿足(p->next=head)
29.與單向鏈表相比,雙向鏈表的優點之一是(更容易訪問相鄰結點)
30. 在(D)中,只要指出表中任何一個結點的位置,就可以從它出發依次訪問到表中其他所有結點。A.線性單鏈表??????????? B.雙向鏈表??????????? C.線性鏈表??????????? D.循環鏈表
31. 以下數據結構屬于非線性數據結構的是(C)A.隊列????? B.線性表C.二叉樹????? D.棧
32.樹是結點的集合,它的根結點數目是(有且只有1)
33.具有3個結點的二叉樹有(5種形態)
34. 在一棵二叉樹上第8層的結點數最多是(128) 注:2K-1
35. 在深度為5的滿二叉樹中,葉子結點的個數為(16) 注:2n-1
36. 在深度為5的滿二叉樹中,共有(31)個結點。 注:2n-1
37.設一棵完全二叉樹共有699個結點,則在該二叉樹中的葉子結點數為(350)
說明:完全二叉樹總結點數為N,若N為奇數,則葉子結點數為(N+1)/2;若N為偶數,則葉子結點數為N/2。
38. 設有下列二叉樹,對此二叉樹中序遍歷的結果是(B)
A.ABCDEF?????
B.DBEAFC
C.ABDECF?????
D.DEBFCA
39.已知二叉樹后序遍歷序列是dabec,中序遍歷序列debac,它的前序遍歷序列是(cedba)
40. 已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為(DGEBHFCA)
41.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是(gdbehfca)
42. 串的長度是(串中所含字符的個數)
43.設有兩個串p和q,求q在p中首次出現位置的運算稱做(模式匹配)
44. N個頂點的連通圖中邊的條數至少為(N-1)
45.N個頂點的強連通圖的邊數至少有(N)
46.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為(N)
47. 最簡單的交換排序方法是(冒泡排序)
48.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為(n(n-1)/2)
49. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是(冒泡排序)
50. 在最壞情況下,下列順序方法中時間復雜度最小的是(堆排序)
51. 希爾排序法屬于(插入類排序)
52. 堆排序法屬于(選擇類排序)
53. 在下列幾種排序方法中,要求內存量最大的是(歸并排序)
54.? 已知數據表A中每個元素距其最終位置不遠,為節省時間,應采用(直接插入排序)
55. 算法的基本特征是可行性、確定性、 有窮性?? 和擁有足夠的情報。
1.一個算法通常由兩種基本要素組成:一是對數據對象的運算和操作,二是算法的控制結構。
1. 算法的復雜度主要包括時間復雜度和 空間 復雜度。
2.? 實現算法所需的存儲單元多少和算法的工作量大小分別稱為算法的空間復雜度和時間復雜度 。
3.所謂數據處理是指對數據集合中的各元素以各種方式進行運算,包括插入、刪除、查找、更改等運算,也包括對數據元素進行分析。
4.數據結構是指相互有關聯的 數據元素 的集合。
5.數據結構分為邏輯結構與存儲結構,線性鏈表屬于 存儲結構 。
6.數據結構包括數據的 邏輯 結構和數據的存儲結構。
7. 數據結構包括數據的邏輯結構、數據的 存儲結構 以及對數據的操作運算。
8.數據元素之間的任何關系都可以用 前趨和后繼 關系來描述。
9.數據的邏輯結構有線性結構和非線性結構兩大類。
10.常用的存儲結構有順序、鏈接、 索引 等存儲結構。
11. 順序存儲方法是把邏輯上相鄰的結點存儲在物理位置?? 相鄰 的存儲單元中。
12. 棧的基本運算有三種:入棧、退棧與讀棧頂元素 。
13. 隊列主要有兩種基本運算:入隊運算與 退隊運算 。
14. 在實際應用中,帶鏈的??梢杂脕硎占嬎銠C存儲空間中所有空閑的存儲結點,這種帶鏈的棧稱為 可利用棧 。
15.棧和隊列通常采用的存儲結構是 鏈式存儲和順序存儲?? 。
16.當線性表采用順序存儲結構實現存儲時,其主要特點是 邏輯結構中相鄰的結點在存儲結構中仍相鄰 。
17. 循環隊列主要有兩種基本運算:入隊運算與退隊運算。每進行一次入隊運算,隊尾指針就 進1 。
18.當循環隊列非空且隊尾指針等于對頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為 上溢?? 。
19.當循環隊列為空時,不能進行退隊運算,這種情況稱為 下溢 。
20. 在一個容量為25的循環隊列中,若頭指針front=16,尾指針rear=9,則該循環隊列中共有 18 個元素。注:當rear<front時,元素個數=總容量-(front-rear);
當rear>front時,元素個數=rear-front。
21. 在一個容量為15的循環隊列中,若頭指針front=6,尾指針rear=9,則該循環隊列中共有3 個元素。
22.順序查找一般是指在 線性表 中查找指定的元素。
23.在計算機中存放線性表,一種最簡單的方法是 順序存儲 。
24.在程序設計語言中,通常定義一個 一維數組 來表示線性表的順序存儲空間。
25.在鏈式存儲方式中,要求每個結點由兩部分組成:一部分用于存放數據元素值,稱為數據域,另一部分用于存放指針,稱為 指針域 。其中指針用于指向該結點的前一個或
后一個結點(即前件或后件)。
26.在 線性單鏈表中 ,每一個結點只有一個指針域,由這個指針只能找到后繼結點,但不能找到前驅結點。
27. 為了要在線性鏈表中插入一個新元素,首先要給該元素分配一個 新結點 ,以便用于存儲該元素的值。
28. 在線性鏈表中刪除一個元素后,只需要改變被刪除元素所在結點的前一個結點的 指針域 即可。
29. 用鏈表表示線性表的突出優點是 便于插入和刪除操作 。
30. 在樹形結構中,樹根結點沒有?? 前件 。
31. 在樹結構中,一個結點所擁有的后件個數稱為該結點的度。葉子結點的度為 0 。
32. 設一棵二叉樹中有3個葉子結點,8個度為1的結點,則該二叉樹中總的結點數為 13。
33. 設一棵完全二叉樹共有739個結點,則在該二叉樹中有 370 個葉子結點。
34. 設一棵完全二叉樹共有700個結點,則在該二叉樹中有 350 個葉子結點。
35. 在先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍歷、 中序 遍歷和后序遍歷。
36.? 若串S="Program",則其子串的數目是 29 。 注:n(n+1)/2+1
37.? 若串S=”MathTypes”,則其子串的數目是 46 。
38. 對長度為n的線性表進行插入一個新元素或刪除一個元素時,在最壞情況下所需要的比較次數為 n 。
39.? 在長度為n的有序線性表中進行順序查找。最壞的情況下,需要的比較次數為?? n?? 。
40.? 在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數為 log2n 。
41. 長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為 n/2 。
42.? 排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、 交換排序 和選擇排序等。
43. 快速排序法可以實現通過一次交換而消除多個 逆序 。
44. 快速排序法的關鍵是對線性表進行 分割 。
45. 冒泡排序算法在最好的情況下的元素交換次數為 0 。
46. 在最壞情況下,冒泡排序的時間復雜度為 n(n-1) /2 。
47.? 對于長度為n的線性表,在最壞情況下,快速排序所需要的比較次數為 n(n-1) /2 。
48.在最壞情況下,簡單插入排序需要比較的次數為 n(n-1) /2 。
49.在最壞情況下,希爾排序需要比較的次數為 O(n1.5) 。注:括號里是n的1.5次方。
50. 在最壞情況下,簡單選擇排序需要比較的次數為 n(n-1) /2 。
51. 在最壞情況下,堆排序需要比較的次數為 o(nlog2n) 。
52.對于輸入為N個數進行快速排序算法的平均時間復雜度是 O(Nlog2 N)。
?
第二章 程序設計基礎
一.程序設計方法與風格
當今主導的程序設計風格是“清晰第一,效率第二”的觀點。
1.在結構化程序設計思想提出之前,在程序設計中曾強調程序的效率。與程序的效率相比,人們更重視程序的( C )。 A.安全性?? B.一致性 C.可理解性D.合理性
2.對建立良好的程序設計風格,下面的描述正確的是(A )
A.程序應簡單、清晰、可讀性好 B.符號名的命名只要符合語法??
C.充分考慮程序的執行效率???? D.程序的注釋可有可無
3. 在設計程序時.應采納的原則之一是( D)。A.不限制GOTO語句的使用
B.減少或取消注解行???? C.程序越短越好???? D.程序結構應有助于讀者理解
4.程序應該簡單易懂,語句構造應該簡單直接,不應該為提高效率而把語句復雜化。
5.源程序文檔化要求程序應加注釋,注釋一般分為序言性注釋和 功能性注釋 。
6.在編寫程序時,需要注意 數據說明 的風格,以便使程序中的數據說明更易理解和維護。
7.當程序設計語言對輸入格式有嚴格要求時,應保持輸入格式與輸入語句的一致性??
程序設計語言的基本成分是數據成分、運算成分、控制成分和(傳輸成分)。
二.結構化程序設計
1結構化程序設計的原則
8.結構化程序設計方法的主要原則是:自頂向下、逐步求精、模塊化、限制使用goto語句?? 2結構化程序的基本結構與特點
9.結構化程序設計主要強調的是(B)???? A.程序的規模???? B.程序的易讀性?????? C.程序的執行效率 D.程序的可移植性
10.結構化程序設計的3種結構是(順序結構、選擇結構、循環結構)。
結構化程序設計方法是程序設計的先進方法和工具。下面為三種基本的控制結構:
順序結構:是一種簡單的程序設計,它是最基本,最常用的結構
選擇結構:又稱為分支結構,包括簡單選擇和多分支選擇結構
重復結構:又稱循環結構,有兩類循環語句:當型循環結構(先判斷后執行循環體)和直到型循環結構(先執行循環體后判斷)
按結構化程序設計方法設計出的程序具有兩大明顯的優點:1、程序易于理解、使用和維護。2、提高了編程工作效率,降低了軟件開發成本。
3.結構化程序設計原則和方法的應用
11.結構化程序設計的主要特點是(每個控制結構只有一個入口和一個出口)
12.下列敘述中,不屬于結構化程序設計方法的主要原則的是(B)。
A.自頂向下?? B.由底向上?? C.模塊化?? D.限制使用GOTO語句
在結構化程序設計的具體實施中,要注意如下要素:
使用程序設計語言中的順序、選擇、循環等有限的控制結構表示程序的控制邏輯;選用的控制結構只準許的一個入口和一個出口;程序語句組成容易識別的塊,每塊只有一個入口和一人出口;復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現;語言中所沒有的控制結構,應該采用前后一致的方法來模擬;嚴格控制GOTO語句的使用。其意思有三:1.用一個非結構化的程序設計語言去實現一個結構化的構造;2.如不使用GOTO語句會使功能模糊;3.在某種可以改善而不是損害程序可讀性的情況下。
三.面向對象的程序設計
1. 關于面向對象方法
25.面向對象的程序設計方法中涉及的對象是系統中用來描述客觀事物的一個 實體
傳統的程序設計方法是面向過程的,其核心方法是以 算法 為核心。面向對象方法和技術以 對象 為核心。對象是由 數據 和 容許的操作 組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳遞 消息 互相聯系,以模擬現實世界中不同事物彼此之間的聯系。
? 面向對象方法基于構造問題領域的對象模型,以對象為中心構造軟件系統。它的基本作法是用 對象 模擬問題領域中的實體,以 對象間的聯系 刻畫實體間的聯系。
? 軟件重用 是指在不同的軟件開發過程中重復使用相同的或者相似軟件元素的過程。?? 重用是提高軟件生產率的最主要的方法。
2. 面向對象方法的基本概念(對象、類、消息、繼承、多態性)
13.面向對象的模型中,最基本的概念是對象和 類
14.類是一個支持集成的抽象數據類型,而對象是類的 實例
對象:面向對象的程序設計方法中涉及的對象是系統中用來描述客觀事物的一個實體,是構成系統一個基本單位,它由一組表示靜態特征的屬性和它可執行的一組操作組成。(是由描述該對象屬性的數據以及可以對這些數據施加的所有操作封裝在一起構成的統一體。)
? 屬性:是對象所包含的信息,它在設計對象時確定,一般只能通過執行對象的操作來改變。
? 操作:描述了對象執行的功能,若通過信息傳遞,還可為其它對象使用。操作過程對外是封閉的,用戶只能看到這一操作實施后的結果,對象的這一特性,即是對象的封裝體。
15.對象實現了數據和操作的結合,是指對數據和數據的操作進行(封裝)。
16.封裝是一種(信息屏蔽)技術,封裝的目的是使對象的定義和實現分離。
17.以下不屬于對象的基本特點的是(C)。 A.分類性?? B.多態性?? C.繼承性?? D.封裝性
對象有如下一些基本特點.即標識惟一性、分類性、多態性、封裝性和模塊獨立性。
18.下面關于對象的描述錯誤的是(A)A.任何對象都必須有繼承性B.對象是屬性和方法的封裝體???????? C.對象間的通迅靠消息傳遞?? D.操作是對象的動態屬性
19.信息隱蔽的概念與下述哪能一種概念直接相關(模塊獨立性)
20.可以把具有相同屬性的一些不同對象歸類,稱為?? 對象類?? 。
類:是具有其同屬性、共同方法的對象的集合。所以,類是對象的抽象,這描述了屬于該對象類型的所有對象的性質,而一個對象則是其對應類的一個實例。類同對象一樣,包括一組數據屬性和在數據上的一組合法操作。 對象可以是一個具體的對象也可以是泛指一般的對象,而實例必然是指一個具體的對象。
21.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送(消息)
消息:面向對象的世界是通過對象與對象間彼此的相合合作來推動的,對象間這種合作需要一個機制協助進行,這樣的機制稱為“消息”。消息就是一個實例與另一個實例之間傳遞的信息,它統一了數據流和控制流。一個消息由下述三部分組成:1、接收消息的對象的名稱。 2、消息標識符(即消息名)3、零個或多個參數。
22.在面向對象方法中,類之間共享屬性和操作的機制稱為?? 繼承?? 。
23.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用此方法提高了軟件的可重用性
繼承:是面向對象方法的一個主要特征。繼承是使用已有的定義作為基礎建立新類的定義技術。也就是說繼承是指能夠直接獲得已有的功能和突出的優點,而不必重復定義它們。
? 繼承具有傳遞性,可分為單繼承與多重繼承。單繼承是指一個類只允許有一人父類,即類等級為樹形結構。多重繼承是指一個類允許有多個父類。多態性:對象根據所接受的消息而做出動作,同樣的消息被不同的對象接受時可導致完全不同的行動,這種現象即為多態性。多態性機制可提高軟件系統的靈活性,可重用性和可擴充性。
24.子程序通常分為兩類: 過程?? 和函數,前者是命令的抽象,后者是為了求值。
?
第三章 軟件工程
重點:需求分析、概要設計、詳細設計、軟件測試和軟件調試的作用、方法等
?
一、 軟件工程基本概念
1. 軟件是計算機系統中與硬件相互依存的重要部分,包括程序、數據及相關的 文檔 。其中,程序 是軟件開發人員根據用戶需求開發的、用程序設計語言描述的、適合計算機執行的指令(語句)序列。
2. 下列敘述中,正確的是(D)。 A.軟件就是程序清單?? B.軟件就是存放在計算機中的文件 C.軟件應包括程序清單及運行結果???? D.軟件包括程序和文檔?
3. 軟件按功能可以分為:應用軟件、系統軟件、支撐軟件(或工具軟件)
4. 軟件工程的出現是由于(軟件危機的出現)
5. 開發軟件所需高成本和產品的低質量之間有著尖銳的矛盾,這種現象稱做(軟件危機)
軟件工程概念的出現源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題??傊?#xff0c;可以將軟件危機歸結為成本、質量、生產率等問題。
6. 開發大型軟件時,產生困難的根本原因是(大型系統的復雜性)。
7. 軟件危機出現于20世紀60年代末,為了解決軟件危機,人們提出了 軟件工程學 的原理來設計軟件這就是軟件工程誕生的基礎。
8. 下列不屬于軟件工程的3個要素的是(D)
A.工具?? B.過程?? C.方法?? D.環境
軟件工程過程與軟件生命周期
9. 軟件工程過程是把輸入轉化為輸出的一組彼此相關的 資源 和活動。通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為 軟件生命周期
10.軟件生命周期中所花費用最多的階段是(軟件維護)
11.軟件開發的結構化生命周期方法將軟件生命周期劃分成(定義、開發、運行維護)。???????
12. 軟件生命周期一般包括可行性研究與需求分析、設計、實現、測試、交付使用以及維護等活動。
軟件工程的目標與原則
13. 軟件工程的理論和技術性研究的內容主要包括:軟件開發技術和軟件工程管理。軟件開發技術包括:軟件開發方法學、開發過程、開發工具和軟件工程環境,主體內容是軟件開發方法學。軟件工程管理包括:軟件管理學、軟件工程經濟學、軟件心理學等內容。
14. 軟件工程的理論和技術性研究的內容主要包括軟件開發技術和(軟件工程管理)????????
15. 軟件工程的原則包括抽象、信息隱藏、模塊化、局部化、確定性、一致性、完備性和可驗證性。
軟件開發工具與軟件開發環境
16. 開發軟件時對提高開發人員工作效率至關重要的是(先進的軟件開發工具和環境)?????? 17. 軟件開發環境是全面支持軟件開發全過程的 軟件工具 集合。
常用的軟件開發方法和技術可以分為三大類:瀑布型、增量型和變換型。瀑布型開發方法將軟件生命周期的各項活動規定為按固定順序連接的若干階段,強調早期的需求分析和開發的階段性,強調產品測試;但是不能適應需求的變化。增量型則先建立一個不完全的系統,通過對需求的理解再進一步擴充和完善。
例:瀑布模型突出的缺點是不適應(D)的變動
A.算法B.平臺C)程序語言D.用戶需求
二、結構化分析方法??
需求分析與需求分析方法
18. 在軟件生產過程中,需求信息的給出是(軟件用戶)。
19. 需求分析中,開發人員要從用戶那里了解(軟件做什么)。
20. 需求分析階段的任務是確定 (軟件系統功能)
21. 需求分析的任務是發現需求、求精、建模和定義需求的過程。需求分析將創建所需的數據模型、功能模型和 控制模型
22. 需求分析階段的工作:需求獲取、需求分析、編寫需求規格說明書、需求評審
下列工具中屬于需求分析常用工具的是(D)。
A)PAD???? B)PFD???? C)N—S???? D)DFD
結構化分析方法
常用的需求分析方法:
(1)結構化分析方法。主要包括:面向數據流的結構化分析方法(SA),面向數據結構的Jackson方法(JSD)和面向數據結構的結構化數據系統開發方法(DSSD)
(2)面向對象的分析方法(OOA)
23. 結構化方法的核心和基礎是 結構化程序設計理論
24. 下列不屬于結構化分析的常用工具的是(D)。
A)數據流圖?? B)數據字典?? C)判定樹?? D)PAD圖
25. 在結構化方法中,用數據流程圖(DFD)作為描述工具的軟件開發階段是 (B)
A)可行性分析 B)需求分析?? C)詳細設計?? D)程序編碼
26. 數據流圖用于抽象描述一個軟件的邏輯模型.數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是(A)。
A)控制流?? B)加工?? C)數據存儲?? D)源和潭
說明:數據流圖中的主要圖形元素與說明:
27. 在數據流圖(DFD)中的箭頭代表的是(數據流)
28. 在數據流圖(DFD)中,帶有名字的箭頭表示(數據的流向)。
29. 在結構化分析方法中,用于描述系統中所用到的全部數據和文件的文檔稱為 數據字典
軟件需求規格說明書
30. 軟件需求規格說明書 是需求分析階段的最后結果
31. 下列敘述中,不屬于軟件需求規格說明書的作用的是(D)
A.便于用戶、開發人員進行理解和交流??????????? B.反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據?????????????????? C.作為確認測試和驗收的依據???? D.便于開發人員進行需求分析
32. (數據描述)是對軟件系統所必須解決的問題做出的詳細說明
說明:需求規格說明書一般包括以下內容:概述、數據描述、性能描述、功能描述、參考文獻目錄等。其中概述從系統角度描述軟件的目標和任務;功能描述中描述了為解決用戶問題所需要的每一項功能的過程細節;性能描述說明系統應達到的性能和應該滿足的限制條件、檢測的方法和標準。
三、???? 結構化設計方法
軟件設計的基本概念
33. 在軟件開發中,下面任務不屬于設計階段的是(D)
A)數據結構設計 B) 給出系統模塊結構 C)定義模塊算法 D)定義需求并建立系統模型
34. 軟件設計包括軟件的結構、數據、接口和過程設計,其中軟件的過程設計是指(系統結構部件轉換成軟件的過程描述)。
說明:結構設計:定義軟件系統各主要部件之間的關系;數據設計:將分析時創建的模型轉化為數據結構的定義;接口定義:描述軟件內部、軟件和協作系統之間以及軟件與人之間如何通信;過程設計:把系統結構部件轉換成軟件的過程性描述。
35. 下面不屬于軟件設計原則的是(C)A.抽象 B.模塊化?? C.自底向上?? D.信息隱藏???? 36. 耦合和內聚是評價模塊獨立性的兩個主要標準,其中?? 內聚 反映了模塊內各成分之間的聯系,耦合反映了模塊間互相連接的緊密程度。
?37. 內聚性是信息隱蔽和局部化概念的自然擴展,一個模塊的內聚性越強,則該模塊的模塊獨立性越 強 。一個模塊與其它模塊的耦合性越強,則它的模塊獨立性越 弱 。????????????????
?38. 下列敘述中,正確的是(C)
A.接口復雜的模塊,其耦合程度一定低?????? B.耦合程度弱的模塊,其內聚程度一定低?? C.耦合程度弱的模塊,其內聚程度一定高???? D.以上都不對
39.下列選項中,不屬于模塊間耦合的是(B)。A.數據耦合B.同構耦合C.異構耦D.公用耦合40.軟件設計中,有利于提高模塊獨立性的一個準則是( C)。
A.低內聚低耦合?? B.低內聚高耦合?? C.高內聚低耦合?? D.高內聚高耦合
概要設計
41. 軟件的概要 設計又稱為總體結構設計,其主要任務是建立軟件系統的總體結構,設計數據結構及數據庫,編寫概要設計文檔,概要設計文檔評審。
42. 在結構化方法中,軟件功能分解屬于下列軟件開發中的階段是 (C)
A.詳細設計 B.需求分析 C.總體設計 D.編程調試
43. 在概要設計階段,常用的軟件結構設計工具是 結構圖 (sc),也稱程序結構圖。生成的結構圖中,帶有箭頭的連線表示(模塊之間的調用關系),矩形表示模塊。???????????????????????? 44. 在概要設計階段,一般采用面向數據流的設計方法。數據流的類型有 變換型?? 和事務型。將變換型映射成結構圖稱為 變換分析 。將事務型映射成結構圖稱為 事務分析 。???? 45. 好的軟件設計結構通常 頂層 高 扇出,中間扇出較少,底層 高 扇入。???????????????? 46. 模塊的控制范圍包括它本身以及它所有的從屬模塊,模塊的作用范圍是指模塊內一個判定的作用范圍,凡是受到這個判定影響的所有模塊都屬于這個判定的作用范圍。理想的情況是(模塊的作用范圍應在控制范圍內)
詳細設計
47. 詳細設計 的任務是為軟件結構圖中的每一個模塊確定實現算法和局部數據結構,用選定的表達工具表示算法和數據結構的細節。確定怎樣來具體實現所要求的系統。?????????????? 48. 為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替傳統的程序流程圖,通常也把這種圖稱為(N—S圖)。
49. 詳細設計的結果基本決定了最終程序的(質量)。
50. 軟件設計模塊化的目的是 降低復雜性。
51. 詳細設計的典型語言描述工具是(PDL)
結構化分析(需求階段)的常用工具有:數據流圖(DFD)、數據字典(DD)、判定樹和判定表
結構設計(概要設計階段)工具是:結構圖(SC, structure chart)
過程設計(詳細設計階段)常見的工具有:程序流程圖、N—S圖、PAD圖(問題分析圖,)和PDL( 過程設計語言)
四、軟件測試 軟件測試的目的
52. 在軟件測試設計中,軟件測試的主要目的是(D)。A.實驗性運行軟件?? B.證明軟件正確 C.找出軟件中全部錯誤?? D.發現軟件錯誤而執行程序
(注意:不是為了證明軟件的正確性,也不是為了找出全部錯誤)
?軟件測試的準則
53. 下列敘述中.不屬于測試的特征的是(C)。
A.測試的挑剔性?? B.完全測試的不可能性?? C.測試的可靠性?? D.測試的經濟性
軟件測試技術與方法
軟件測試方法從是否需要執行被測試軟件的角度,可以分為 靜態測試 和 動態測試 ;按功能劃分為 白盒測試 和 黑盒測試 。
靜態測試包括 代碼檢查 、 靜態結構分析 、 代碼質量量度 等
白盒測試和黑盒測試都屬于 動態測試
白盒測試的主要方法: 邏輯覆蓋 、 基本路徑測試 等
黑盒測試的主要方法: 等價類劃分法 、 邊界值分析法 、 錯誤推測法 、 因果圖 等
54. 下列不屬于靜態測試方法的是(B)。
A.代碼檢查???? B.白盒法?????? C.靜態結構分析?? D.代碼質量度量
55. 在軟件工程中,白箱測試法可用于測試程序的內部結構。此方法將程序看做是(A)。
A.路徑的集合?? B.循環的集合???? C.目標的集臺???? D.地址的集合
56. 完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例的測試方法是(A)
A.黑箱測試法?? B.白箱測試法???? C.錯誤推測法???? D.安裝測試法
57. 黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證,不考慮程序內部的邏輯結構,在軟件接口處進行。常用的黑箱測試有等價分類法、 邊界值分析法 、因果圖法和錯誤推測法4種。
軟件測試的實施
58. 軟件測試過程一般按4個步驟進行,即單元測試、集成測試、驗收測試(確認測試)和系統測試
58.檢查軟件產品是否符合需求定義的過程稱為(A)
?? A.確認測試B.集成測試C.驗證測試D.驗收測試
說明:軟件的測試過程一般按4個步驟進行:
單元測試:對軟件設計的最小單位—模塊進行正確性檢驗的測試,發現模塊內部可能存在的錯誤。由于模塊通常不是一個獨立的程序,不能單獨運行,所以常常需要用到模擬環境??梢圆捎渺o態測試和動態測試(以白盒測試為主)。
集成測試:測試和組裝模塊的過程,主要是發現與接口有關的錯誤,依據是概要設計說明書。涉及的內容有:軟件單元的接口測試、全局數據結構測試、邊界條件和非法輸入的測試等。通常采用兩種方式:非增量方式組裝域增量方式組裝
驗收測試(確認測試):驗證軟件的功能和性能以及其他特性是否滿足了需求規格說明書中確定的各種需求,以及軟件配置是否完全、正確。采用黑盒測試。
系統測試:將軟件與硬件、用戶、數據等組合,在實際運行環境下對整個系統進行集成測試和確認測試。
59. 軟件開發離不開系統環境資源的支持.其中必要的測試數據屬于(D)。
A.硬件資源???? B.通信資源???? C.支持軟件???? D.輔助資源
軟件測試過程中,輔助資源包括測試用例(測試數據)、測試計劃、出錯統計和最終分析報告等。
60. 為了提高測試的效率,應該(D)A.隨機選取測試數據???? B.取一切可能的輸入數據作為測試數據 C.在完成編碼以后制定軟件的測試計劃???? D.集中對付那些錯誤群集的程序
61. 為了便于對照檢查,測試用例應由輸入數據和預期的 輸出結果 兩部分組成。
五、程序的調試
軟件調試(Debug,即排錯)的任務是診斷和改正程序中的錯誤,與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。軟件測試貫穿整個軟件生命期,調試主要在開發階段。
62. 程序調試的基本步驟:錯誤定位、修改和設計代碼以排除錯誤、進行回歸測試防治引進新的錯誤。
63.下列敘述正確的是(D)
A.測試和調試工作必須由程序編制者自己完成???? B.測試用例和調試用例必須完全一致
C.一個程序經調試改正錯誤后,一般不必再進行測試 D.上述三種說法都不對
軟件調試方法
64. 下列不屬于軟件調試技術的是(B)。
A.強行排錯法B.集成測試法C.回溯法D.原因排除法
六、軟件維護
65. 軟件維護活動包括以下幾類:校正性維護、適應性維護、 完善性維護和預防性維護。
?
第四章????? 數據庫設計基礎
一、數據庫系統的基本概念
數據、數據庫、數據庫管理系統
1.數據處理的最小單位是(C)。
A.數據?? B.數據元素?? C.數據項???? D.數據結構
2.下列有關數據庫的描述,正確的是(C)。A.數據庫是一個DBF文件?? B.數據庫是一個關系
C.數據庫是一個結構化的數據的集合?? D.數據庫是一組文件
3.下述關于數據庫系統的敘述中正確的是(A)
A.數據庫系統減少了數據冗余?????? B.數據庫系統避免了一切冗余
C.數據庫系統避免了一切數據的重復?? D.數據庫系統比文件系統能管理更多的數據
4.下列有關數據庫的描述.正確的是(D)。A.數據處理是將信息轉化為數據的過程
B.數據的物理獨立性是指當數據的邏輯結構改變時,數據的存儲結構不變
C.關系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它是另一個關系的關鍵字,則稱其為本關系的外關鍵字
5.下列4項說法中不正確的是(C)。
A.數據庫減少了數據冗余?????? B.數據庫中的數據可以共享
C.數據庫避免了一切數據的重復?? D.數據庫具有較高的數據獨立性
6.下列敘述中。不屬于數據庫系統的是(D)。
A.數據庫?? B.數據庫管理系統?? C.數據庫管理員?? D.數據庫應用系統
7.數據庫系統的核心是(數據庫管理系統)。
8.數據庫、數據庫系統和數據庫管理系統之間的關系是(數據庫系統包括數據庫和數據庫管理系統)。
9.為用戶與數據庫系統提供接口的語言是(數據操縱語言(DML))。
數據庫管理系統一般提供的數據語言有:
數據庫定義語言(DDL):負責數據的模式定義與數據的物理存取構建
數據操縱語言(DML):負責數據的操縱,包括查詢及增、刪、改變等操作
數據庫控制語言(DCL):負責數據完整性、安全性的定義與檢查以及并發控制、故障恢復等
2. 數據庫系統的發展
10.在數據管理技術的發展過程中.經歷了人工管理階段、文件系統階段和數據庫系統階段。其中數據獨立性最高的階段是(數據庫系統)。
11.在數據管理技術發展過程中,文件系統與數據庫系統的主要區別是數據庫系統具有(A)。
A.特定的數據模型?? B.數據無冗余?? C.數據可共享?? D.專門的數據管理軟件
12.相對于數據庫系統,文件系統的主要缺陷有數據關聯差、數據不一致性和(冗余性)。
13.分布式數據庫系統不具有的特點是( D)。 A.數據分布性和邏輯整體性
B.位置透明性和復制透明性?????????? C.分布性???????????? D.數據冗余
3.數據庫系統的基本特點
數據獨立性 是數據與程序間的互不依賴性,即數據庫中數據獨立于應用程序而不依賴于應用程序。也就是說,數據的邏輯結構、存儲結構和存取方式的改變都不會影響應用程序。數據獨立性包括物理獨立性和?? 邏輯獨立性 兩個含義。
當數據的物理結構(存儲結構、存取方式等)改變時,不影響數據庫的邏輯結構.從而不致引起應用程序的變化,這是指數據的?? 物理獨立性?? 。
4.數據庫系統的內部結構
數據庫系統在其內部具有三級模式及二級映射,三級模式分別是概念級模式、內部級模式與外部級模式,二級映射分別是概念級到內部級的映射以及外部級到概念級的映射。這種三級模式與二級映射構成了數據庫系統內部抽象結構體系。
14.單個用戶使用的數據視圖的描述稱為(外模式)。索引屬于(內模式)。
二、數據模型
1.數據模型的基本概念
數據模型是數據庫設計的核心。其內容有三個部分:數據結構、數據操作和數據約束
數據模型按不同應用層次分3種類型,它們是概念數據模型、邏輯數據模型和物理數據模型。
概念數據模型簡稱概念模型,是面向客觀世界、面向用戶的模型;是整個數據模型的基礎。與具體的數據庫管理系統無關,著重于對客觀事件的結構描述以及它們之間的內在聯系的刻畫。常用的有E-R模型、擴充的E-R模型等。
邏輯數據模型又稱數據模型,是面向數據庫系統的模型,著重于數據庫系統一級的實現。概念模型只有在轉換成數據模型后才有可能在數據庫中得以表示。常見的有層次模型、網狀模型和關系模型。
數據庫管理系統常見的數據模型有層次模型、網狀模型和 關系模型 3種。
15.下列數據模型中,具有堅實理論基礎的是(C)。
A.層次模型?? B.網狀模型?? C.關系模型?? D.以上3個都是
16.下列說法中,不屬于數據模型所描述的內容的是(C)。
A.數據結構?? B.數據操作?? C.數據查詢?? D.數據約束
2.E-R模型
17.實體是信息世界中廣泛使用的一個術語,它用于表示(C)。
A.有生命的事物?? B.無生命的事物?? C.實際存在的事物?? D.一切事物
18.E-R模型由 實體 、聯系 和 屬性 三個基本概念組成。
19.將E—R圖轉換到關系模式時,實體與聯系都可以表示成(關系)。
20.下列敘述中,正確的是(A)。
A.用E—R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B.用E—R圖只能表示實體集之問一對一的聯系
C.用E—R圖只能表示實體集之間一對多的聯系
D.用E—R圖表示的概念數據模型只能轉換為關系數據模型
21.公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員,從職員到部門的聯系類型是(多對一)。
3.層次模型和網狀模型
4.關系模型
22.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個?? 關系
23.最常用的一種基本數據模型是關系數據模型,它的表示應采用(二維表)。
24.由關系數據庫系統支持的完整性約束是指?? 實體完整性?? 和參照完整性。
25.關系模型允許定義3類數據約束,下列不屬于數據約束的是(C)。
A.實體完整性約束?? B.參照完整性約束 C.域完整性約束?? D.用戶自定義的完整性約束
26.“年齡在18歲一25歲之間”這種約束是屬于數據庫中的( C )。
A.原子性措施 B.一致性措施?? C.完整性措施?? D.安全性措施
27.關系模型的數據操縱是建立在關系上的數據操縱,一般有查詢、增加、刪除和修改四種操作。
28.下列4項中.必須進行查詢優化的是( A)。
A.關系數據庫?? B.網狀數據庫?? C.層次數據庫?? D.非關系模型
三、關系代數
29.關系操作的特點是?? 集合?? 操作。
30.關系數據庫的關系演算語言是以?? 謂詞演算?? 為基礎的DML語言。
31.一個關系中屬性個數為l時,稱此關系為(一元關系)。
32.關系表中的每一橫行稱為一個(元組)。
33.下列關系模型中,能使經運算后得到的新關系中屬性個數多于原來關系中屬性個數的是(B)。A.選擇?? B.連接?? C.投影?? D.并
34.關系運算?? 是從二維表列的方向進行的運算。
35.關系數據庫管理系統應能實現的專門的關系運算包括(選擇、投影、連接)。
四、數據庫設計與管理
數據庫設計概述
36.數據庫設計包括兩個方面的設計內容,它們是(D)。A.概念設計和邏輯設計
B.模式設計和內模式設計?? C.內模式設計和物理設計?? D.結構特性設計和行為特性設計
37.數據庫設計分為以下6個設計階段:需求分析階段、 概念設計階段 、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。
數據庫設計的需求分析
38.對數據庫設計來講,數據字典 是進行詳細的數據收集和數據分析所獲得的主要結果。
數據庫概念設計
39.數據庫概念設計的目的是分析數據間內在語義聯系,在此基礎上建立一個數據的抽象模型。方法有以下兩種:集中式模式設計法、視圖集成設計法。
40.視圖設計一般有3種設計次序,下列不屬于視圖設計次序的是(B)。
A.自頂向下?? B.由外向內?? C.由內向外?? D.自底向上
數據庫的邏輯設計
41.數據庫的邏輯設計的主要工作是將E-R圖轉換成指定RDBMS(關系數據庫管理系統)中的關系模式,另一個重要內容是關系視圖的設計,又稱外模式設計。
42.在數據庫設計中,將E—R圖轉換成關系數據模型的過程屬于(邏輯設計階段)。
數據庫的物理設計
43.數據庫的物理設計主要目標是對數據庫內部物理結構做出調整并選擇合理的存取路徑,以提高數據庫訪問速度及有效利用存儲空間。大致包括:索引設計、集簇設計和分區設計。
數據庫管理
44.數據庫是一種共享資源,需要維護與管理,這種工作稱為 數據庫管理 。實施此項管理的人稱為數據庫管理員。數據庫的建立包括兩部分的內容:數據模式的建立和數據加載。
45.數據庫在運行一段時間以后,性能會逐步下降,需要對數據庫進行重新整理,重新調整存貯空間,這種工作叫數據庫重組。
46.數據庫的故障恢復一般是由DBA完成的
47.數據庫保護分為:安全性控制、完整性控制、并發性控制和數據的恢復。
48.數據庫恢復是將數據庫從錯誤狀態恢復到某一已知的正確狀態。
SQL語句的循序漸進寫法
二級VF考試中,SQL語言部分占了很大比例,可以說該部分掌握好壞直接關系到整個考試的成敗。
???? 在上機考試中,初學者在進行SQL語言查詢時常常丟三拉四,或是標點符號的全角半角搞錯了,或丟掉了某些必要步驟,導致很長時間也無法得到正確輸入。
那么,如何能書寫好的復雜SQL查詢語句呢?
????? 本人歸納了一套循序漸進的書寫方法,對于初學者非常有效。
1) SQL語句的格式可以歸納為:
select 字段 from 表;
? where 篩選條件;
? group by 分組字段;
??? having 分組條件;
? order by 排序字段 asc,desc
2) 學習語言可以認為是一個學習填空的過程。語言的框架已經在設計語言編譯器時就給定了,用戶不可違背,必須遵守語言提供好的規范,用戶做的就是把自己需要表達的東西以填空的方式填入其中。
2.1) 分析數據源,嘗試在命令窗口運行基本框架直到正確。
單表可以在命令窗口中輸入:select * from 表
雙表可以在命令窗口中輸入:select * from 表1,表2 where 表1.聯接字段=表2.聯接字段
三表需要分析表如何鏈接然后在命令窗口中輸入:select * from 表1,表2,表3 where 表1.聯接字段=表2.聯接字段 and 表2.聯接字段=表3.聯接字段
如果采用超聯接模式書寫,
雙表模式可以書寫為:select * from 表1 join 表2 on 表1.聯接字段=表2.聯接字段
三表模式可以書寫為:select * from 表1 join 表2 join 表3 on 表2.聯接字段=表3.聯接字段 and 表1.聯接字段=表2.聯接字段
2.2) 分析篩選條件,將其轉換為邏輯表達式。
光標移動到上一步驟命令末尾,補充篩選條件,然后回車檢查。
如果出現錯誤或同預期結果不同,說明剛才輸入語句有問題,修改后繼續回車檢查。
2.3) 補充篩選字段,具體操作類似上一步,光標移動到上一步驟命令末尾,補充篩選條件,然后回車檢查。
如果出現錯誤或同預期結果不同,說明剛才輸入語句有問題,修改后繼續回車檢查。
2.4) 補充排序條件
??? 以上操作看似煩瑣,實則不然:每次增加的部分不是全部SQL語句重新輸入,而是在已經成功的命令行基礎上予以修訂和補充。上一步驟已經正確完成了,出現錯誤的話只能是本步驟操作失誤造成的,修改增加部分即可。
相反,由于初學者對SQL語法格式不熟悉,書寫SQL語句巴不得一氣呵成,一旦發生錯誤,往往會用大量時間去調試,反而欲速而不達。
根據題目要求還可以繼續補充:
2.5) 補充分組字段,增加group by語句,查看能否正確分組,但這時一定注意,select * from 表 group by 分組字段彈出每一行記錄除少數字段有意義外,因此最好隨后修改顯示字段
2.6) 在增加分組字段正確后,補充having條件
2.7) 最后補充其它信息,如top短語、into table等短語等
以下題為例采用循序漸進法予以說明:
例:以表employee.dbf和orders.dbf中數據為基礎,使用SQL命令檢索訂單數最多的前三名男職工的職工號、姓名、訂單數,檢索結果按訂單數降序存入表newcoun.dbf中。
employee(職工號,姓名,性別,年齡)
orders(訂單號,訂購物品,訂購單位,訂購日期,職工號)
分析:首先打開兩表,發現兩表屬于1對多關系,一個職工對應多個訂單。沒有訂單數字段,只能按照職工號分組然后通過COUNT計數后求出訂單數量。
操作:
1) 搭建框架,在命令窗口中輸入基本框架:select * from employee e join orders o on e.職工號=o.職工號
2) 補充篩選字段,光標移動到上一行末尾,補充為:select * from employee e join orders o on e.職工號=o.職工號 where 性別="男"
3) 補充分組字段,光標移動到上一行末尾,補充為:select * from employee e join orders o on e.職工號=o.職工號 where 性別="男" group by e.職工號
4) 修改顯示字段:select e.職工號,姓名,count(*) as 訂單數 from employee e join orders o on e.職工號=o.職工號 where 性別="男" group by e.職工號
5) 沒有having分組條件,補充top短語:select top 3 e.職工號,姓名,count(*) as 訂單數 from employee e join orders o on e.職工號=o.職工號 where 性別="男" group by e.職工號
6) 補充查詢去向:select top 3 e.職工號,姓名,count(*) as 訂單數 from employee e join orders o on e.職工號=o.職工號 where 性別="男" group by e.職工號 into table newcoun
大家可以把這種方法推廣到其它方面,也可在查詢設計器中套用該方法??傊?#xff0c;操作不可急于求成,要按部就班,循序漸進。
轉載于:https://www.cnblogs.com/pekkle/archive/2008/04/09/6568863.html
總結
以上是生活随笔為你收集整理的[转载]数据结构笔试题基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十个习惯让你精通新的开发技术
- 下一篇: REMBER