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