第 1 頁:1-10試題及答案 |
第 2 頁:10-20試題及答案 |
(11) 在下列選項中,哪個不是一個算法一般應該具有的基本特征______。
A. 確定性
B. 可行性
C. 無窮性
D. 擁有足夠的情報
[答案]C
[考點]程序設計基礎
[評析]
算法具有確定性、可行性,并擁有足夠的情報。
(12) 希爾排序法屬于哪一種類型的排序法______。
A. 交換類排序法
B. 插入類排序法
C. 選擇類排序法
D. 建堆排序法
[答案]B
[考點]數據結構與算法
[評析]
Shell排序法 輸入:數組名稱(也就是數組首地址)、數組中元素個數
思想為:在直接插入排序算法中,每次插入一個數,使有序序列只增加1個節點,
并且對插入下一個數沒有提供任何幫助。如果比較相隔較遠距離(稱為
增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除
多個元素交換。D.L.shell于1959年在以他名字命名的排序算法中實現
了這一思想。算法先將要排序的一組數按某個增量d分成若干組,每組中
記錄的下標相差d.對每組中全部元素進行排序,然后再用一個較小的增量
對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成
一組,排序完成。
下面的函數是一個希爾排序算法的一個實現,初次取序列的一半為增量,
以后每次減半,直到增量為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;
}
}
}
故屬于插入類排序法。
(13) 下列關于隊列的敘述中正確的是______。
A. 在隊列中只能插入數據
B. 在隊列中只能刪除數據
C. 隊列是先進先出的線性表
D. 隊列是先進后出的線性表
[答案]C
[考點]數據構與算法
[評析]
隊列是先進先出的,棧是先進后出的,2者的區別一定要搞清楚。
(14) 對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數為______。
A. N+1
B. N
C. (N+1)/2
D. N/2
[答案]B
[考點]數據結構與算法
[評析]
很簡單,我們的二級程序設計語言書中都有此算法,另外還要掌握二分法查找,這也是我們二級中常考的。
那么二分法最壞的情況為多少次呢?
>log2 n的最小整數值。
比如n為1,最壞的情況要比較次;
n為18,最壞的情況要比較5次。
二分法適用于已排序的順序表(我們二級語言中都是數組),考二級書里的,這里不再羅嗦。
(15) 信息隱蔽的概念與下述哪一種概念直接相關______。
A. 軟件結構定義
B. 模塊獨立性
C. 模塊類型劃分
D. 模擬耦合度
[答案]B
[考點]軟件工程基礎
[評析]
模塊獨立性越強,則信息隱蔽性越好。
舉個例,
VB:
在多重窗體設計時,每個窗體里的變量盡量與其它窗體里變量無關,比如少用Public聲明的變量,即全局變量,當多個窗體共享全局變量越多時,窗體的獨立性就越差。
C:
頭文件里的一些函數,一般不用到全局變量,否則在主程序里出亂子的情況很多,我們在模塊化開發時,盡量使每個模塊獨立,強功能內聚,分工明確,調試程序也要方便得多。
C++:
考此項的朋友估計不用我多講,類的封裝性就是一個很好的說明。
(16) 面向對象的設計方法與傳統的的面向過程的方法有本質不同,它的基本原理是______。
A. 模擬現實世界中不同事物之間的聯系
B. 強調模擬現實世界中的算法而不強調概念
C. 使用現實世界的概念抽象地思考問題從而自然地解決問題
D. 鼓勵開發者在軟件開發的絕大部分中都用實際領域的概念去思考
[答案]C
[考點]軟件工程基礎
[評析]
我們舉個例,
從各種語言的結構體類型出發,我們知道,結構體中可以定義很多變量,對每個變量執行相同的操作,挨個挨個寫出,很麻煩。假設該結構體有如下變量:
草魚、田魚、鯽魚……
它們都在一口池塘里,現在執行:它們都上來
傳統的程序設計是:
草魚上來
田魚上來
鯽魚上來
……
一條一條都寫出,是不是很麻煩?
改進一下,我們用個循環:
n等于從1到10(假設共有10種魚)
第n種魚上來
還是很麻煩,現實中我們很易想到用"面向對象的思想",池塘里所有的魚都是一個結構體變量,名為魚,執行:
魚上來
意思即所有的魚都上來。
現特定于面象對象語言中的類,魚,就可以看作為一類。
這就屬于 C 項:
使用現實世界的概念抽象地思考問題從而自然地解決問題
這樣羅嗦的解釋望大家別暈,旨在幫助部分人的確難想通的,為應試,你能背下答案也行。
(17) 在結構化方法中,軟件功能分解屬于下列軟件開發中的階段是______。
A. 詳細設計
B. 需求分析
C. 總體設計
D. 編程調試
[答案]C
[考點]軟件工程基礎
[評析]
從先到后一排,是:
需求分析、總體設計、詳細設計、編程調試
需求分析遠離在計算機上的實現,談不上功能的分解;
有了需求分析的報告,軟件設計員可以思考我要讓軟件怎么做,開始總體設計,其間將軟件的功能分解,確定模塊之間的接口;
有了每個模塊功能的分解,再對每個模塊進入詳細設計階段;
接下來再是程序員的任務,編寫代碼,開始編程調試。
(18) 軟件調試的目的是______。
A. 發現錯誤
B. 改正錯誤
C. 改善軟件的性能
D. 挖掘軟件的潛能
[答案]B
[考點]軟件工程基礎
[評析]
一個程序調試是為了干什么?
還不是為了改正錯誤?
發現錯誤?這只是一個過程,改正錯誤之前必須先發現錯誤,總不能目的就僅為發現錯誤吧。
(19) 按條件f對關系R進行選擇,其關系代數表達式為______。
A. R|X|R
B. R|X|R
C. бf(R)
D. ∏f(R)
[答案]C
[考點]數據庫設計基礎
[評析]
C是選擇一行,D是投影一列,二者要區分開。
如果不僅談此題的話,有關關系代數,內容有些多,這里不是一兩句能說清,可以看看相關《數據庫》的資料中的關系代數,里面寫得很詳細。為應試,情急之下能記住幾個題答案就行。
(20) 數據庫概念設計的過程中,視圖設計一般有三種設計次序,以下各項中不對的是______。
A. 自頂向下
B. 由底向上
C. 由內向外
D. 由整體到局部
[答案]D
[考點]數據庫設計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細化
2、自底向上。先局部概念結構,再集成為全局結構 、由里向外。先核心結構,再向外擴張
1、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |