2009年11月軟件設計師預測題及答案解析三
41.不是C語言提供的合法關鍵字是(46)
(45)A. switch
B. begin
C. case
D. default
參考答案:(46)B。
解析:因C語言的關鍵字表中沒有begin,它不是C語言的關鍵字。所以解答是B。
42.下列字符列中,能作為單個標識符是(47)
(47)A. ?a
B. a=2
C. a.3
D.a___3
參考答案:(47)D。
解析:在C語言中,規定標識符是這樣一種字符序列,由英文字母或下線字符開始,后接任1個英文字母、下線字符和數字符組成。所以問題所列的字符列只有a_3是標識符,其余都l是標識符,一個是由字符’?’開頭、一個中間有字符’=’,另一個有字符’.’。所以解答是D。
43.在C語言中,下列說法中錯誤的是(48)
(47)A. 函數定義可以分為兩個部分:函數說明部分和函數體
B. 主函數可以調用任何非主函數
C. 任何非主函數可以調用其它任何非主函數
D. 程序可以從任何函數開始執行
參考答案:(48)D。
解析:每個C函數的定義分兩部分,函數說明部分和函數體,所以敘述①是正確的敘述。C語言中,函數可以遞歸調用,主函數可以調用程序中的任何函數,當然可以調用任何非主教的其它函數,所以敘述②是一個正確的敘述。同樣理由,敘述③也是正確的。C語言規,C程序只有一個主函數,并總是從主函數開始執行,不能從非主函數開始執行。所以,說程可以從任何函數開始執行是錯誤的。所以解答是D。
44. 為了直觀地分析系統的動作,從特定的視點出發描述系統的行為,需要采用動態分析的方法。其中,
(49) 適用于描述與分析相互獨立、協同操作的處理系統,也就是并發執行的處理系統。
(49) A.狀態遷移圖
B.時序圖
C.Petri網
D.HIPO圖
參考答案:(49)C。
解析:為了直觀地分析系統的動作,從特定的視點出發描述系統的行為,需要采用動態分析的方法。常用的動態分析方法有狀態遷移圖、時序圖和Petri網。
狀態遷移圖是描述系統的狀態如何響應外部的信號進行推移的一種圖形表示。
時序圖用于對比在系統中處理時間的時序與相應的處理時間,進行系統分析。
Petri網方法本來是表達異步系統的控制規則的圖形表示方法,現在已經廣泛地應用于硬件與軟件系統的開發中,它適用于描述與分析相互獨立、協同操作的處理系統,也就是并發執行的處理系統。
在結構化設計中,分層輸入-處理-輸出圖(HIPO圖)既可以描述軟件總的模塊層次結構,又可以描述每個模塊的輸入/輸出關系、處理內容、模塊的內部數據和模塊的調用關系。它是系統設計的重要成果,也是系統實施階段編制程序設計任務書和進行程序設計的出發點和依據。
45. 圖4中的程序由A、B、C、D和E等5個模塊組成,表1模塊之間的接口表中描述了這些模塊之間的接口,每一個接口有一個編號。此外,模塊A、D和E都要引用一個專用數據區。那么A和D之間耦合關系是 (50) 。
(50) A.標記耦合
B.內容耦合
C.數據耦合
D.公共耦合
![]() |
圖 4 |
表2 模塊之間的接口表
編 號 |
參 數 |
返 回 值 |
1 |
數據項 |
數據項 |
2 |
數據項 |
數據項 |
3 |
功能碼 |
無 |
4 |
無 |
|
5 |
無 |
|
參考答案:(50)D。
解析:由于模塊A和模塊D都引用了專用數據區的內容,因此,模塊A和D之間的耦合關系是公共耦合。
46.函數調用語句“f((el,e2),(e3,e4,e5));”中參數的個數是(51)
(51) A. 1
B. 2
C. 4
D. 5
參考答案:(51) B。
解析:上述函數調用中,(e1,e2)和(e3,e4,e5)是兩個帶括號的表達式,所以函數調用只提供兩個實參,其中第一個實參先計算el的值,然后計算e2,并以e2的值為實參。第二個實參順序計算e3,e4,e5,并以e5的值為實參。所以解答是B。
47. C語言中,函數的隱含存儲類型是(52)
(52)A. auto
B. static
C. extern
D. 無存儲類別
參考答案:(52)C。
解析:由于C函數內不能再定義函數,C函數的存儲類型只能是靜態的或外部的之一。若定義函數時不指定存儲類型是靜態的,則它的存儲類型就是外部的(extern),即函數允許被程序的其它函數調用。所以解答是C。
48. 測試是保證軟件質量的重要手段。根據國家標準GB 8566-88《計算機軟件開發規范》的規定,應該在 (53) 階段制定系統測試計劃。
(53) A.需求分析
B.概要設計
C.詳細設計
D.系統測試
參考答案:(53)A
解析:根據國家標準GB 8566-88《計算機軟件開發規范》的規定,單元測試是根據詳細設計階段給出的“規格說明書”在編碼階段完成的測試工作;集成測試的計劃是在概要設計階段制訂的;系統測試計劃應該在需求分析階段就開始制訂,并在設計階段細化和完善,而不是等系統編碼完成后才制訂測試計劃;而驗收測試則檢測產品是否符合最終用戶的需求。
軟件測試的各個階段與軟件開發階段的對應關系如圖5所示。
![]() |
圖5 各軟件開發階段與軟件測試階段的對應關系圖 |
49.以下對C語言函數的有關描述中,正確的是(54)
(54) A. 在C語言中,調用函數時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參
B. C函數既可以嵌套定義,又可以遞歸調用
C. 函數必須有返回值,否則不能定義成函數
D. C程序中,有調用關系的所有函數必須放在同一個源程序文件中
參考答案:(54) A。
49.以下對C語言函數的有關描述中,正確的是(54)
(54) A. 在C語言中,調用函數時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參
B. C函數既可以嵌套定義,又可以遞歸調用
C. 函數必須有返回值,否則不能定義成函數
D. C程序中,有調用關系的所有函數必須放在同一個源程序文件中
參考答案:(54) A。
解析:軟件的可復用性指軟件或軟件的部件能被再次用于其他應用中的程度。軟件復用性取決于其模塊獨立性、通用性和數據共享性等。
軟件的可維護性是指一個軟件模塊是否容易修改、更新和擴展,即在不影響系統其他部分的情況下修改現有系統功能中問題或缺陷的能力。
軟件的可移植性指將軟件系統從一個計算機系統或操作系統移植到另一種計算機系統或操作系統中運行時所需工作量的大小。可移植性取決于系統中硬件設備的特征、軟件系統的特點和開發環境,以及系統分析與設計中關于通用性、軟件獨立性和可擴充性等方面的考慮。
軟件的可擴充性指軟件的體系結構、數據設計和過程設計的可擴充程度。可擴充性影響著軟件的靈活性和可移植性。
由以上分析可知,該軟件產品從Windows 2000環境中遷移到Linux環境中運行,為完成相同的功能,軟件本身需要進行修改,而所需修改的工作量取決于該軟件產品的可移植性。
51. 進程的五態模型包括運行狀態、活躍就緒狀態、靜止就緒狀態、活躍阻塞狀態和靜止阻塞狀態。針對圖5的進程五態模型,為了確保進程調度的正常工作,(a)、(b)和(c)的狀態分別為 (56) 。
![]() |
圖6 進程的五態模型圖 |
(56) A.靜止就緒、靜止阻塞和活躍阻塞
B.靜止就緒、活躍阻塞和靜止阻塞
C.活躍阻塞、靜止就緒和靜止阻塞
D.活躍阻塞、靜止阻塞和靜止就緒
參考答案:(56)D。
解析:在多道程序系統中,進程在處理器上交替運行,在運行、就緒和阻塞3種基本狀態之間不斷地發生變化。由于進程的不斷創建,系統資源(特別是主存資源)已不能滿足進程運行的要求。此時就必須將某些進程掛起,對換到磁盤鏡像區,暫時不參與進程調度,以平衡系統負載的目的。如果系統出現故障,或者是用戶調試程序,也可能需要將進程掛起檢查問題。
在圖6具有掛起狀態的進程狀態及其轉換圖中,活躍就緒是指進程在主存并且可被調度的狀態。(1)空缺處各選項中,靜止就緒是指進程被對換到輔存時的就緒狀態,是不能被直接調度的狀態,只有當主存中沒有活躍就緒態進程,或者是掛起態進程具有更高的優先級,系統將把掛起就緒態進程調回主存并轉換為活躍就緒。因此,圖6的(c)空缺處應填入“靜止就緒”這一狀態。
活躍阻塞是指進程在主存中。一旦等待的事件產生,便進入活躍就緒狀態。因此,圖6的(a)空缺處應填入“活躍阻塞”。
靜止阻塞是指進程對換到輔存時的阻塞狀態。一旦等待的事件產生,便進入靜止就緒狀態。故圖6的(b)空缺處應填入“靜止阻塞”。
由以上分析可知,(56)空缺處的正確答案是選項D。
另外,對于一張完整的進程五態模型圖,則需在圖3-4模型圖中增加一條從“運行”態到“活躍阻塞”態的邊,其狀態轉換原因是“等待”事件(如I/O請求)發生,以及增加一條從“運行”態到“靜止就緒”態的邊,其狀態轉換原因是“掛起”。
52. 基于構件的開發(CBD)模型,融合了 (57) 模型的許多特征。該模型本質是演化的,采用迭代方法開發軟件。
(57) A.瀑布
B.螺旋
C.噴泉
D.快速應用開發(RAD)
參考答案:(57)B。
解析:螺旋模型是演化軟件過程模型的一種,最早由Boehm提出,它將原型實現的迭代特征與線性順序模型中控制的和系統化的方面結合起來,使軟件增量版本的快速開發成為可能。在螺旋模型中,軟件開發是一系列的增量發布。
面向對象技術為軟件工程的基于構件的過程模型提供了技術框架。基于構件的開發模型融合了螺旋模型的許多特征。它本質上是演化型的,要求軟件創建迭代方法。
基于構件的開發模型是利用預先包裝好的軟件構件來構造應用的。統一軟件開發(RUP)過程是在產業界提出的一系列基于構件的開發模型的代表。
53.設有定義“inta=3,b,*p=&a;”,則下列語句中使b不為3的語句是(58)
(58)A. b=*&a;
B. b=*p;
C. b=a;
D.b=*a;
參考答案:(58)D。
解析:定義有inta=3,b,*p=&a;對b賦值的表達式有*&a、*p、a、*a。引用變量。的值有兩種方法,一是直接引用a,二是通過a的指針間接引用a。對于后者,又有多種表達方法,通過指向a的指針p,間接引用a的內容,如*p。或通過求地址運算符由變量a得到其指針&a,再由這指針表達式間接引用a的內容,如*&a。所以表達式*&a、*p和a都能引用變量a的值,而使b的值為3。而表達式。a是錯誤的,因為a不是指針變量,不能對它施行取內容運算符。。所以解答是D。
54.設指針x指向的整型變量值為萬,則"printf("%d ",++*x);"的輸出是(59)
(59)A. 23
B. 24
C. 25
D. 26
參考答案:(59)D。
解析:若指針變量x指向某個變量,例如指向變量v,并且變量v的值是25,則表達式++*x的值是26。這是因為表達式的計算順序可加圓括號表達成(++(*x)),首先是*x,是對X所指變量V的引用,所以++*X就是++V。++V是先讓變量V增1,并以增至后的V的值為表達式++V的結果,所以其值是26。所以解答是D。
55.若有說明:“inti,j=7,*p=&i;”,則與“i=j;”等價的語句是(60)
(59)A. i=*p;
B. *P=*&j;
C. i==&j;
D. i=**p;
參考答案:(60)B。
解析:指針變量p指向變量i時,表達式i=*p等價于i=i;表達式*p=*&j等價于i=j;而表達式i=&j企圖將整型變量的指針賦給整型變量,這是錯誤的;表達式i=**p也是一種錯誤的表達式。p是指針,*p是p所指變量j,**p是企圖將整型變量j當作指針,并想通過j間接引用某個變量。所以解答是B。
56. 以下關于軟件質量度量指標的敘述中,說法正確的是 (61) 。
(32) A.正確性就是用每千行代碼的故障(fault)數來度量
B.軟件完整性是指軟件功能與需求符合的程度
C.軟件維護的工作量比開發階段的工作量小
D.可用性與用戶的操作效率和主觀評價有關
參考答案:(61)D。
解析:最主要的軟件質量度量指標有正確性、可維護性、完整性和可用性。軟件的正確性是指軟件完成所需功能的程度,盡管這種程度與每千行代碼的故障數有關,但不完全等同。
軟件完整性是指軟件在安全方面抗攻擊的能力。
軟件維護的工作量比開發階段的工作量大,通常的估計是,開發階段的工作量占軟件生命期整個工作量的40%,而維護階段的工作量則占60%,甚至更多。
軟件可用性用來度量軟件的“用戶友好性”,可以從①學會操作軟件所需的體力和智力、②對系統的使用達到中等效率所需的時間、③當系統由一個中等效率的人使用時測量到的生產率增長值和④用戶對系統的主觀評價等4個方面來度量可用性。
57. 風險的成本估算完成后,可以針對風險表中的每個風險計算其風險曝光度。某軟件小組計劃項目中采用50個可復用的構件,每個構件平均是100 LOC,本地每個LOC的成本是13元人民幣。以下是該小組定義的一個項目風險。
① 風險識別:預定要復用的軟件構件中只有50%將被集成到應用中,剩余功能必須定制開發。
② 風險概率:60%。
③ 該項目風險的風險曝光度是 (62) 。
(62) A.10 500
B.19 500
C.32 500
D.65 000
參考答案:(62)B。
解析:風險曝光度(Risk Exposure,RE)的計算公式為:RE=P×C。其中,P是風險發生的概率,C是風險發生時帶來的項目成本。
該軟件小組計劃采用50個可復用的構件,如果只有50%可能被使用,則25個構件必須從頭開發。由于構件平均是100 LOC,每個LOC的成本是13元人民幣,則開發構件的整體成本C=25×100×13=32 500元人民幣。因此RE=0.6×32 500=19 500元人民幣。
58. 若有說明語句“inta[10],*p=a;”,對數組元素的正確引用是(63)
(63)A. a[p]
B. P[a]
C. *(P+2)
D. P+2
參考答案:(62)C。
解析:在C語言中,約定數組名單獨出現在表達式中時,它表示數組首元素的指針。有inta[10],則a可以作為&a[0]使用。另有整型指針變量p,代碼p=a實現p指向數組a的首元素。則表達式*(p+2)是引用數組元素a[2]。表達式a[p]和p[a]都是不正確的,下標必須是整型表達式,不可以是指針表達式。表達式p+2是指針表達式,它的值是&p[2]。所以只有表達式*(p+2)引用數組a的元素a[2]。所以解答是C。
59.若有以下定義,則不能表示a數組元素的表達式是(64)
inta[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
(64)A. *p
B. a[10]
C. *a
D. a[p-a]
參考答案:(62)B。
解析:上述代碼定義了有10個元素的整型數組。,和定義指針變量p,并讓p指向數組元素a[0]。所以代碼*p是引用a[0]。由于數組a只有10個元素,最后一個元素是a[9],表達式a[10]是錯誤的。數組名a可以作為a的首元素的指針,表達式*a就是a[0],是對數組a的首元素a[0]的引用。指針p的值是a,表達式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是B。
60. CMM模型的第三級為已定義級,其主要過程是關于項目和組織的策略。屬于該級別新定義的關鍵過程域是 (65) 。
(65) A.軟件配置管理
B.技術變更管理
C.軟件質量管理
D.集成軟件管理
參考答案:(65)D。
解析:CMM模型是對軟件組織進化階段的描述,其第3級(已定義級)主要過程是關于項目和組織的策略,所定義的關鍵過程域有集成軟件管理、組織過程定義和軟件產品工程等。
選項A的“軟件配置管理”是CMM模型可重復級(第2級)定義的關鍵過程域;
選項C的“軟件質量管理”是定量管理級(第4級)定義的關鍵過程域;
選項B的“技術變更管理”是優化級(第5級)定義的關鍵過程域。
【編輯推薦】