49.以下對C語言函數的有關描述中,正確的是(54)
(54) A. 在C語言中,調用函數時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參
B. C函數既可以嵌套定義,又可以遞歸調用
C. 函數必須有返回值,否則不能定義成函數
D. C程序中,有調用關系的所有函數必須放在同一個源程序文件中
參考答案:(54) A。
解析:C語言規定,調用函數時,只能把實參的值傳遞給函數的形參。函數調用時,形參從實參表達式得到初值,報參也是函數的一種局部變量,其值可以改變,但形參的值不能傳回給對應的實參。當函數設置非指針類型的形參時,實參可以是同類型的一般表達式;當函數設置指針類型的形參時,對應的實參也必須是同類型的指針表達式。所以敘述A是正確的。C語言雖可以遞歸調用,但同時規定,在函數內不能再定義函數,所以敘述B是錯誤的。通常C函數會有返回值,但也可以沒有返回值。有許多情況,函數的執行是完成某種預定的工作,并沒有返回值,所以敘述C是不正確的。在C程序中,如函數未指定是靜態的,則就是外部的,能讓別的文件中的函數調用。但函數要調用別的文件中的函數,在調用代碼之前,需對它作說明,所以敘述D也是不正確的。正確的解答只有A。
50. 某軟件產品在應用初期運行在Windows 2000環境中。現因某種原因,該軟件需要在Linux環境中運行,而且必須完成相同的功能。為適應該需求,軟件本身需要進行修改,而所需修改的工作量取決于該軟件的 (55) 。
(55) A.可復用性
B.可維護性
C.可移植性
D.可擴充性
參考答案:(55)C。
解析:軟件的可復用性指軟件或軟件的部件能被再次用于其他應用中的程度。軟件復用性取決于其模塊獨立性、通用性和數據共享性等。
軟件的可維護性是指一個軟件模塊是否容易修改、更新和擴展,即在不影響系統其他部分的情況下修改現有系統功能中問題或缺陷的能力。
軟件的可移植性指將軟件系統從一個計算機系統或操作系統移植到另一種計算機系統或操作系統中運行時所需工作量的大小。可移植性取決于系統中硬件設備的特征、軟件系統的特點和開發環境,以及系統分析與設計中關于通用性、軟件獨立性和可擴充性等方面的考慮。
軟件的可擴充性指軟件的體系結構、數據設計和過程設計的可擴充程度。可擴充性影響著軟件的靈活性和可移植性。
由以上分析可知,該軟件產品從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請求)發生,以及增加一條從“運行”態到“靜止就緒”態的邊,其狀態轉換原因是“掛起”。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |