2017年計算機二級考試公共基礎知識沖刺試題及答案3

字號:

(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相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構