[語言類考試復(fù)習(xí)資料大全]中級軟件設(shè)計師上午試題分類模擬7_第1頁
[語言類考試復(fù)習(xí)資料大全]中級軟件設(shè)計師上午試題分類模擬7_第2頁
[語言類考試復(fù)習(xí)資料大全]中級軟件設(shè)計師上午試題分類模擬7_第3頁
[語言類考試復(fù)習(xí)資料大全]中級軟件設(shè)計師上午試題分類模擬7_第4頁
[語言類考試復(fù)習(xí)資料大全]中級軟件設(shè)計師上午試題分類模擬7_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、書山有路勤為徑,學(xué)海無涯苦作舟。祝愿天下莘莘學(xué)子:學(xué)業(yè)有成,金榜題名!語言類考試復(fù)習(xí)資料大全中級軟件設(shè)計師上午試題分類模擬7中級軟件設(shè)計師上午試題分類模擬7單項選擇題問題:1. 以下關(guān)于解釋程序和編譯程序的敘述中,正確的是_。A.編譯程序和解釋程序都生成源程序的目標(biāo)程序B.編譯程序和解釋程序都不生成源程序的目標(biāo)程序C.編譯程序生成源程序的目標(biāo)程序,解釋程序則不然D.編譯程序不生成源程序的目標(biāo)程序,而解釋程序反之答案:C解析 編譯程序,也稱編譯器,將源程序翻譯成目標(biāo)語言程序,然后在計算機(jī)上運(yùn)行目標(biāo)程序。雖然執(zhí)行效率高,但編寫出來的程序可讀性很差,且難以修改和維護(hù)。 解釋程序:也稱解釋器,它或者直

2、接解釋執(zhí)行源程序,或者將源程序翻譯成某種中間代碼后再加以執(zhí)行。 問題:2. 以下關(guān)于傳值調(diào)用與引用調(diào)用的敘述中,正確的是_。 在傳值調(diào)用方式下,可以實現(xiàn)形參和實參間雙向傳遞數(shù)據(jù)的效果 在傳值調(diào)用方式下,實參可以是變量,也可以是常量和表達(dá)式 在引用調(diào)用方式下,可以實現(xiàn)形參和實參間雙向傳遞數(shù)據(jù)的效果 在引用調(diào)用方式下,實參可以是變量,也可以是常量和表達(dá)式 A.B.C.D.答案:C解析 傳值調(diào)用最顯著的特征是被調(diào)用的函數(shù)內(nèi)部對形參的修改不影響實參的值。傳值調(diào)用的參數(shù)傳遞和被調(diào)用函數(shù)內(nèi)對參數(shù)的使用主要按下述原則:函數(shù)定義時形參被當(dāng)作局部變量看待,在函數(shù)被調(diào)用時為形參分配存儲單元;調(diào)用函數(shù)前,首先計算實

3、參的值,調(diào)用時將實參的值放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)進(jìn)行直接訪問。 引用調(diào)用是將實參的地址傳遞給形參,使得形參的地址就是對應(yīng)實參的地址。引用調(diào)用的參數(shù)傳遞和被調(diào)用函數(shù)內(nèi)對參數(shù)的使用主要按下述原則處理:函數(shù)定義時形參被當(dāng)作局部變量看待,在函數(shù)被調(diào)用時為形參分配存儲單元;調(diào)用時將實參的地址放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)(地址)進(jìn)行間接訪問。 問題:3. 可用于編寫?yīng)毩⒊绦蚝涂焖倌_本的語言是_。A.PythonB.PrologC.JavaD.C#答案:A解析 Python是一種面向?qū)ο蟮慕忉屝统绦蛟O(shè)計語言,可用于編寫?yīng)毩⒊绦?、快速腳本和復(fù)雜應(yīng)用的原型。P

4、ython也是一種腳本語言,它支持對操作系統(tǒng)底層的訪問。 Prolog是一種邏輯型語言。Prolog程序是一系列事實、數(shù)據(jù)對象或事實間的具體關(guān)系和規(guī)則的集合。Prolog有很強(qiáng)的推理功能,適用于書寫自動定理證明、專家系統(tǒng)、自然語言理解等問題的程序。 Java是一種面向?qū)ο蟮某绦蛟O(shè)計語言,能開發(fā)應(yīng)用在Internet上且具有軟、硬件獨(dú)立性和交互能力的程序。Java可以一次編寫而到處運(yùn)行。 C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級程序設(shè)計語言。C#看起來與Java有著驚人的相似:它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運(yùn)行的過程

5、。但是c與Java有著明顯的不同,它借鑒了Delphi的一個特點(diǎn),與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET Windows網(wǎng)絡(luò)框架的主角。 問題:4. 將高級語言源程序翻譯成目標(biāo)程序的是_。A.解釋程序B.編譯程序C.鏈接程序D.匯編程序答案:B解析 編譯程序的功能是把某高級語言書寫的源程序翻譯成與之等價的目標(biāo)程序。解釋程序是另一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運(yùn)行用戶程序時,它直接執(zhí)行源程序或源程序的中間表示形式。解釋程序不產(chǎn)生源程序的目標(biāo)程序,這是它和編譯程序的主要區(qū)別。問題:5. 在對程序語言進(jìn)行翻譯的過程中,常采用一些與

6、之等價的中間代碼表示形式。常用的中間代碼表示不包括_。A.樹B.后綴式C.四元式D.正則式答案:D解析 常用的中間代碼有后綴式、三元式、四元式和樹等形式。問題:6. 函數(shù)(過程)調(diào)用時,常采用傳值與傳地址兩種方式在實參和形參間傳遞信息。以下敘述中,正確的是_。A.在傳值方式下,將形參的值傳給實參,因此,形參必須是常量或變量B.在傳值方式下,將實參的值傳給形參,因此,實參必須是常量或變量C.在傳地址方式下,將形參的值傳給實參,因此,形參必須有地址D.在傳地址方式下,將實參的值傳給形參,因此,實參必須有地址答案:D解析 傳值調(diào)用是指傳遞變量值的調(diào)用方式。在這種調(diào)用方式中,實參使用變量名或者表達(dá)式,

7、形參使用變量名。在調(diào)用時,調(diào)用函數(shù)將實參值拷貝到一個副本給形參,即使形參按順序從對應(yīng)的實參中獲得值,這就相當(dāng)于將實參值對應(yīng)地賦給形參,使形參獲值。傳址調(diào)用是指在調(diào)用時傳遞變量地址值的傳值調(diào)用。傳址調(diào)用時要求調(diào)用函數(shù)的實參用地址值,而被調(diào)用函數(shù)的形參用指針,于是函數(shù)之間進(jìn)行地址值的傳遞。這種傳遞是將實參的變量地址值傳遞給形參指針,即讓形參指針指向?qū)崊⒆兞?,這種傳遞方式與調(diào)用函數(shù)拷貝實參值的副本給形參是不同的,它是讓形參指針直接指向?qū)崊⒌淖兞俊栴}:7. 編譯和解釋是實現(xiàn)高級程序設(shè)計語言翻譯兩種基本形式。以下關(guān)于編譯與解釋的敘述中,正確的是_。A.在解釋方式下,對源程序不進(jìn)行詞法分析和語法分析,直

8、接進(jìn)行語義分析B.在解釋方式下,無需進(jìn)行詞法、語法和語義分析,而是直接產(chǎn)生源程序的目標(biāo)代碼C.在編譯方式下,必須進(jìn)行詞法、語法和語義分析,然后產(chǎn)生源程序的目標(biāo)代碼D.在編譯方式下,必須先形成源程序的中間代碼,然后再產(chǎn)生與機(jī)器對應(yīng)的目標(biāo)代碼答案:C解析 編譯程序是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標(biāo)程序,編譯的工作階段包括:詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成。解釋程序直接執(zhí)行源程序或源程序的內(nèi)部形式,一般是讀一句源程序,翻譯一句,執(zhí)行一句,不產(chǎn)生目標(biāo)代碼,如BASIC解釋程序。編譯程序與解釋程序最大的區(qū)別之一在于前者生成目標(biāo)代碼,而后者不生成;此外

9、,前者產(chǎn)生的目標(biāo)代碼的執(zhí)行速度比解釋程序的執(zhí)行速度要快;后者人機(jī)交互好,適于初學(xué)者使用。問題:8. 若C程序的表達(dá)式中引用了未賦初值的變量,則_。A.編譯時一定會報告錯誤信息,該程序不能允許B.可以通過編譯并運(yùn)行,但運(yùn)行時一定會報告異常C.可以通過編譯,但鏈接時一定會報告錯誤而不能運(yùn)行D.可以通過編譯并運(yùn)行,但運(yùn)行結(jié)果不一定是期望的結(jié)果答案:D解析 全局變量和靜態(tài)局部變量在定義時如果沒有初始化,編譯時會自動初始化為0;而普通的局部變量,如果沒有初始化,則其值是一個隨機(jī)數(shù)。在C程序表達(dá)式中,只要引用的變量定義了,就可以通過編譯并運(yùn)行,但運(yùn)行結(jié)果不一定是期望的結(jié)果。 函數(shù)t、f的定義如下所示,其中

10、,a是整型全局變量。設(shè)調(diào)用函數(shù)t前a的值為5,則在函數(shù)中以傳值調(diào)用(call by value)方式調(diào)用函數(shù)f時,輸出為_;在函數(shù)t中以引用調(diào)用(call by reference)方式調(diào)用函數(shù)時,輸出為_。 9.A.12B.16C.20D.24答案:B10.A.12B.16C.20D.24答案:D解析 本題主要考查函數(shù)調(diào)用時參數(shù)的傳遞方式。如果采用傳值方式調(diào)用,則形參值的變化不會影響實參;而采用引用方式調(diào)用,則形參值的變化直接反映到實參。 本題中如果在函數(shù)t中采用傳值方式調(diào)用函數(shù)f,a的值傳給形參r,在函數(shù)f中,a的值變?yōu)?,r的值為10并返回賦給變量x,由于a是全局變量,退出函數(shù)f后a的值

11、依然為6,所以函數(shù)t的輸出結(jié)果為16。如果函數(shù)t采用傳值方式調(diào)用函數(shù)f,則形參r就是對實參a的引用,對r的修改就是對a的修改,在執(zhí)行a=r+1時,a和r的值都變?yōu)?,執(zhí)行r=r*2,a和r的值都變?yōu)?2,并將r的值返回給x,因此函數(shù)t的輸出結(jié)果為24。 問題:11. 傳值與傳地址是函數(shù)調(diào)用時常采用的信息傳遞方式,_。A.在傳值方式下,是將形參的值傳給實參B.在傳值方式下,形參可以是任意形式的表達(dá)式C.在傳地址方式下,是將實參的地址傳給形參D.在傳地址方式下,實參可以是任意形式的表達(dá)式答案:C解析 在傳值方式下,是將實參的值傳給形參,形參不能向?qū)嶋H參數(shù)傳遞信息;實參可以是表達(dá)式或常量,也可以是變

12、量或數(shù)組元素。 在傳地址方式下,是將實參的地址傳給形參,實參和形參都指向同一個對象,被調(diào)用函數(shù)中對形式參數(shù)的修改實際上就是對實際參數(shù)的修改,可以實現(xiàn)數(shù)據(jù)的雙向傳遞。實參必須是變量地址、數(shù)組名,不能是表達(dá)式或常量。 形參就是形式參數(shù),用一個變量來代表,不能是表達(dá)式。 問題:12. 以下關(guān)于變量和常量的敘述中,錯誤的是_。A.變量的取值在程序運(yùn)行過程中可以改變,常量則不行B.變量具有類型屬性,常量則沒有C.變量具有對應(yīng)的存儲單元,常量則沒有D.可以對變量賦值,不能對常量賦值答案:B解析 常量是在程序運(yùn)行過程中值不可以改變的數(shù)據(jù)。根據(jù)數(shù)據(jù)的組織類型的不同,可以將數(shù)據(jù)分為基本數(shù)據(jù)類型、用戶自定義數(shù)據(jù)類

13、型、構(gòu)造類型等。變量具有類型屬性,常量也有數(shù)據(jù)類型,如整數(shù)常量、字符串常量等。問題:13. 下面C程序段中count+語句執(zhí)行的次數(shù)為_。 for(int i=1;i=11;i*=2) for(int j=1;j=i;j+) count+; A.15B.16C.31D.32答案:A解析 第1輪循環(huán),i=1,count+執(zhí)行1次,然后i=2;第2輪循環(huán),i=2,count+執(zhí)行2次,然后i=4;第3輪循環(huán),i=4,count+執(zhí)行4次,然后i=8;第4輪循環(huán),i=8,count+執(zhí)行8次,然后i=16,i11,不滿足循環(huán)條件,循環(huán)結(jié)束。可以計算count+語句執(zhí)行的次數(shù)為1+2+4+8=15。問

14、題:14. 程序的三種基本控制結(jié)構(gòu)是_。A.過程、子程序和程序B.順序、選擇和重復(fù)C.遞歸、堆棧和隊列D.調(diào)用、返回和跳轉(zhuǎn)答案:B解析 程序的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)。問題:15. 函數(shù)調(diào)用時,基本的參數(shù)傳遞方式有傳值與傳地址兩種,_。A.在傳值方式下,形參將值傳給實參B.在傳值方式下,實參不能是數(shù)組元素C.在傳地址方式下,形參和實參間可以實現(xiàn)數(shù)據(jù)的雙向傳遞D.在傳地址方式下,實參可以是任意的變量和表達(dá)式答案:C解析 首先看A選項。在傳值方式下,對應(yīng)的實參和形參是兩個獨(dú)立的實體,占用不同的內(nèi)存單元,調(diào)用函數(shù)時,系統(tǒng)把實參值復(fù)制一份給形參,便斷開兩者的聯(lián)系,形參值的改變對實

15、參無影響。因此,“傳值”是單向的,只能由實參傳遞給形參。 B選項,形參為傳值方式下的簡單變量,實參可以是與其同類型的常量、變量、數(shù)組元素或表達(dá)式。 C選項,在傳址方式下,函數(shù)調(diào)用時,系統(tǒng)將實參的地址傳遞給形參,即這時參數(shù)傳遞的不是數(shù)據(jù)本身,而是數(shù)據(jù)在內(nèi)存中的地址。所以在被調(diào)用函數(shù)中,任何對形式參數(shù)的訪問,都被認(rèn)為是對形式參數(shù)的間接訪問。實參與形參占用不同的存儲單元,傳遞方式是雙向的,形參值的改變將影響實參值。故C選項正確。 D選項,形參為傳址方式時,實參如果為常量或表達(dá)式,則傳址無效,相當(dāng)于傳值方式。 問題:16. 下面關(guān)于程序語言的敘述,錯誤的是_。A.腳本語言屬于動態(tài)語言,其程序結(jié)構(gòu)可以在

16、運(yùn)行中改變B.腳本語言一般通過腳本引擎解釋執(zhí)行,不產(chǎn)生獨(dú)立保存的目標(biāo)程序C.PHP、JavaScript屬于靜態(tài)語言,其所有成分可在編譯時確定D.C#、Java語言屬于靜態(tài)語言,其所有成分可在編譯時確定答案:C解析 腳本是一種特定的描述性語言,是依據(jù)一定的格式編寫的可執(zhí)行文件,又稱做宏或批處理文件。腳本通??梢杂蓱?yīng)用程序臨時調(diào)用并執(zhí)行。腳本語言一般都是以文本形式存在,類似于一種命令。有些程序,如C、C+、Java等則必須先經(jīng)過編譯,將源代碼轉(zhuǎn)換為二進(jìn)制代碼之后才可執(zhí)行。而像Perl、JavaScript、VBScript等則不需要事先編譯,只要利用合適的解釋器便可以執(zhí)行代碼。 動態(tài)類型語言是指

17、在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言。也就是說,在用動態(tài)類型的語言編程時,永遠(yuǎn)也不用給任何變量指定數(shù)據(jù)類型,該語言會在你第一次賦值給變量時,在內(nèi)部將數(shù)據(jù)類型記錄下來,不用編譯即可運(yùn)行。Python和Ruby就是一種典型的動態(tài)類型語言,其他的各種腳本語言如JavaScript屬于動態(tài)類型語言。靜態(tài)類型語言的數(shù)據(jù)類型是在編譯期間檢查的,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型。C/C+是靜態(tài)類型語言的典型代表,其他的靜態(tài)類型語言還有C#、Java等。故錯誤的為選項C。 問題:17. 程序設(shè)計語言一般都提供多種循環(huán)語句,例如實現(xiàn)先判斷循環(huán)條件再執(zhí)行循環(huán)體的while語句和先執(zhí)行循環(huán)體再判斷循環(huán)條件的

18、do-while語句。關(guān)于這兩種循環(huán)語句,在不改變循環(huán)體的條件下,_是正確的。A.while語句的功能可由do-while語句實現(xiàn)B.do-while語句的功能可由while語句實現(xiàn)C.若已知循環(huán)體的次數(shù),則只能使用while語句D.循環(huán)條件相同時,do-while語句的執(zhí)行效率更高答案:C問題:18. 下列敘述中錯誤的是_。A.面向?qū)ο蟪绦蛟O(shè)計語言可支持過程化的程序設(shè)計B.給定算法的時間復(fù)雜性與實現(xiàn)該算法所采用的程序設(shè)計語言無關(guān)C.與匯編語言相比,采用腳本語言編程可獲得更高的運(yùn)行效率D.面向?qū)ο蟪绦蛟O(shè)計語言不支持對一個對象的成員變量進(jìn)行直接訪問答案:C問題:19. 在對高級語言源程序進(jìn)行編譯

19、的過程中,為源程序中變量所分配的存儲單元的地址屬于_。A.邏輯地址B.物理地址C.接口地址D.線性地址答案:A解析 在編譯時產(chǎn)生的目標(biāo)文件都是從地址0開始的,在連接時將各個目標(biāo)文件進(jìn)行符號替換,這時會修改相應(yīng)的地址,最后產(chǎn)生一個從地址0開始的可執(zhí)行文件。在該可執(zhí)行文件中的地址稱為邏輯地址。問題:20. 以下關(guān)于語言L=anbn|n1)的敘述中,正確的是_。A.可用正規(guī)式“aa*bb*”描述,但不能通過有限自動機(jī)識別B.可用正規(guī)式“ambm”表示,也可用有限自動機(jī)識別C.不能用正規(guī)式表示,但可以用有限自動機(jī)識別D.不能用正規(guī)式表示,也不能通過有限自動機(jī)識別答案:D解析 根據(jù)正規(guī)式和有限自動機(jī)的規(guī)

20、范,結(jié)合題中給出的語言L,很明顯都無法將語言L表示和識別出來。 編譯過程中,對高級語言程序語句的翻譯主要考慮聲明語句和可執(zhí)行語句。對聲明語句,主要是將需要的信息正確地填入合理組織的_中;對可執(zhí)行語句,則是_。 21.A.符號表B.棧C.隊列D.樹答案:A22.A.翻譯成機(jī)器代碼并加以執(zhí)行B.轉(zhuǎn)換成語法樹C.翻譯成中間代碼或目標(biāo)代碼D.轉(zhuǎn)換成有限自動機(jī)答案:C解析 編譯程序的功能是把用高級語言書寫的源程序翻譯成與之等價的目標(biāo)程序(匯編語言或機(jī)器語言)。編譯程序的工作過程可以分為6個階段:詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成,實際的編譯器中可能會將其中的某些階段結(jié)合在

21、一起進(jìn)行處理。各個階段邏輯上可以劃分為前端和后端兩部分。前端包括從詞法分析到中間代碼生成各個階段的工作,后端包括中間代碼優(yōu)化、目標(biāo)代碼生成與優(yōu)化等階段。這樣,以中間代碼為分水嶺,把編譯器分成了與機(jī)器有關(guān)的部分和與機(jī)器無關(guān)的部分。符號表的作用是記錄源程序中各個符號的必要信息,以輔助語義的正確性檢查和代碼生成,在編譯過程中需要對符號表進(jìn)行怏速有效地查找、插入、修改和刪除等操作。問題:23. 語言L=ambn|m0,n1的正規(guī)表達(dá)式是_。A.aa*bb*B.a*bb*C.aa*b*D.a*b*答案:B解析 m0,am說明可以有0個a或者多個a;n1,bn說明至少有1個b或者多個b。a*表示由0個或者

22、多個a構(gòu)成的集合,可以表示am|m0;b*表示由0個或者多個b構(gòu)成的集合,bb*才可以表示(bn|n1。問題:24. 算術(shù)表達(dá)式(a-b)*c+d的后綴式是_(-、+、*表示算術(shù)的減、加、乘運(yùn)算,運(yùn)算符的優(yōu)先級和結(jié)合性遵循慣例)。A.abcd-*+B.ab-cd*+C.ab-c*d+D.abc-d*+答案:C解析 后綴表達(dá)式的計算是通過棧來實現(xiàn)的。算術(shù)表達(dá)式(a-b)*c+d首先計算a-b,因此a、b先入棧,當(dāng)遇到“-”號時出棧,得出結(jié)果并壓入棧;然后計算與c相乘的結(jié)果,將c入棧,遇到“*”號時,出棧,計算乘積并將結(jié)果入棧;最后進(jìn)行與d的加法運(yùn)算,將d入棧,遇到“+”時出棧,計算結(jié)果。問題:2

23、5. 以下關(guān)于程序錯誤的敘述中,正確的是_。A.編譯正確的程序必然不包含語法錯誤B.編譯正確的程序必然不包含語義錯誤C.除數(shù)為0的錯誤可以在語義分析階段檢查出來D.除數(shù)為0的錯誤可以在語法分析階段檢查出來答案:C解析 用戶編寫的源程序不可避免地會有一些錯誤,這些錯誤大致可以分為靜態(tài)錯誤和動態(tài)錯誤。動態(tài)錯誤也稱動態(tài)語義錯誤,它們發(fā)生在程序運(yùn)行時,例如除數(shù)為0、引用數(shù)組元素下標(biāo)錯誤等。靜態(tài)錯誤是指編譯階段發(fā)現(xiàn)的程序錯誤,可分為語法錯誤和靜態(tài)語義錯誤,如單詞拼寫錯誤、標(biāo)點(diǎn)符號錯、表達(dá)式缺少操作數(shù)、括號不匹配等有關(guān)語言結(jié)構(gòu)上的錯誤稱為語法錯誤,而語義分析時發(fā)現(xiàn)的運(yùn)算符與運(yùn)算對象不合法等錯誤屬于靜態(tài)語義

24、錯誤。問題:26. 算術(shù)表達(dá)式x-(y+c)*8的后綴式是_(-、+、*表示算術(shù)的減、加、乘運(yùn)算,運(yùn)算符的優(yōu)先級和結(jié)合型遵循慣例)。A.xyc8-+*B.xy-c+8*C.xyc8*+-D.xyc+8*-答案:D解析 后綴表達(dá)式不包含括號,運(yùn)算符放在兩個運(yùn)算對象的后面,所有的計算按運(yùn)算符出現(xiàn)的順序,嚴(yán)格從左向右進(jìn)行(不再考慮運(yùn)算符的優(yōu)先規(guī)則),如:(2+1)*3的后綴式為21+3*。運(yùn)用后綴表達(dá)式進(jìn)行計算的具體做法:建立一個棧S。從左到右讀后綴表達(dá)式,如果讀到操作數(shù)就將它壓入棧S中,如果讀到n元運(yùn)算符(即需要參數(shù)個數(shù)為n的運(yùn)算符)則取出由棧頂向下的n項按操作符運(yùn)算,再將運(yùn)算的結(jié)果代替原棧頂?shù)膎

25、項,壓入棧S中。如果后綴表達(dá)式未讀完,則重復(fù)上面過程,最后輸出棧碩的數(shù)值則為結(jié)束。問題:27. 下圖所示為一個有限自動機(jī)(其中,A是初態(tài)、C是終態(tài)),該自動機(jī)所識別的字符串的特點(diǎn)是_。 A.必須以1 1結(jié)尾的0、1串B.必須以00結(jié)尾的0、1串C.必須以01結(jié)尾的0、1串D.必須以10結(jié)尾的0、1串答案:C解析 有限自動機(jī)可識別的字符串,是指從有限自動機(jī)的初態(tài)出發(fā),存在一條到達(dá)終態(tài)的路徑,其上的標(biāo)記所構(gòu)成的字符串。本題C是終態(tài),C的前一狀態(tài)只能是B,由B到C輸入的是1;B的前一狀態(tài)可以是A,也可以是B,也可以是C,但輸入的都是0。可見,該有限自動機(jī)識別的串必須以01結(jié)尾。問題:28. 下圖所示

26、為一個有限自動機(jī)(其中,A是初態(tài)、C是終態(tài)),該自動機(jī)識別的語言可用正規(guī)式_表示。 A.(0|1)*01B.1*0*10*1C.1*(0)*01D.1*(0|10)*1*答案:A解析 在正規(guī)式中,符號*表示重復(fù)若干次(包括0次),符號|表示“或”。在狀態(tài)A,可以輸入1或0,如果輸入1還可以回到狀態(tài)A,如果輸入0直接到達(dá)狀態(tài)B;在狀態(tài)B,可以輸入0或1,如果輸入0則還回到狀態(tài)B,而輸入1,則進(jìn)入狀態(tài)C;在狀態(tài)C可以輸入0或1,輸入0到達(dá)狀態(tài)B,輸入1到達(dá)狀態(tài)A,但由于C是終態(tài),自動機(jī)可識別的語言是由0、1構(gòu)成的字符串的集合,但該集合必須以01結(jié)束,因此選項A正確。 算術(shù)表達(dá)式采用逆波蘭式表示時不

27、用括號,可以利用_進(jìn)行求值。與逆波蘭式ab-cd+*對應(yīng)的中綴表達(dá)式是_。 29.A.數(shù)組B.棧C.隊列D.散列表答案:B30.A.a-b+c*dB.(a-b)*c+dC.(a-b)*(c+d)D.a-b*c+d答案:C解析 逆波蘭式表示方式把運(yùn)算符寫在運(yùn)算對象的后面,不需要使用括號。由于后綴表示中的各個運(yùn)算是按順序執(zhí)行的,因此,它的計值很容易實現(xiàn)。為此,僅需從左到右依次掃視表達(dá)式中的各個符號,每遇一個運(yùn)算對象,就把它壓入棧頂暫存起來;每遇一個二元(或一元)運(yùn)算符時,就取出棧頂?shù)膬蓚€(或一個)運(yùn)算對象進(jìn)行相應(yīng)的運(yùn)算,并用運(yùn)算結(jié)果替換棧頂?shù)倪@兩(或一)個運(yùn)算對象,然后再繼續(xù)掃視余留的符號,如此等

28、等,直到掃視完整個表達(dá)式為止。當(dāng)上述過程結(jié)束時,整個表達(dá)式的值將留于棧頂。 a-b+c*d對應(yīng)的逆波蘭式為:ab-cd*+ (a-b)*c+d對應(yīng)的逆波蘭式為:ab-c*d+ (a-b)*(c+d)對應(yīng)的逆波蘭式為:ab-cd+* a-b*c+d對應(yīng)的逆波蘭式為:abc*-d+ 問題:31. 若一種程序設(shè)計語言規(guī)定其程序中的數(shù)據(jù)必須具有類型,則有利于_。 在翻譯程序的過程中為數(shù)據(jù)合理分配存儲單元 對參與表達(dá)式計算的數(shù)據(jù)對象進(jìn)行檢查 定義和應(yīng)用動態(tài)數(shù)據(jù)結(jié)構(gòu) 規(guī)定數(shù)據(jù)對象的取值范圍及能夠進(jìn)行的運(yùn)算 對數(shù)據(jù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換 A.B.C.D.答案:B解析 數(shù)據(jù)是程序操作的對象,類型說明數(shù)據(jù)占用的內(nèi)存和

29、存放形式。數(shù)據(jù)類型不僅可用于在基礎(chǔ)機(jī)器中完成對值的布局,還可以用于檢查表達(dá)式中對運(yùn)算的應(yīng)用是否正確。問題:32. 以下關(guān)于高級程序設(shè)計語言翻譯的敘述中,正確的是_。A.可以先進(jìn)行語法分析,再進(jìn)行詞法分析B.在語法分析階段可以發(fā)現(xiàn)程序中的所有錯誤C.語義分析階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)密切相關(guān)D.目標(biāo)代碼生成階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)密切相關(guān)答案:D解析 對于高級程序設(shè)計語言,編譯程序會把編寫的源程序翻譯成與之等價的目標(biāo)程序。編譯程序的工作過程分為詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成。語法分析要在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法

30、單位??梢姡冗M(jìn)行詞法分析,然后進(jìn)行語法分析,故選項A錯誤。在語法分析階段能發(fā)現(xiàn)語法錯誤,但不能發(fā)現(xiàn)語義錯誤,因此選項B錯誤。語義分析階段主要檢查源程序是否包含靜態(tài)語義錯誤,并收集類型信息供后面的代碼生成階段使用,可見,語義分析階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)關(guān)聯(lián)不大,選項C錯誤。目標(biāo)代碼生成階段的任務(wù)是把中間代碼變化成特定機(jī)器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼,這個階段的工作與具體的機(jī)器密切相關(guān)。問題:33. 下圖所示為一個有限自動機(jī)(其中,A是初態(tài)、C是終態(tài)),該自動機(jī)可識別_。 A.0000B.1111C.0101D.1010答案:C解析 有限自動機(jī)可識別的字符串,是指從

31、有限自動機(jī)的初態(tài)出發(fā),存在一條到達(dá)終態(tài)的路徑,其上的標(biāo)記所構(gòu)成的字符串。 對于“0000”,其識別路徑是狀態(tài)A狀態(tài)B狀態(tài)B狀態(tài)B狀態(tài)B,沒有到達(dá)態(tài)。 對于“1111”,其識別路徑是狀態(tài)A狀態(tài)A狀態(tài)A狀態(tài)A狀態(tài)A,沒有到達(dá)態(tài)。 對于“0101”,其識別路徑是狀態(tài)A狀態(tài)B狀態(tài)C狀態(tài)B狀態(tài)C,狀態(tài)C為終態(tài),可以識別。 對于“1010”,其識別路徑是狀態(tài)A狀態(tài)A狀態(tài)B狀態(tài)C狀態(tài)B,經(jīng)過了終態(tài),但沒有以終態(tài)結(jié)束。 問題:34. 編譯程序分析源程序的階段依次是_。A.詞法分析、語法分析、語義分析B.語法分析、詞法分析、語義分析C.語義分析、語法分析、詞法分析D.語義分析、詞法分析、語法分析答案:A解析 詞

32、法分析是編譯過程的第一個階段,其任務(wù)是對源程序從前到后(從左到右)逐個字符地掃描,從中識別出一個個“單詞”符號。語法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法單位。如果源程序中沒有語法錯誤,語法分析后就能正確地構(gòu)造其語法樹。語義分析階段的主要任務(wù)是檢查源程序是否包含靜態(tài)語義錯誤,并收集類型信息供后面的代碼生成階段使用。問題:35. 下圖所示的有限自動機(jī)中,0是初始狀態(tài),3是終止?fàn)顟B(tài),該自動機(jī)可以識別_。 A.ababB.aaaaC.bbbbD.abba答案:B解析 從初始狀態(tài)到終止?fàn)顟B(tài)有多條路徑。在狀態(tài)0輸入a到達(dá)狀態(tài)2,在狀態(tài)2可輸入a或b,輸入a到達(dá)狀態(tài)

33、1,輸入b到達(dá)狀態(tài)3,狀態(tài)3下輸入a還回到狀態(tài)3;在狀態(tài)1可輸入a或b,輸入a到達(dá)狀態(tài)3,輸入b到達(dá)狀態(tài)2。問題:36. 下圖所示為兩個有限自動機(jī)M1和M2(A是初態(tài)、C是終態(tài)),_。 A.M1和M2都是確定的有限自動機(jī)B.M1和M2都是不確定的有限自動機(jī)C.M1是確定的有限自動機(jī),M2是不確定的有限自動機(jī)D.M1是不確定的有限自動機(jī),M2是確定的有限自動機(jī)答案:D解析 確定有限自動機(jī)對每一個可能的輸入只有一個狀態(tài)的轉(zhuǎn)移。非確定有限自動機(jī)對每一個可能的輸入可以有多個狀態(tài)轉(zhuǎn)移,接受到輸入時從這多個狀態(tài)轉(zhuǎn)移中非確定地選擇一個。有限自動機(jī)M1在狀態(tài)A時,輸入0可以回到狀態(tài)A,也可以到達(dá)狀態(tài)B,可見M

34、1是不確定的。有限自動機(jī)M2的每個狀態(tài)下的輸入都只有一個轉(zhuǎn)移狀態(tài)。問題:37. 以下關(guān)于匯編語言的敘述中,錯誤的是_。A.匯編語言源程序中的指令語句將被翻譯成機(jī)器代碼B.匯編程序先將源程序中的偽指令翻譯成機(jī)器代碼,然后再翻譯指令語句C.匯編程序以匯編語言源程序為輸入,以機(jī)器語言表示的目標(biāo)程序為輸出D.匯編語言的指令語句必須具有操作碼字段,可以沒有操作數(shù)字段答案:B解析 匯編程序的功能是將匯編語言所編寫的源程序翻譯成機(jī)器指令程序。匯編語言源程序語句可分為指令語句、偽指令語句和宏指令語句。指令語句匯編后產(chǎn)生相應(yīng)的機(jī)器代碼;偽指令語句指示匯編程序在匯編源程序時完成某些操作,匯編后不產(chǎn)生機(jī)器代碼。問題

35、:38. 邏輯表達(dá)式“abc(bx0)”的后綴式為_。(其中、分別表示邏輯與、邏輯或,表示關(guān)系運(yùn)算大于,對邏輯表達(dá)式進(jìn)行短路求值)A.abcbx0B.abcbxC.abcbx0D.abcbx0答案:D解析 后綴式把運(yùn)算符寫在運(yùn)算對象后面?!斑壿嬇c”運(yùn)算的優(yōu)先級高于“邏輯或”運(yùn)算。對于邏輯表達(dá)式“abc(bx0)”,從運(yùn)算符的優(yōu)先級方面考慮,需先對“ab”求值,然后對“c(bx0)”求值,最后進(jìn)行“”運(yùn)算,因此后綴式為“abcbx0”。問題:39. 編譯程序?qū)語言源程序進(jìn)行語法分析時,可以確定_。A.變量是否定義(或聲明)B.變量的值是否正確C.循環(huán)語句的執(zhí)行次數(shù)D.循環(huán)條件是否正確答案:A解

36、析 語法分析是編譯過程的一個邏輯階段。語法分析的任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列組合成各類語法短語,如“程序”、“語句”、“表達(dá)式”等等。語法分析程序判斷源程序在結(jié)構(gòu)上是否正確。題目中,只有選項A可以在語法分析時確定。問題:40. 以下關(guān)于高級語言程序的編譯和解釋的敘述中,正確的是_。A.編譯方式下,可以省略對源程序的詞法分析、語法分析B.解釋方式下,可以省略對源程序的詞法分析、語法分析C.編譯方式下,在機(jī)器上運(yùn)行的目標(biāo)程序完全獨(dú)立于源程序D.解釋方式下,在機(jī)器上運(yùn)行的目標(biāo)程序完全獨(dú)立于源程序答案:C解析 編譯和解釋是語言處理的兩種基本方式。編譯過程包括詞法分析、語法分析、語義分析、中間代碼

37、生成、代碼優(yōu)化和目標(biāo)代碼生成等階段,以及符號表管理和出錯處理模塊。解釋過程在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但是在運(yùn)行用戶程序時,它直接執(zhí)行源程序或源程序的內(nèi)部形式。 這兩種語言處理程序的根本區(qū)別是:在編譯方式下,機(jī)器上運(yùn)行的是與源程序等價的目標(biāo)程序,源程序和編譯程序都不再參與目標(biāo)程序的執(zhí)行過程;而在解釋方式下,解釋程序和源程序(或其某種等價表示)要參與到程序的運(yùn)行過程中,運(yùn)行程序的控制權(quán)在解釋程序。解釋器翻譯源程序時不產(chǎn)生獨(dú)立的目標(biāo)程序,而編譯器則需將源程序翻譯成獨(dú)立的目標(biāo)程序。 問題:41. 對于正規(guī)式0*(10*1)*0*,其正規(guī)集中字符串的特點(diǎn)是_。A.開頭和結(jié)尾

38、必須是0B.1必須出現(xiàn)偶數(shù)次C.0不能連續(xù)出現(xiàn)D.1不能連續(xù)出現(xiàn)答案:B解析 閉包運(yùn)算符“*”將其運(yùn)算對象進(jìn)行若干次連接,因此0*表示若干個0構(gòu)成的串,而(10*1)*則表示偶數(shù)個1構(gòu)成的串。問題:42. 將高級語言源程序翻譯為機(jī)器語言程序的過程中常引入中間代碼。以下關(guān)于中間代碼的敘述中,錯誤的是_。A.不同的高級程序語言可以產(chǎn)生同一種中間代碼B.使用中間代碼有利于進(jìn)行與機(jī)器無關(guān)的優(yōu)化處理C.使用中間代碼有利于提高編譯程序的可移植性D.中間代碼與機(jī)器語言代碼在指令結(jié)構(gòu)上必須一致答案:D解析 中間代碼生成階段的工作是根據(jù)語義分析的輸出生成中間代碼?!爸虚g代碼”是一種簡單而且含義明確的記號系統(tǒng),可

39、以有若干種形式,它們的共同特征就是與具體的機(jī)器無關(guān)。問題:43. 以下關(guān)于編譯系統(tǒng)對某高級語言進(jìn)行翻譯的敘述中,錯誤的是_。A.訓(xùn)法分析將把源程序看做一個線性字符序列進(jìn)行分析B.語法分析階段可以發(fā)現(xiàn)程序中所有的語法錯誤C.語義分析階段可以發(fā)現(xiàn)程序中所有的語義錯誤D.目標(biāo)代碼生成階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)相關(guān)答案:C解析 在詞法分析階段,源程序可以簡單地被看成一個多行的字符串。這一階段的任務(wù)是對源程序從前到后(從左到右)逐個字符進(jìn)行掃描,從中識別出一個個“單詞”符號,語法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解為各類語法單位,檢查其中的語法錯誤;語義分析階段的主要

40、任務(wù)是檢查源程序是否包含靜態(tài)語義錯誤,并收集類型信息供后面的代碼生成階段使用;目標(biāo)代碼生成是編譯器工作的最后一個階段,這一階段的任務(wù)是把中間代碼變化為特定機(jī)器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼,這個階段的工作與具體的機(jī)器密切相關(guān)。因此說法C中發(fā)現(xiàn)所有語義錯誤是不對的。問題:44. 由某上下文無關(guān)文法MS推導(dǎo)出某句子的分析樹如下圖所示,則錯誤的敘述是_。 A.該文法推導(dǎo)出的句子必須以a開頭B.acabcbdcc是該文法推導(dǎo)出的一個句子C.SaAcB是該文法的一個產(chǎn)生式D.a、b、c、d屬于該文法的終結(jié)符號集答案:A解析 上圖所示為某上下文無關(guān)文法MS推導(dǎo)出某句子的分析樹,通過觀察

41、上圖,只要稍作推導(dǎo)就可推出acabcbdcc是該文法推導(dǎo)出的一個句子;看該分析樹的第一層分支即可知SaAcB是該文法的一個產(chǎn)生式;而a、b、c、d因為在圖中是分析樹的葉子,所以都是該文法的終結(jié)符號;右邊的B分支下有SBd,B,所以該文法推導(dǎo)出的句子不一定是a開頭的。問題:45. 已知某高級語言源程序A經(jīng)編譯后得到機(jī)器C上的目標(biāo)程序B,則_。A.對B進(jìn)行反編譯,不能還原出源程序AB.對B進(jìn)行反匯編,不能得到與源程序A等價的匯編程序代碼C.對B進(jìn)行反編譯,得到的是源程序A的變量聲明和算法流程D.對A和B進(jìn)行交叉編澤,可以產(chǎn)生在機(jī)器C上運(yùn)行的動態(tài)鏈接庫答案:D解析 高級語言源程序經(jīng)過編譯變成可執(zhí)行文

42、件,反編譯就是其逆過程。但通常不能把可執(zhí)行文件變成高級語言源代碼,只能轉(zhuǎn)換成匯編程序。 將C、Pascal等高級語言編出來的程序進(jìn)行編譯,生成可以被計算機(jī)系統(tǒng)直接執(zhí)行的文件。反匯編是指將這些執(zhí)行文件反編譯還原成匯編語言或其他高級語言。 在一種計算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。 問題:46. 如下圖所示有限自動機(jī)的特點(diǎn)是_。 A.識別的0、1串是以0開頭且以1結(jié)尾B.識別的0、1串中1的數(shù)目為偶數(shù)C.識別的0、1串中0后面必須是1D.識別的0、1串中1不能連續(xù)

43、出現(xiàn)答案:D解析 由上圖可知,從初始態(tài)q0輸入0仍然到q0或者輸入1到達(dá)終態(tài)q1,從q1還可以輸入0重新到達(dá)初始態(tài)q0,所以這個有限自動機(jī)識別的0、1串不一定是以0開頭的,1的數(shù)目的奇偶性也沒辦法確定,0后面也可以是0,所以選項A、B、C都是錯誤的。從q0輸入1到達(dá)終態(tài)q1后串結(jié)束,或者q0輸入0再到q0,所以這個串中的1不會連續(xù)出現(xiàn),D是正確的。問題:47. 由a、b構(gòu)造且僅包含偶數(shù)個a的串的集合用正規(guī)式表示為_。A.(a*a)*b*B.(b*(ab*a)*)*C.(a*(ba)*b)*D.(ab)*(aa)*答案:B解析 本題主要考查考生對閉包概念的理解。 *指包括空串在內(nèi)的上所有字符串的

44、集合。關(guān)鍵在于*可取空串,理解了這個概念就不難看出答案B是正確的。 問題:48. 程序語言的大多數(shù)語法現(xiàn)象可用上下文無關(guān)文法描述。對于一個上下文無關(guān)文法G=(N,T,P,S),其中N是非終結(jié)符號的集合,T是終結(jié)符號的集合,P是產(chǎn)生式集合,S是開始符號。令集合V=NT那么G所描述的語言是_的集合。A.從S出發(fā)推導(dǎo)出的包含V中所有符號的串B.從S出發(fā)推導(dǎo)出的僅包含T中符號的串C.N中所有符號組成的串D.T中所有符號組成的串答案:A解析 上下文無關(guān)文法要求,G的任何產(chǎn)生式形如A,AN,V*,可見G所描述的語言是從S出發(fā)推導(dǎo)出的包含V中所有符號的串的集合。問題:49. 設(shè)某上下文無關(guān)文法如下:S11|1001|S0|SS,則該文法產(chǎn)生的所有二進(jìn)制字符串都具有的特點(diǎn)是_。A.能被3整除B.0、1出現(xiàn)的次數(shù)相等C.0和1的出現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論