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