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語言中,規(guī)定標識符是這樣一種字符序列,由英文字母或下線字符開始,后接任1個英文字母、下線字符和數(shù)字符組成。所以問題所列的字符列只有a_3是標識符,其余都l是標識符,一個是由字符’?’開頭、一個中間有字符’=’,另一個有字符’.’。所以解答是D。
43.在C語言中,下列說法中錯誤的是(48)
(47)A. 函數(shù)定義可以分為兩個部分:函數(shù)說明部分和函數(shù)體
B. 主函數(shù)可以調用任何非主函數(shù)
C. 任何非主函數(shù)可以調用其它任何非主函數(shù)
D. 程序可以從任何函數(shù)開始執(zhí)行
參考答案:(48)D。
解析:每個C函數(shù)的定義分兩部分,函數(shù)說明部分和函數(shù)體,所以敘述①是正確的敘述。C語言中,函數(shù)可以遞歸調用,主函數(shù)可以調用程序中的任何函數(shù),當然可以調用任何非主教的其它函數(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網
D.HIPO圖
參考答案:(49)C。
解析:為了直觀地分析系統(tǒng)的動作,從特定的視點出發(fā)描述系統(tǒng)的行為,需要采用動態(tài)分析的方法。常用的動態(tài)分析方法有狀態(tài)遷移圖、時序圖和Petri網。
狀態(tài)遷移圖是描述系統(tǒng)的狀態(tài)如何響應外部的信號進行推移的一種圖形表示。
時序圖用于對比在系統(tǒng)中處理時間的時序與相應的處理時間,進行系統(tǒng)分析。
Petri網方法本來是表達異步系統(tǒng)的控制規(guī)則的圖形表示方法,現(xiàn)在已經廣泛地應用于硬件與軟件系統(tǒng)的開發(fā)中,它適用于描述與分析相互獨立、協(xié)同操作的處理系統(tǒng),也就是并發(fā)執(zhí)行的處理系統(tǒng)。
在結構化設計中,分層輸入-處理-輸出圖(HIPO圖)既可以描述軟件總的模塊層次結構,又可以描述每個模塊的輸入/輸出關系、處理內容、模塊的內部數(shù)據(jù)和模塊的調用關系。它是系統(tǒng)設計的重要成果,也是系統(tǒng)實施階段編制程序設計任務書和進行程序設計的出發(fā)點和依據(jù)。
46.函數(shù)調用語句“f((el,e2),(e3,e4,e5));”中參數(shù)的個數(shù)是(51)
(51) A. 1
B. 2
C. 4
D. 5
參考答案:(51) B。
解析:上述函數(shù)調用中,(e1,e2)和(e3,e4,e5)是兩個帶括號的表達式,所以函數(shù)調用只提供兩個實參,其中第一個實參先計算el的值,然后計算e2,并以e2的值為實參。第二個實參順序計算e3,e4,e5,并以e5的值為實參。所以解答是B。
47. C語言中,函數(shù)的隱含存儲類型是(52)
(52)A. auto
B. static
C. extern
D. 無存儲類別
參考答案:(52)C。
解析:由于C函數(shù)內不能再定義函數(shù),C函數(shù)的存儲類型只能是靜態(tài)的或外部的之一。若定義函數(shù)時不指定存儲類型是靜態(tài)的,則它的存儲類型就是外部的(extern),即函數(shù)允許被程序的其它函數(shù)調用。所以解答是C。
48. 測試是保證軟件質量的重要手段。根據(jù)國家標準GB 8566-88《計算機軟件開發(fā)規(guī)范》的規(guī)定,應該在 (53) 階段制定系統(tǒng)測試計劃。
(53) A.需求分析
B.概要設計
C.詳細設計
D.系統(tǒng)測試
參考答案:(53)A
49.以下對C語言函數(shù)的有關描述中,正確的是(54)
(54) A. 在C語言中,調用函數(shù)時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參
B. C函數(shù)既可以嵌套定義,又可以遞歸調用
C. 函數(shù)必須有返回值,否則不能定義成函數(shù)
D. C程序中,有調用關系的所有函數(shù)必須放在同一個源程序文件中
參考答案:(54) A。
解析:C語言規(guī)定,調用函數(shù)時,只能把實參的值傳遞給函數(shù)的形參。函數(shù)調用時,形參從實參表達式得到初值,報參也是函數(shù)的一種局部變量,其值可以改變,但形參的值不能傳回給對應的實參。當函數(shù)設置非指針類型的形參時,實參可以是同類型的一般表達式;當函數(shù)設置指針類型的形參時,對應的實參也必須是同類型的指針表達式。所以敘述A是正確的。C語言雖可以遞歸調用,但同時規(guī)定,在函數(shù)內不能再定義函數(shù),所以敘述B是錯誤的。通常C函數(shù)會有返回值,但也可以沒有返回值。有許多情況,函數(shù)的執(zhí)行是完成某種預定的工作,并沒有返回值,所以敘述C是不正確的。在C程序中,如函數(shù)未指定是靜態(tài)的,則就是外部的,能讓別的文件中的函數(shù)調用。但函數(shù)要調用別的文件中的函數(shù),在調用代碼之前,需對它作說明,所以敘述D也是不正確的。正確的解答只有A。
50. 某軟件產品在應用初期運行在Windows 2000環(huán)境中,F(xiàn)因某種原因,該軟件需要在Linux環(huán)境中運行,而且必須完成相同的功能。為適應該需求,軟件本身需要進行修改,而所需修改的工作量取決于該軟件的 (55) 。
(55) A.可復用性
B.可維護性
C.可移植性
D.可擴充性
參考答案:(55)C。
解析:軟件的可復用性指軟件或軟件的部件能被再次用于其他應用中的程度。軟件復用性取決于其模塊獨立性、通用性和數(shù)據(jù)共享性等。
軟件的可維護性是指一個軟件模塊是否容易修改、更新和擴展,即在不影響系統(tǒng)其他部分的情況下修改現(xiàn)有系統(tǒng)功能中問題或缺陷的能力。
軟件的可移植性指將軟件系統(tǒng)從一個計算機系統(tǒng)或操作系統(tǒng)移植到另一種計算機系統(tǒng)或操作系統(tǒng)中運行時所需工作量的大小?梢浦残匀Q于系統(tǒng)中硬件設備的特征、軟件系統(tǒng)的特點和開發(fā)環(huán)境,以及系統(tǒng)分析與設計中關于通用性、軟件獨立性和可擴充性等方面的考慮。
軟件的可擴充性指軟件的體系結構、數(shù)據(jù)設計和過程設計的可擴充程度?蓴U充性影響著軟件的靈活性和可移植性。
由以上分析可知,該軟件產品從Windows 2000環(huán)境中遷移到Linux環(huán)境中運行,為完成相同的功能,軟件本身需要進行修改,而所需修改的工作量取決于該軟件產品的可移植性。
51. 進程的五態(tài)模型包括運行狀態(tài)、活躍就緒狀態(tài)、靜止就緒狀態(tài)、活躍阻塞狀態(tài)和靜止阻塞狀態(tài)。針對圖5的進程五態(tài)模型,為了確保進程調度的正常工作,(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ū),暫時不參與進程調度,以平衡系統(tǒng)負載的目的。如果系統(tǒng)出現(xiàn)故障,或者是用戶調試程序,也可能需要將進程掛起檢查問題。
在圖6具有掛起狀態(tài)的進程狀態(tài)及其轉換圖中,活躍就緒是指進程在主存并且可被調度的狀態(tài)。(1)空缺處各選項中,靜止就緒是指進程被對換到輔存時的就緒狀態(tài),是不能被直接調度的狀態(tài),只有當主存中沒有活躍就緒態(tài)進程,或者是掛起態(tài)進程具有更高的優(yōu)先級,系統(tǒng)將把掛起就緒態(tài)進程調回主存并轉換為活躍就緒。因此,圖6的(c)空缺處應填入“靜止就緒”這一狀態(tài)。
活躍阻塞是指進程在主存中。一旦等待的事件產生,便進入活躍就緒狀態(tài)。因此,圖6的(a)空缺處應填入“活躍阻塞”。
靜止阻塞是指進程對換到輔存時的阻塞狀態(tài)。一旦等待的事件產生,便進入靜止就緒狀態(tài)。故圖6的(b)空缺處應填入“靜止阻塞”。
由以上分析可知,(56)空缺處的正確答案是選項D。
另外,對于一張完整的進程五態(tài)模型圖,則需在圖3-4模型圖中增加一條從“運行”態(tài)到“活躍阻塞”態(tài)的邊,其狀態(tài)轉換原因是“等待”事件(如I/O請求)發(fā)生,以及增加一條從“運行”態(tài)到“靜止就緒”態(tài)的邊,其狀態(tài)轉換原因是“掛起”。
52. 基于構件的開發(fā)(CBD)模型,融合了 (57) 模型的許多特征。該模型本質是演化的,采用迭代方法開發(fā)軟件。
(57) A.瀑布
B.螺旋
C.噴泉
D.快速應用開發(fā)(RAD)
參考答案:(57)B。
解析:螺旋模型是演化軟件過程模型的一種,最早由Boehm提出,它將原型實現(xiàn)的迭代特征與線性順序模型中控制的和系統(tǒng)化的方面結合起來,使軟件增量版本的快速開發(fā)成為可能。在螺旋模型中,軟件開發(fā)是一系列的增量發(fā)布。
面向對象技術為軟件工程的基于構件的過程模型提供了技術框架;跇嫾拈_發(fā)模型融合了螺旋模型的許多特征。它本質上是演化型的,要求軟件創(chuàng)建迭代方法。
基于構件的開發(fā)模型是利用預先包裝好的軟件構件來構造應用的。統(tǒng)一軟件開發(fā)(RUP)過程是在產業(yè)界提出的一系列基于構件的開發(fā)模型的代表。
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)數(shù)來度量
B.軟件完整性是指軟件功能與需求符合的程度
C.軟件維護的工作量比開發(fā)階段的工作量小
D.可用性與用戶的操作效率和主觀評價有關
參考答案:(61)D。
解析:最主要的軟件質量度量指標有正確性、可維護性、完整性和可用性。軟件的正確性是指軟件完成所需功能的程度,盡管這種程度與每千行代碼的故障數(shù)有關,但不完全等同。
軟件完整性是指軟件在安全方面抗攻擊的能力。
軟件維護的工作量比開發(fā)階段的工作量大,通常的估計是,開發(fā)階段的工作量占軟件生命期整個工作量的40%,而維護階段的工作量則占60%,甚至更多。
軟件可用性用來度量軟件的“用戶友好性”,可以從①學會操作軟件所需的體力和智力、②對系統(tǒng)的使用達到中等效率所需的時間、③當系統(tǒng)由一個中等效率的人使用時測量到的生產率增長值和④用戶對系統(tǒng)的主觀評價等4個方面來度量可用性。