2009年11月軟件設計師預測試題及答案解析二
21. 新軟件項目與過去成功開發過的一個項目類似,但規模更大,此時比較適合使用 (25) 進行項目開發設計。
(25) A.原型法
B.變換模型
C.瀑布模型
D.螺旋模型
參考答案:(25)C。
解析:由于新項目與過去成功開發過的一個項目類似,已經有了成功的項目開發經驗和積累的軟件模塊,因此,應盡可能將這些經驗和軟件模塊應用到新項目中,即對于這個規模更大的軟件項目應該使用瀑布模型進行開發。
22.在下列代碼中,正確的C代碼是(26)
(26) A. #defineMYNAME="ABC"
B. #includestring.h
C. for(i=0;i<10;i++);
D. structintstu{intname};
參考答案:(26) C。
21. 新軟件項目與過去成功開發過的一個項目類似,但規模更大,此時比較適合使用 (25) 進行項目開發設計。
(25) A.原型法
B.變換模型
C.瀑布模型
D.螺旋模型
參考答案:(25)C。
解析:由于新項目與過去成功開發過的一個項目類似,已經有了成功的項目開發經驗和積累的軟件模塊,因此,應盡可能將這些經驗和軟件模塊應用到新項目中,即對于這個規模更大的軟件項目應該使用瀑布模型進行開發。
22.在下列代碼中,正確的C代碼是(26)
(26) A. #defineMYNAME="ABC"
B. #includestring.h
C. for(i=0;i<10;i++);
D. structintstu{intname};
參考答案:(26) C。
24.若與文件型指針中相關聯的文件的當前讀位置已到了文件的末尾,則函數feof(fp)的返回值是(28)
(28) A. 0
B. -l
C. 非零值
D. NULL
參考答案:(28) C。
解析:當調用fopen函數時,系統將為實參文件設定一個存放文件讀寫控制信息的控制塊。該控制塊記錄有關文件持征、使用方式,當前讀寫位置等文件狀態,并將該控制塊的指針返回,作為文件指針變量的值。以后程序通過該指針調用函數時,系統能訪問到這個控制塊,利用該文件控制塊中的控制信息,正確完成文件的讀或寫。所以文件指針并不真正指向文件當前讀寫位置,但通過文件指針,系統能在文件控制塊中訪問文件的當前讀寫位置。若某文件與文件指針中相關聯著,該文件的當前讀寫位置在文件的末尾時,函數調用feof(fp)的返回值是一個非零值。所以正確解答是C。
25.下列語句中,將C定義為文件型指針的是(29)
(29)錒FILEc;②
B. FILE*c;
C. filec;
D. file*c;
參考答案:(29)B。
解析:如上題所述,文件控制塊的類型已由系統命名為FILE。所以定義文件指針變量是C,就得用代碼:“FILE*c;”。所以正確解答是B。
36. 以下標準代號中, (30) 不屬于國家標準代號。
(30) A.GSB
B.GB/Z
C.GB/T
D.GA/T
參考答案:(30)D。
解析:我國國家標準中,強制性國家標準代號為“GB”;推薦性國家標準代號為“GB/T”;“GB/Z”是我國國家標準化指導性技術文件的代號;“GSB”是我國國家實物標準代號;“GA/T”是公共安全推薦性標準,它是我國公安部制定的行業標準。
27.標準庫函數fputs(pl,p2)的功能是(31)
(31) A. 從pl指向的文件中讀一個字符率存入p2指向的內存
B. 從p2指向的文件中讀一個字符串存入pl指向的內存
C. 從pl指向的內存中的一個字符串輸出到p2指向的文件
D. 從p2指向的內存中的一個字符串輸出到pl指向的文件
參考答案:(31) C。
解析:標準函數調用fputs(p1,p2)完成的功能是將由字符指針pl所指的字符串內容輸出到與文件指針p2相關聯的文件中,即將從pl所指的內存中的字符串內容輸出到p2所指向的文件中。所以正確解答是C。
28. 頁式存儲管理當中的頁面是由 (32) 所感知的。
(32) A.用戶
B.操作系統
C.編譯系統
D.鏈接程序
參考答案:(32)B。
解析:進行存儲分配時,頁式存儲管理為每個作業建立一張頁表,指出邏輯地址中頁號與主存中塊號的對應關系。然后,借助于硬件的地址轉換機構,在作業執行過程中按頁動態定位。每執行一條指令時,按邏輯地址中的頁號查頁表,得到對應的塊號,根據關系式,絕對地址=塊號×塊長+單元號,計算出欲訪問的主存單元的地址。由此可知,頁面是由操作系統所感知的。
29. 在一個單CPU的計算機系統中,有3臺不同的外部設備R1、R2和R3,以及3個進程P1、P2和P3。系統CPU調度采用可剝奪式優先級的進程調度方案,3個進程的優先級、使用設備的先后順序和占用設備時間如表1所示。
表1 進程的優先級、使用設備的先后順序和占用設備時間表
進 程優 先 級使用設備、CPU的先后順序和占用時間
進 程 |
優 先 級 |
使用設備、CPU的先后順序和占用時間 |
P1 |
高 |
R1(20ms)→CPU(20ms)→R3(20ms) |
P2 |
中 |
R3(40ms)→CPU(30ms)→R2(20ms) |
P3 |
低 |
CPU(30ms)→R2(20ms)→CPU(20ms) |
假設操作系統的開銷忽略不計,從3個進程同時投入運行到全部完成,CPU的利用率約為 (33) %;R3的利用率約為 (34) %。其中,設備的利用率是指該設備的使用時間與進程組全部完成所占用時間的比率。
(33) A.66.7
B.75
C.83.3
D.91.7
(34) A.66
B.50
C.33
D.17
參考答案:(33)C;(34)B。
解析:在多道系統中的3個任務(P1、P2和P3)是競爭使用CPU,但可并行使用I/O設備(R1、R2和R3)。各個任務運行的分析過程如圖6所示。圖中水平粗實線表示某進程實際執行過程所占用的CPU或I/O設備的時間。
對圖3分析如下。
![]() |
① t0~t1時段(20ms):結合表3-2中3個進程使用設備的先后順序,因此,進程調度程序先選中進程P3占用CPU的使用權,進程P1占用R1設備的使用權,進程P2占用R3設備的使用權。
② t1~t2時段(20ms):由于進程的優先級P1>P3且系統CPU調度采用可剝奪式優先級的進程調度方案,CPU使用權在這一進段將轉讓給進程P1,進程P1占用CPU的使用權20 ms,進程P2繼續占用R3設備20 ms,進程P3因CPU使用權被剝奪而處于就緒狀態。
③ t2~t3時段(20ms):進程P1占用CPU使用權終止后,進入占用R3設備的時段。由于進程的優先級P2>P3,進程P2使用完R3設備后,進入占用CPU的使用權時段。進程P3仍處于就緒狀態。
④ t3~t4時段(10ms):進程P1在t3時刻運行完畢。進程P2繼續占用CPU的使用權。進程P3仍處于就緒狀態。
⑤ t4~t5時段(10ms):進程P2占用CPU使用權終止后,進入占用R2設備的時段。進程調度程序重新調度進程P3占用CPU的使用權。
⑥ t5~t6時段(10ms):進程P3占用CPU使用權終止后,進入占用R2設備的時段。由于I/O設備R2可被進程并行使用,因此,進程P2、P3在這一時段將并行占用R2設備。系統中也沒有其他待運行的進程,此時段CPU將處于空閑狀態。
⑦ t6~t7時段(10ms):進程P2在t6時刻運行完畢。進程P3繼續占用R2設備。此時段CPU仍處于空閑狀態。
⑧ t7~t8時段(20ms):進程P3的I/O操作任務完成后,進程調度程序將CPU使用權分配給它。進程P3占用CPU 20ms后運行完畢。
假設操作系統的開銷忽略不計,從3個進程同時投入運行到全部完成,CPU的利用率約為
![]() |
由于設備的利用率是指該設備的使用時間與進程組全部完成所占用時間的比率,因此,設備R3的利用率約為
![]() |
同理可得,設備R1的利用率約為
![]() |
設備R2的利用率約為
![]() |
30. 某磁盤的轉速為7 200轉/分,傳輸速度為4Mbps,控制器開銷為1ms。要保證讀或寫一個512字節的扇區的平均時間為11.3ms。那么,該磁盤的平均尋道時間最大應不超過 (35) ms。
(35) A.3.9
B.4.7
C.5.5
D.6.1
參考答案:(35)D。
解析:磁盤讀或寫某個扇區所需平均時間應包括① 該磁盤的平均尋道時間、② 平均旋轉時間、③ 讀或寫數據的傳輸時間和④控制器的開銷時間等。
通常,選用磁道旋轉一周所用時間的一半作為平均旋轉(或等待)時間。由于磁盤的轉速為7 200轉/分,因此平均旋轉時間 。
由于該磁盤的傳輸速度為4Mbps,因此,讀或寫一個512字節的數據所需的傳輸時間 。
控制器開銷為1ms。要保證讀或寫一個512字節的扇區的平均時間為11.3ms,則該磁盤的平均尋道時間的最大值為 ,即不超過6.1 ms。
31. 根據以下Redhat Linux操作系統的提示信息,將(36)空缺處的Apache服務操作命令填寫完整。
[root@gcz root] # service httpd start
[root@gcz root] # (36)
httpd (pid 20014 20013 20012 20011 20010 20009 20008 20007 20004)正在運行…
(36) A.service httpd status
B.httpd -k start
C.httpd -k restart
D.apachectl start
參考答案:(36)A。
解析:使用命令“service httpd start”啟動httpd進程之后,再使用命令“service httpd status”可以查看Apache服務器的狀態信息。
選項B的“httpd -k start”用于啟動Apache服務,其等價于“service httpd start”或“apachectl start”。
選項C的“httpd -k restart”用于重啟Apache,使其重新讀取配置文件,與其等價的命令有“service httpd restart”和“apachectl restart”。
另外,使用命令“service httpd stop”可以終止Apache服務,該命令的等價命令是“httpd -k stop”(或“apachectl stop”)。
32. 在C語言中,設有數組定義:char array[]=“China”;則數組array所占用的空間為 (37) 。
(37) A.5個字節
B.6個字節
C.10個字節
D.12個字節
參考答案:(37)B。
解析:字符數組是每個元素存放一個字符型數據的數組。C語言中約定用\0作為字符串的結束標志,它占內存空間,但不計入字符串的長度。對數組array賦初值char array[ ]=“China”,此時系統自動在末尾加入一個‘\0’,此時數組array的長度為6,所占用的空間為6個字節,即char array[]=“China”等價于char array[ ]={‘C’,‘h’,‘i’,‘n’,‘a’,‘\0’}。
若定義char array[ ]={‘C’,‘h’,‘i’,‘n’,‘a’,},此時數組array的長度為5個字節。
33. 對于以下編號為①、②、③的正規式,說法正確的是 (38) 。
①(aa*|ab)*b ②((a|b)*|aa)*b ③ (a|b)*b
(38) A.正規式①和③等價
B.正規式①和②等價
C.正規式②和③等價
D.正規式①、②和③互不等價
參考答案:(38)C。
解析:根據正規式r和s的意義,兩個正規式等價說明r和s代表的字符串集合相同,因此可用證明集合相等的方法判斷。另外,也可構造出與每個正規式對應的自動機進行說明。但是這兩個方法實施起來都很煩瑣,一種比較簡便的方法是,根據正規式的含義及其代數性質進行判斷。
由于題目中給出的正規式①、②和③的共同之處是以字符b結尾,因此只需考慮正規式“(aa*|ab)*”、“((a|b)* |aa)*”和“(a|b)*”之間的等價關系。從直觀的角度理解,正規式“(aa*|ab)*”表示的是包含空串 及a開頭的且每個b之后必然出現a的字符串的集合;而正規式“(a|b)*”表示包含空串 在內的所有a和b構成的字符串集合,并不限制b的出現方式;正規式“((a|b)* |aa)*”表示的字符串也不具有必須以a開頭的特點。因此,正規式①與②和正規式①與③的等價關系即可排除,即先排除選項A和B。
由于“(a|b)*”已經包括了含有“aa”子串的所有a和b字符串,因此,對于正規式“((a|b)* |aa)*”中的“aa”可省略,即正規式“((a|b)* |aa)*”與“(a|b)*”是等價的,故正確答案是選項C。
34. 表達式 (39) 對應的逆波蘭式是“ab+-c/d-”。
(39) A.a-b-c/d
B.-(a+b)/c-d
C.-a+b/c-d
D.(a+b)/(-c-d)
參考答案:(39)B。
解析:一個表達式可用一棵二叉樹表示,其中的葉子節點表示操作數,內部節點表示操作符或中間結果,根節點表示整個表達式的值。對此二叉樹分別進行前序、中序和后序遍歷恰好為表達式的前綴表示(波蘭式)、中綴表示和后綴表示(逆波蘭式)。其中,表達式的前綴和后綴表示均可以將表達式中的括號省去而不影響計算次序和結果。
表達式的逆波蘭表示也就是后綴表示,它將運算符號寫在運算對象的后面,并指明其前面的操作數或中間結果所要執行的運算。對后綴表達式從左到右求值,則每當掃描到一個運算符號時,其操作數是最近剛得到的。因此“ab+-c/d-”表示先將a與b相加,然后進行一元“-”運算,結果除以c,除運算的商再與d相減,即對應的表達式為“-(a+b)/c-d”。
35. 軟件開發工具VB、PB和Delphi是可視化的。這些工具是一種 (40) 程序語言。
(40) A.邏輯式
B.命令式
C.函數式
D.事件驅動
參考答案:(40)D。
解析:事件驅動(Event Driven)是指系統根據發生的事件發送消息給相應的程序,程序根據事件和當前狀態,決定要做的事情。如果不發生事件,計算機的控制權并不是在正在執行的程序手里,這時程序并不占用CPU資源。面向對象和可視化程序設計方法采用了事件驅動機制,所以程序設計方法發生了很大的改變。事件驅動給程序設計帶來了極大的靈活性。同時,它可以在不采用分時系統的前提下實現多進程。
可視化程序設計(Visual Programming)運用面向對象程序設計的概念,通過圖形化及可視途徑,構建應用程序。它使程序設計更為簡單和容易。軟件開發工具Visual Basic、PB和Delphi提供了可視化的集成開發環境,運用代表通用于程序的圖標,通過圖形操作,構建基于圖形用戶界面(GUI)的應用程序,是一種以事件驅動的程序語言。
36.在下列代碼中,錯誤的C代碼是(41)
(41)A. #definePI3.14159
B. #include"stdio.h";
C. if(2);
D. for(;;)if(1)break;
參考答案:(41)B。
解析:A是正確的宏定義。B的文件包含預處理命令行不可以有多余的分號字符。C是if語句,雖沒有任何意義,但就句法來說是正確的。D是for語句,其成分語句是if語句,從for語句來說,是一個無窮循環的控制結構,但它的成分語句因條件成立,執行break語句,立即退出循環。同樣雖也是一條沒有任何意義的語句,但從句法規則來說,也是正確的。正確解答是B。
37.設有以下定義,則執行語句"z=2*(N+Y(5+1));"后,z的值為(42)
#defineN3
#defineY(n)((N+l)*n)
(42)A. 出錯
B. 42
C. 48
D. 54
參考答案:(42)C。
解析:在新的宏定義中,可以使用前面已定義的宏名。另外,宏調用是這樣被替換展開的,分別用宏調用中的實在參數字符序列替換定定義字符序列中對應所有出現的形式參數。而宏定義字符序列中的不是形式參數的其他字符則保留。這樣形成的字符序列,即為宏調用的展開替換結果。所以代碼"z=2*(N+Y(5+1));"被替換成:
z=2*(3+((3+1)*5+1));
執行該代碼,將使Z的值為48。解答為C。
38. 當使用數據流圖對一個工資系統進行建模時, (43) 可以被認定為外部實體。
(43) A.工資單
B.工資系統源程序
C.接收工資單的銀行
D.工資數據庫
參考答案:(43)C。
解析:數據流程圖(Data Flow Diagam,DFD)也稱數據流圖,是一種便于用戶理解、分析系統數據流程和描述系統邏輯模型的圖形工具。它擺脫了系統的物理內容,精確地在邏輯上描述系統的功能、輸入、輸出和數據存儲等,是系統邏輯模型的重要組成部分。
DFD由數據流、加工、數據存儲和外部實體4個要素構成。外部實體是指存在于軟件系統之外的人員或組織,它指出系統所需數據的發源地和系統所產生數據的歸宿點。當使用DFD對一個工資系統進行建模時,接收工資單的銀行可以被認定為是一個外部實體,而選項A、B和D的內容都不符合外部實體的定義。
39.以下程序中的for循環執行的次數是(44)
#include
#defineN2
#defineMN+1
#defineNUM(M+l)*M/2
main()
{inti,n=0;
for(i=l;i<=NUM;i++){n++;printf("%d",n);}
printf(" ");}
(44)A. 5
B. 6
C. 8
D. 9
參考答案:(44)C。
解析:代碼NUM被替換成(2+1+1)*2+1/2,所以其值是8。所以程序中的臉循環執行的次數是8次。正確解答是C。
40.下列字符列中,不是用來表達轉義字符是(45)
(45)A.\\
B.\'
C. 074
D. \0
參考答案:(45)C。
解析:轉義字符有三種書寫形式:反斜社字符后接上某個規定的字符;反斜杠字符后接上13個八進制數字符;反斜社字符和字符X之后接上1至2個十六進制數字符。后兩種分別八進制數和十六進制數直接給出字符的ASCll代碼值。而074是八進制整數,不是轉義字.所以解答是C。
【編輯推薦】