(41) 在下列選項中,哪個不是一個算法一般應該具有的基本特征______。
A. 確定性
B. 可行性
C. 無窮性
D. 擁有足夠的情報
(41)
[答案]C
[考點]程序設計基礎
[評析]
算法具有確定性、可行性,并擁有足夠的情報。
(42) 希爾排序法屬于哪一種類型的排序法______。
A. 交換類排序法
B. 插入類排序法
C. 選擇類排序法
D. 建堆排序法
(42)
[答案]B
[考點]數(shù)據(jù)結構與算法
[評析]
Shell排序法 輸入:數(shù)組名稱(也就是數(shù)組首地址)、數(shù)組中元素個數(shù)思想為:在直接插入排序算法中,每次插入一個數(shù),使有序序列只增加1個節(jié)點, 并且對插入下一個數(shù)沒有提供任何幫助。如果比較相隔較遠距離(稱為增量)的數(shù),使得數(shù)移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。D.L.shell于1959年在以他名字命名的排序算法中實現(xiàn)了這一思想。算法先將要排序的一組數(shù)按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然后再用一個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數(shù)被分成一組,排序完成。
下面的函數(shù)是一個希爾排序算法的一個實現(xiàn),初次取序列的一半為增量,
以后每次減半,直到增量為1。以C語言為例。
void shell_sort(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j {
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
}
}
}
故屬于插入類排序法。
(43) 下列關于隊列的敘述中正確的是______。
A. 在隊列中只能插入數(shù)據(jù)
B. 在隊列中只能刪除數(shù)據(jù)
C. 隊列是先進先出的線性表
D. 隊列是先進后出的線性表
(43)
[答案]C
[考點]數(shù)據(jù)構與算法
[評析]
隊列是先進先出的,棧是先進后出的,2者的區(qū)別一定要搞清楚。
(44) 對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為______。
A. N+1
B. N
C. (N+1)/2
D. N/2
(44)
[答案]B
[考點]數(shù)據(jù)結構與算法
[評析]
很簡單,我們的二級程序設計語言書中都有此算法,另外還要掌握二分法查找,這也是我們二級中??嫉摹?BR> 那么二分法最壞的情況為多少次呢?
>log2 n的最小整數(shù)值。
比如n為4,最壞的情況要比較3次;
n為18,最壞的情況要比較5次。
二分法適用于已排序的順序表(我們二級語言中都是數(shù)組),考二級書里的,這里不再羅嗦。
(45) 信息隱蔽的概念與下述哪一種概念直接相關______。
A. 軟件結構定義
B. 模塊獨立性
C. 模塊類型劃分
D. 模擬耦合度
(45)
[答案]B
[考點]軟件工程基礎
[評析]
模塊獨立性越強,則信息隱蔽性越好。
舉個例,
VB:
在多重窗體設計時,每個窗體里的變量盡量與其它窗體里變量無關,比如少用Public聲明的變量,即全局變量,當多個窗體共享全局變量越多時,窗體的獨立性就越差。
C:
頭文件里的一些函數(shù),一般不用到全局變量,否則在主程序里出亂子的情況很多,我們在模塊化開發(fā)時,盡量使每個模塊獨立,強功能內(nèi)聚,分工明確,調(diào)試程序也要方便得多。
C++:
考此項的朋友估計不用我多講,類的封裝性就是一個很好的說明。
(46) 面向對象的設計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是______。
A. 模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B. 強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C. 使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D. 鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領域的概念去思考
(46)
[答案]C
[考點]軟件工程基礎
[評析]
我們舉個例,
從各種語言的結構體類型出發(fā),我們知道,結構體中可以定義很多變量,對每個變量執(zhí)行相同的操作,挨個挨個寫出,很麻煩。假設該結構體有如下變量:
草魚、田魚、鯽魚……
它們都在一口池塘里,現(xiàn)在執(zhí)行:它們都上來
傳統(tǒng)的程序設計是:
草魚上來
田魚上來
鯽魚上來
……
一條一條都寫出,是不是很麻煩?
改進一下,我們用個循環(huán):
n等于從1到10(假設共有10種魚)
第n種魚上來
還是很麻煩,現(xiàn)實中我們很易想到用"面向對象的思想",池塘里所有的魚都是一個結構體變量,名為魚,執(zhí)行:
魚上來
意思即所有的魚都上來。
現(xiàn)特定于面象對象語言中的類,魚,就可以看作為一類。
這就屬于 C 項:
使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
這樣羅嗦的解釋望大家別暈,旨在幫助部分人的確難想通的,為應試,你能背下答案也行。
(47) 在結構化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是______。
A. 詳細設計
B. 需求分析
C. 總體設計
D. 編程調(diào)試
(47)
[答案]C
[考點]軟件工程基礎
[評析]
從先到后一排,是:
需求分析、總體設計、詳細設計、編程調(diào)試
需求分析遠離在計算機上的實現(xiàn),談不上功能的分解;
有了需求分析的報告,軟件設計員可以思考我要讓軟件怎么做,開始總體設計,其間將軟件的功能分解,確定模塊之間的接口;
有了每個模塊功能的分解,再對每個模塊進入詳細設計階段;
接下來再是程序員的任務,編寫代碼,開始編程調(diào)試。
(48) 軟件調(diào)試的目的是______。
A. 發(fā)現(xiàn)錯誤
B. 改正錯誤
C. 改善軟件的性能
D. 挖掘軟件的潛能
(48)
[答案]B
[考點]軟件工程基礎
[評析]
倒!
一個程序調(diào)試是為了干什么?
還不是為了改正錯誤?
發(fā)現(xiàn)錯誤?這只是一個過程,改正錯誤之前必須先發(fā)現(xiàn)錯誤,總不能目的就僅為發(fā)現(xiàn)錯誤吧。
(49) 按條件f對關系R進行選擇,其關系代數(shù)表達式為______。
A. R|X|R
B. R|X|R
f
C. бf(R)
D. ∏f(R)
(49)
[答案]C
[考點]數(shù)據(jù)庫設計基礎
[評析]
C是選擇一行,D是投影一列,二者要區(qū)分開。
如果不僅談此題的話,有關關系代數(shù),內(nèi)容有些多,這里不是一兩句能說清,可以看看相關《數(shù)據(jù)庫》的資料中的關系代數(shù),里面寫得很詳細。為應試,情急之下能記住幾個題答案就行。
(50) 數(shù)據(jù)庫概念設計的過程中,視圖設計一般有三種設計次序,以下各項中不對的是______。
A. 自頂向下
B. 由底向上
C. 由內(nèi)向外
D. 由整體到局部
(50)
[答案]D
[考點]數(shù)據(jù)庫設計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細化
2、自底向上。先局部概念結構,再集成為全局結構
3、由里向外。先核心結構,再向外擴張
4、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構
(51) 在計算機中,算法是指______。
A. 查詢方法
B. 加工方法
C. 解題方案的準確而完整的描述
D. 排序方法
(51)
[答案]C
[考點]數(shù)據(jù)結構與算法
[評析]
A、B、D都過于片面,此題直接選答案也很簡單。
(52) 棧和隊列的共同點是______。
A. 都是先進后出
B. 都是先進先出
C. 只允許在端點處插入和刪除元素
D. 沒有共同點
(52)
[答案]C
[考點]數(shù)據(jù)結構與算法
[評析]
棧是先進后出的,隊列是先進先出的,共同點是只允許在端點處插入和刪除元素。棧都是在一端進與出,而隊列是在一端進在另一端出。
(53) 已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______。
A. cedba
B. acbed
C. decab
D. deabc
(53)
[答案]A
[考點]數(shù)據(jù)結構與算法
[評析]
后序又叫后根,一次遞歸過程是先左再右最后根;中序是先左再根最后右。
比如下圖:
前序是:abc
中序是:bac
后序是:bca
題中據(jù)后序遍歷序列,一眼得知c結點是根,那么據(jù)中序deba結點都在一邊,或都在根結點左邊,或右邊;據(jù)中序遍歷序列得知全在根結點的左邊。
接下來據(jù)后序得出e結點是緊挨著c結點的左子女,再據(jù)中序得知d是e的左子女,ba是右子樹。
再據(jù)后序得b是e的右子女,再據(jù)中序得a是b的右子女。
分析結果得二叉樹圖示如下:
因為我茂葉數(shù)據(jù)結構是自學的,分析此類型的題我都是用自己的方法(遞歸分析的方法),要邊分析邊畫圖,一步一步連結起來,最后再根據(jù)題中的遍歷檢查圖是否畫對,如果都符合題目,最后再可根據(jù)圖來得所求的遍歷。
再次聲明,此所有二級公基題全是我一人的思路寫的,如果你覺得不可靠,可以看其它的書。
(54) 在下列幾種排序方法中,要求內(nèi)存量的是______。
A. 插入排序
B. 選擇排序
C. 快速排序
D. 歸并排序
(54)
[答案]D
[考點]數(shù)據(jù)結構與算法
[分析]
我們對比一個排序方法的優(yōu)越性有"平均時間"、"最壞情況時間"和"輔助空間"。其中輔助空間一般是排序中需要額外的內(nèi)存開銷,這些內(nèi)存開銷一般據(jù)一些如中間變量(暫存變量)、比較與交換等等來決定。
插入排序和選擇排序的輔助空間都是o(1),快速排序是o(nlog2n),歸并排序是o(n)。
可知歸并排序要求內(nèi)存量,我們也可以從其變量及循環(huán)個數(shù)也以看出歸并排序要求內(nèi)存量。
(55) 在設計程序時,應采納的原則之一是______。
A. 程序結構應有助于讀者理解
B. 不限制goto語句的使用
C. 減少或取消注解行
D. 程序越短越好
(55)
[答案]A
[考點]程序設計基礎
[評析]
前面的題中已解釋過,二級的各種程序設計語言教程都會對結構化程序設有一定的介紹,比如goto語句的限制使用,基本上每本書上都會提到。
其中A,即易讀性比程序的效率更顯得重要,這是結構化程序設計原則提倡的,也是我們進行開發(fā)時非常重要的一點。
(56) 下列不屬于軟件調(diào)試技術的是______。
A. 強行排錯法
B. 集成測試法
C. 回溯法
D. 原因排除法
(56)
[答案]B
[考點]軟件工程基礎
[評析]
耍個小聰明:)
我們嚴格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。不用說答案就是B了 :)
A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。
測試有單元測試、集成測試、確認測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。
題外話:
很多人學軟件工程時認為軟件工程太無聊了,似乎全部都是些背背記記的東西,但對于一個軟件構架師,軟件工程是非常重要的,這就不能是些背背的東西了,最重要的是理解,要徹底地理解,還得有些開發(fā)經(jīng)驗才行?!盾浖こ獭愤@學科是從實踐中得出來的,同樣也需要賦予給實踐中去,這樣才有用!
(57) 下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A. 便于用戶、開發(fā)人員進行理解和交流
B. 反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù)
C. 作為確認測試和驗收的依據(jù)
D. 便于開發(fā)人員進行需求分析
(57)
[答案]D
[考點]軟件工程基礎
[評析]
A、B、C都是作用,D說法有一定的錯誤,開發(fā)人員包括很多,比如程序員的工作就不是進行需求分析。
(58) 在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。
A. 控制程序的執(zhí)行順序
B. 模塊之間的調(diào)用關系
C. 數(shù)據(jù)的流向
D. 程序的組成成分
(58)
[答案]C
[考點]軟件工程基礎
[評析]
顧名思義,數(shù)據(jù)流圖就是帶有方框(外部實體)、圓圈(變換/加工)和帶有名字的箭頭以表示數(shù)據(jù)的流向。需求分析中常用的分析圖,它遠離計算機上的具體實現(xiàn),軟件人員和用戶都能看懂,有益于和用戶交流。
(59) SQL語言又稱為______。
A. 結構化定義語言
B. 結構化控制語言
C. 結構化查詢語言
D. 結構化操縱語言
(59)
[答案]C
[考點]數(shù)據(jù)庫設計基礎
[評析]
學VF和ACCESS的朋友輕而易舉選出答案,考其它的朋友們?nèi)魶]學數(shù)據(jù)庫技術這一章節(jié),則要記一下了。
Structured Query Language
結構化 查詢 語言(語句)
(60) 視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A. 自頂向下
B. 由外向內(nèi)
C. 由內(nèi)向外
D. 自底向上
(60)
[答案]B
[考點]數(shù)據(jù)庫設計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細化
2、自底向上。先局部概念結構,再集成為全局結構
3、由里向外。先核心結構,再向外擴張
4、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構
A. 確定性
B. 可行性
C. 無窮性
D. 擁有足夠的情報
(41)
[答案]C
[考點]程序設計基礎
[評析]
算法具有確定性、可行性,并擁有足夠的情報。
(42) 希爾排序法屬于哪一種類型的排序法______。
A. 交換類排序法
B. 插入類排序法
C. 選擇類排序法
D. 建堆排序法
(42)
[答案]B
[考點]數(shù)據(jù)結構與算法
[評析]
Shell排序法 輸入:數(shù)組名稱(也就是數(shù)組首地址)、數(shù)組中元素個數(shù)思想為:在直接插入排序算法中,每次插入一個數(shù),使有序序列只增加1個節(jié)點, 并且對插入下一個數(shù)沒有提供任何幫助。如果比較相隔較遠距離(稱為增量)的數(shù),使得數(shù)移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。D.L.shell于1959年在以他名字命名的排序算法中實現(xiàn)了這一思想。算法先將要排序的一組數(shù)按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然后再用一個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數(shù)被分成一組,排序完成。
下面的函數(shù)是一個希爾排序算法的一個實現(xiàn),初次取序列的一半為增量,
以后每次減半,直到增量為1。以C語言為例。
void shell_sort(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j {
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
}
}
}
故屬于插入類排序法。
(43) 下列關于隊列的敘述中正確的是______。
A. 在隊列中只能插入數(shù)據(jù)
B. 在隊列中只能刪除數(shù)據(jù)
C. 隊列是先進先出的線性表
D. 隊列是先進后出的線性表
(43)
[答案]C
[考點]數(shù)據(jù)構與算法
[評析]
隊列是先進先出的,棧是先進后出的,2者的區(qū)別一定要搞清楚。
(44) 對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為______。
A. N+1
B. N
C. (N+1)/2
D. N/2
(44)
[答案]B
[考點]數(shù)據(jù)結構與算法
[評析]
很簡單,我們的二級程序設計語言書中都有此算法,另外還要掌握二分法查找,這也是我們二級中??嫉摹?BR> 那么二分法最壞的情況為多少次呢?
>log2 n的最小整數(shù)值。
比如n為4,最壞的情況要比較3次;
n為18,最壞的情況要比較5次。
二分法適用于已排序的順序表(我們二級語言中都是數(shù)組),考二級書里的,這里不再羅嗦。
(45) 信息隱蔽的概念與下述哪一種概念直接相關______。
A. 軟件結構定義
B. 模塊獨立性
C. 模塊類型劃分
D. 模擬耦合度
(45)
[答案]B
[考點]軟件工程基礎
[評析]
模塊獨立性越強,則信息隱蔽性越好。
舉個例,
VB:
在多重窗體設計時,每個窗體里的變量盡量與其它窗體里變量無關,比如少用Public聲明的變量,即全局變量,當多個窗體共享全局變量越多時,窗體的獨立性就越差。
C:
頭文件里的一些函數(shù),一般不用到全局變量,否則在主程序里出亂子的情況很多,我們在模塊化開發(fā)時,盡量使每個模塊獨立,強功能內(nèi)聚,分工明確,調(diào)試程序也要方便得多。
C++:
考此項的朋友估計不用我多講,類的封裝性就是一個很好的說明。
(46) 面向對象的設計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是______。
A. 模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B. 強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C. 使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D. 鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領域的概念去思考
(46)
[答案]C
[考點]軟件工程基礎
[評析]
我們舉個例,
從各種語言的結構體類型出發(fā),我們知道,結構體中可以定義很多變量,對每個變量執(zhí)行相同的操作,挨個挨個寫出,很麻煩。假設該結構體有如下變量:
草魚、田魚、鯽魚……
它們都在一口池塘里,現(xiàn)在執(zhí)行:它們都上來
傳統(tǒng)的程序設計是:
草魚上來
田魚上來
鯽魚上來
……
一條一條都寫出,是不是很麻煩?
改進一下,我們用個循環(huán):
n等于從1到10(假設共有10種魚)
第n種魚上來
還是很麻煩,現(xiàn)實中我們很易想到用"面向對象的思想",池塘里所有的魚都是一個結構體變量,名為魚,執(zhí)行:
魚上來
意思即所有的魚都上來。
現(xiàn)特定于面象對象語言中的類,魚,就可以看作為一類。
這就屬于 C 項:
使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
這樣羅嗦的解釋望大家別暈,旨在幫助部分人的確難想通的,為應試,你能背下答案也行。
(47) 在結構化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是______。
A. 詳細設計
B. 需求分析
C. 總體設計
D. 編程調(diào)試
(47)
[答案]C
[考點]軟件工程基礎
[評析]
從先到后一排,是:
需求分析、總體設計、詳細設計、編程調(diào)試
需求分析遠離在計算機上的實現(xiàn),談不上功能的分解;
有了需求分析的報告,軟件設計員可以思考我要讓軟件怎么做,開始總體設計,其間將軟件的功能分解,確定模塊之間的接口;
有了每個模塊功能的分解,再對每個模塊進入詳細設計階段;
接下來再是程序員的任務,編寫代碼,開始編程調(diào)試。
(48) 軟件調(diào)試的目的是______。
A. 發(fā)現(xiàn)錯誤
B. 改正錯誤
C. 改善軟件的性能
D. 挖掘軟件的潛能
(48)
[答案]B
[考點]軟件工程基礎
[評析]
倒!
一個程序調(diào)試是為了干什么?
還不是為了改正錯誤?
發(fā)現(xiàn)錯誤?這只是一個過程,改正錯誤之前必須先發(fā)現(xiàn)錯誤,總不能目的就僅為發(fā)現(xiàn)錯誤吧。
(49) 按條件f對關系R進行選擇,其關系代數(shù)表達式為______。
A. R|X|R
B. R|X|R
f
C. бf(R)
D. ∏f(R)
(49)
[答案]C
[考點]數(shù)據(jù)庫設計基礎
[評析]
C是選擇一行,D是投影一列,二者要區(qū)分開。
如果不僅談此題的話,有關關系代數(shù),內(nèi)容有些多,這里不是一兩句能說清,可以看看相關《數(shù)據(jù)庫》的資料中的關系代數(shù),里面寫得很詳細。為應試,情急之下能記住幾個題答案就行。
(50) 數(shù)據(jù)庫概念設計的過程中,視圖設計一般有三種設計次序,以下各項中不對的是______。
A. 自頂向下
B. 由底向上
C. 由內(nèi)向外
D. 由整體到局部
(50)
[答案]D
[考點]數(shù)據(jù)庫設計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細化
2、自底向上。先局部概念結構,再集成為全局結構
3、由里向外。先核心結構,再向外擴張
4、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構
(51) 在計算機中,算法是指______。
A. 查詢方法
B. 加工方法
C. 解題方案的準確而完整的描述
D. 排序方法
(51)
[答案]C
[考點]數(shù)據(jù)結構與算法
[評析]
A、B、D都過于片面,此題直接選答案也很簡單。
(52) 棧和隊列的共同點是______。
A. 都是先進后出
B. 都是先進先出
C. 只允許在端點處插入和刪除元素
D. 沒有共同點
(52)
[答案]C
[考點]數(shù)據(jù)結構與算法
[評析]
棧是先進后出的,隊列是先進先出的,共同點是只允許在端點處插入和刪除元素。棧都是在一端進與出,而隊列是在一端進在另一端出。
(53) 已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______。
A. cedba
B. acbed
C. decab
D. deabc
(53)
[答案]A
[考點]數(shù)據(jù)結構與算法
[評析]
后序又叫后根,一次遞歸過程是先左再右最后根;中序是先左再根最后右。
比如下圖:
前序是:abc
中序是:bac
后序是:bca
題中據(jù)后序遍歷序列,一眼得知c結點是根,那么據(jù)中序deba結點都在一邊,或都在根結點左邊,或右邊;據(jù)中序遍歷序列得知全在根結點的左邊。
接下來據(jù)后序得出e結點是緊挨著c結點的左子女,再據(jù)中序得知d是e的左子女,ba是右子樹。
再據(jù)后序得b是e的右子女,再據(jù)中序得a是b的右子女。
分析結果得二叉樹圖示如下:
因為我茂葉數(shù)據(jù)結構是自學的,分析此類型的題我都是用自己的方法(遞歸分析的方法),要邊分析邊畫圖,一步一步連結起來,最后再根據(jù)題中的遍歷檢查圖是否畫對,如果都符合題目,最后再可根據(jù)圖來得所求的遍歷。
再次聲明,此所有二級公基題全是我一人的思路寫的,如果你覺得不可靠,可以看其它的書。
(54) 在下列幾種排序方法中,要求內(nèi)存量的是______。
A. 插入排序
B. 選擇排序
C. 快速排序
D. 歸并排序
(54)
[答案]D
[考點]數(shù)據(jù)結構與算法
[分析]
我們對比一個排序方法的優(yōu)越性有"平均時間"、"最壞情況時間"和"輔助空間"。其中輔助空間一般是排序中需要額外的內(nèi)存開銷,這些內(nèi)存開銷一般據(jù)一些如中間變量(暫存變量)、比較與交換等等來決定。
插入排序和選擇排序的輔助空間都是o(1),快速排序是o(nlog2n),歸并排序是o(n)。
可知歸并排序要求內(nèi)存量,我們也可以從其變量及循環(huán)個數(shù)也以看出歸并排序要求內(nèi)存量。
(55) 在設計程序時,應采納的原則之一是______。
A. 程序結構應有助于讀者理解
B. 不限制goto語句的使用
C. 減少或取消注解行
D. 程序越短越好
(55)
[答案]A
[考點]程序設計基礎
[評析]
前面的題中已解釋過,二級的各種程序設計語言教程都會對結構化程序設有一定的介紹,比如goto語句的限制使用,基本上每本書上都會提到。
其中A,即易讀性比程序的效率更顯得重要,這是結構化程序設計原則提倡的,也是我們進行開發(fā)時非常重要的一點。
(56) 下列不屬于軟件調(diào)試技術的是______。
A. 強行排錯法
B. 集成測試法
C. 回溯法
D. 原因排除法
(56)
[答案]B
[考點]軟件工程基礎
[評析]
耍個小聰明:)
我們嚴格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。不用說答案就是B了 :)
A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。
測試有單元測試、集成測試、確認測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。
題外話:
很多人學軟件工程時認為軟件工程太無聊了,似乎全部都是些背背記記的東西,但對于一個軟件構架師,軟件工程是非常重要的,這就不能是些背背的東西了,最重要的是理解,要徹底地理解,還得有些開發(fā)經(jīng)驗才行?!盾浖こ獭愤@學科是從實踐中得出來的,同樣也需要賦予給實踐中去,這樣才有用!
(57) 下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A. 便于用戶、開發(fā)人員進行理解和交流
B. 反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù)
C. 作為確認測試和驗收的依據(jù)
D. 便于開發(fā)人員進行需求分析
(57)
[答案]D
[考點]軟件工程基礎
[評析]
A、B、C都是作用,D說法有一定的錯誤,開發(fā)人員包括很多,比如程序員的工作就不是進行需求分析。
(58) 在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。
A. 控制程序的執(zhí)行順序
B. 模塊之間的調(diào)用關系
C. 數(shù)據(jù)的流向
D. 程序的組成成分
(58)
[答案]C
[考點]軟件工程基礎
[評析]
顧名思義,數(shù)據(jù)流圖就是帶有方框(外部實體)、圓圈(變換/加工)和帶有名字的箭頭以表示數(shù)據(jù)的流向。需求分析中常用的分析圖,它遠離計算機上的具體實現(xiàn),軟件人員和用戶都能看懂,有益于和用戶交流。
(59) SQL語言又稱為______。
A. 結構化定義語言
B. 結構化控制語言
C. 結構化查詢語言
D. 結構化操縱語言
(59)
[答案]C
[考點]數(shù)據(jù)庫設計基礎
[評析]
學VF和ACCESS的朋友輕而易舉選出答案,考其它的朋友們?nèi)魶]學數(shù)據(jù)庫技術這一章節(jié),則要記一下了。
Structured Query Language
結構化 查詢 語言(語句)
(60) 視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A. 自頂向下
B. 由外向內(nèi)
C. 由內(nèi)向外
D. 自底向上
(60)
[答案]B
[考點]數(shù)據(jù)庫設計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細化
2、自底向上。先局部概念結構,再集成為全局結構
3、由里向外。先核心結構,再向外擴張
4、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構