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