程序設(shè)計(jì)語言基礎(chǔ)答案.doc
《程序設(shè)計(jì)語言基礎(chǔ)答案.doc》由會員分享,可在線閱讀,更多相關(guān)《程序設(shè)計(jì)語言基礎(chǔ)答案.doc(18頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 ●已知文法G[S]:S→A0|Bl,A→S1|1,B→S0|0;該文法屬于喬姆斯基定義的 __(12)__文法,它不能產(chǎn)生串__(13)__。 (12) A. 0 型B. 1 型C. 2 型D. 3 型 (13) A. 0011 B. 1010 C. 1001 D. 0101 ●語言L={ambn|m≥0,n≥1}的正規(guī)表達(dá)式是__(14)__。 (14) A. a*bb* B. aa*bb* C. aa*b* D. a*b* ●一個(gè)文法G=(N,T,P,S),其中N 是非終結(jié)符號的集合,T 是終結(jié)符號的集合, P 是產(chǎn)生式集合,S 是開始符號,令集合V=N∪T,那么G 所描述
2、的語言是__(15)__ 的集合。 (15) A.由S 推導(dǎo)出的所有符號串B.由S 推導(dǎo)出的所有終結(jié)符號串 C.V 中所有符號組成的符號串D.V 的閉包中的所有符號串 ● 下圖為一確定有限自動機(jī)的狀態(tài)轉(zhuǎn)換圖,與該自動機(jī)等價(jià)的正規(guī)表達(dá)式是__(12)__,圖中的__(13)__是可以合并的狀態(tài)。 (12)A.(a|b)*bb(a*b*)* B.(a|b)*bba*|b* C.(a*b*)bb(a|b)* D.(a*|b*)*bb(a*|b*) (13)A.0 和1 B.2 和3 C.1 和2 D.0 和3 正確答案:A 解析:在狀態(tài)轉(zhuǎn)換圖中,每一個(gè)結(jié)點(diǎn)代表一個(gè)狀態(tài),其中雙圈
3、是終結(jié)狀態(tài)。該題實(shí)際上是一個(gè)簡化確定有限自動機(jī)(DFA)的過程,一個(gè)確定有限自動機(jī)可以通過消除多余狀態(tài)和合并等價(jià)狀態(tài)而轉(zhuǎn)換成一個(gè)最小的與之等價(jià)的有限自動機(jī)。 首先介紹2個(gè)概念:最小狀態(tài)DFA和等價(jià)狀態(tài)。 最小狀態(tài)DFA必須滿足以下2個(gè)條件。 (1)沒有多余狀態(tài)(死狀態(tài)):多余狀態(tài)從該自動機(jī)的開始狀態(tài)出發(fā),任何輸入串都不能到達(dá)的那個(gè)狀態(tài)。 (2)沒有2個(gè)狀態(tài)是互相等價(jià)(不可區(qū)別)。 2個(gè)狀態(tài)s和t如果同時(shí)滿足下列2個(gè)條件,就稱s和t是等價(jià)的。 (1)一致性:同是終態(tài)或同是非終態(tài)。 (2)蔓延性:從s出發(fā)讀人某個(gè)a和從t出發(fā)讀入某個(gè)a到達(dá)的狀態(tài)等價(jià)。 本題的簡化過程
4、如下: 首先,將圖中狀態(tài)分為終態(tài)和非終態(tài)2個(gè)子集即({0,1},{2,3}),再進(jìn)行子集劃分,觀察第一個(gè)子集{0,1},輸入b后,狀態(tài)0轉(zhuǎn)換為狀態(tài)1,而狀態(tài)1轉(zhuǎn)換為狀態(tài)2。因此{(lán)1}和{2}中的狀態(tài)是可區(qū)別的。 由于狀態(tài)2,3輸入字符a得到相同的結(jié)果3,輸入字符b得到相同結(jié)果2,所以子集 {2,3}是不可區(qū)別的。從而得到新的劃分:({0},{1},{2,3}),因此,(2)空的正確答案為B。 重復(fù)子集劃分步驟,發(fā)現(xiàn)新的狀態(tài)無法再次劃分。 所以,本題中2,3狀態(tài)可以消除3狀態(tài),得到新的狀態(tài)轉(zhuǎn)換圖如圖3-2所示。 由圖3-2可知終態(tài)2可以轉(zhuǎn)換為正規(guī)表達(dá)式(a|b)*,同時(shí)必
5、須輸入連續(xù)2個(gè)b字符,才能完成0狀態(tài)到終態(tài)2的轉(zhuǎn)換,所以結(jié)果正規(guī)表達(dá)式必為形如“...bb(a|b)*”的字符串。又因?yàn)?和1之間由b和a輪回輸入,可以表示為(ba)*,同時(shí),狀態(tài)0上輸入a又回到自身,可以表示為a*。因此,(1)空的正確答案應(yīng)該為(a*b*)*bb(a|b)*,根據(jù)正規(guī)式之間的代數(shù)性質(zhì),(a*b*)*bb(a|b)*與(a|b)*bb(a*b*)*等價(jià)。 ● 編譯的優(yōu)化工作對于下面程序段構(gòu)造的控制流程圖有__(15)__個(gè)基本塊。 A:=0 j:=100 i:=1loop1: B:=j+1 C:=B+I A:=A+C if i=100 goto loop2 i
6、:=i+1 Goto loop1 loop2: write A halt (15)A.1 B.2 C.3 D. 4 正確答案:D 解析:基本塊劃分的3個(gè)步驟: (1)滿足下列3個(gè)條件之一的任一語句可充當(dāng)入口。 ①程序的第一個(gè)語句; ②能由條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句轉(zhuǎn)移到的語句; ③緊跟在條件轉(zhuǎn)移語句后面的語句。 (2)根據(jù)(1)求出的每一入口語句,構(gòu)造其所屬的基本塊。 ①由該人口語句到另一入口語句(不包括該入口語句)之間的語句序列; ②由該人口語句到一轉(zhuǎn)移語句(包括該轉(zhuǎn)移語句)之間的語句序列; ③由該人口語句到一停轉(zhuǎn)移語句(包括該轉(zhuǎn)移語句)之間的語句
7、序列。 (3)凡是未被納入某一基本塊中的語句,都是程序中控制流程無法到達(dá)的語句,從而也是不會被執(zhí)行到的語句,可以從程序中刪除。 在本題中,根據(jù)程序求解。 (1)確定入口。 A:=100入口 j:=100 i:=1 loop1:B:=j+1 入口 C:=B+I A:=A+C if i=100 goto loop2 i:=i+1 入口 goto 100p1 100p2:write A 入 口 halt停語句 (2)確定基本塊。 基本塊1A:=00 入口 j:=100 i:=1 基本塊2loop1:B:=j+1 入口 C:=B+I
8、A:=A+C if i=100 goto 100p2 基本塊3 i:=i+1 入口 goto loop1 基本塊4loop2:write A 入口 halt 停語句 (3)確定可刪除語句。 沒有無法到達(dá)的語句。 ● 文法G[S]:S→xSx|y 所描述的語言是__(16)__ (n≥0)。 (16)A.(xyx)n B.xyxn C.xynx D.xnyxn 正確答案:D 解析:正規(guī)文法到正規(guī)式的轉(zhuǎn)換規(guī)則如下: 在本題中,推導(dǎo)過程如下: S->xSx->xyx->x2Sx2->x2yx2-> x3Sx3->x3yx3->...->
9、xnSxn->xnyxn 得出生成式的規(guī)律是:兩個(gè)x串中間只有一個(gè)y,同時(shí)兩邊的x串等長。 ●某一非確定性有限自動機(jī)(NFA)的狀態(tài)轉(zhuǎn)換圖如下圖所示,與該NFA 等價(jià)的正規(guī)式是_(28)_,與該NFA 等價(jià)的DFA 是_(29)_。A (28) A.0*|(0|1)0 B.(0|10)* C.0*((011)0)* D.0*(10)* 正確答案:B 解析:根據(jù)分析題目中給出的狀態(tài)轉(zhuǎn)換圖可知,該NFA可識別空串以及任意數(shù)目0組成的串,但若出現(xiàn)1,則其后至少要有1個(gè)0才能到達(dá)終態(tài),因此,該自動機(jī)識別的串等價(jià)于正規(guī)式(0|10)*。 ●某一確定性有限自動機(jī)(DFA)的狀態(tài)轉(zhuǎn)
10、換圖如下圖所示,令d=0|1|2|…|9, 則以下字符串中,不能被該DFA 接受的是____(28)____,與該DFA 等價(jià)的正規(guī)式是_(29)___。(其中,ε表示空字符) ① 3857 ② 1.2E+5 ③ -123 . ④ .576E10 (28)A. ①②③ B.①②④ C.②③④ D.①②③④ (29)A.(-d|d)d*E(-d|d)d*|(-d|d)*.d*(ε|E(-d|d)d*) B.(-d|d)dd*(.|ε)d*|(ε|E(-d|d)d*) C.(-|d)dd*E(-|d)d*|(-d|d)dd*.d*(ε|E(-|d)d*) D.(-d|d)dd*E(
11、-d|d)d*|(-d|d|)dd*.d*(ε|E(-dd*|dd*)) 正確答案:B 解析:有限自動機(jī)也稱為有窮狀態(tài)自動機(jī),是一種數(shù)學(xué)機(jī)器模型,基本形式有非確定有限自動機(jī)(NFA)和確定的有限自動機(jī)(DFA),并且每一個(gè)NFA都有與其等價(jià)的DPA。有窮狀態(tài)自動機(jī)的物理模型如下圖所示。 [*] 一個(gè)DFA可以用狀態(tài)轉(zhuǎn)換圖直觀的方式。狀態(tài)轉(zhuǎn)換圖是一種有向圖。DFA中的每個(gè)狀態(tài)對應(yīng)轉(zhuǎn)換圖中的一個(gè)節(jié)點(diǎn),從外部引入弧的節(jié)點(diǎn)表示開始節(jié)點(diǎn),雙圈節(jié)點(diǎn)表示終態(tài);DFA中的每個(gè)狀態(tài)轉(zhuǎn)換對應(yīng)圖中的一條有向弧,若轉(zhuǎn)換關(guān)系為/(A,a)=Q,則該有向弧從節(jié)點(diǎn)A出發(fā),進(jìn)入節(jié)點(diǎn)Q,字符a是弧上的標(biāo)記。有窮狀態(tài)自動
12、機(jī)識別字符串的過程為:初始時(shí),機(jī)器處于起始狀態(tài)(題圖中節(jié)點(diǎn)。表示初始狀態(tài))。讀取一個(gè)輸入符號,并進(jìn)行相應(yīng)的狀態(tài)轉(zhuǎn)移,直到輸入串結(jié)束或找不到相應(yīng)的狀態(tài)轉(zhuǎn)移時(shí)為止。根據(jù)題目終給定的自動機(jī),識別3857、1.2E+5、-123.、.576E10的過程分別如下。 [*] 分析題中給定的有窮狀態(tài)自動機(jī),可知該自動機(jī)識別以下形式的數(shù)值:帶小數(shù)部分的十進(jìn)制表示形式和以尾數(shù)、指數(shù)表示的數(shù)值形式。其中,從初態(tài)0到達(dá)終態(tài)5所識別的是帶小數(shù)點(diǎn)的以十進(jìn)制數(shù)值表示形式的字符串,小數(shù)點(diǎn)后可以沒有數(shù)字,也可以有若干個(gè)數(shù)字,而小數(shù)點(diǎn)之前的整數(shù)部分可以不帶符號,也可以帶負(fù)號,其正規(guī)式為“(-d|d)d*.d*。當(dāng)數(shù)值的表示
13、含有指數(shù)部分時(shí),指數(shù)部分是不帶符號(表示正數(shù))或帶負(fù)號的整數(shù)形式,因此該部分的正規(guī)式為“E(-d|d)d*”。 ●對于以下編號為①、②、③的正規(guī)式,正確的說法是___(30)___。 ① (aa*|ab) *b ② (a|b) *b ③ ((a|b) *|aa) *b(30) A.正規(guī)式①、②等價(jià)B.正規(guī)式①、③等價(jià) C.正規(guī)式②、③等價(jià)D.正規(guī)式①、②、③互不等價(jià) 正確答案:C 解析:由于正規(guī)式①產(chǎn)生的字符串為a*b或ab*b,②產(chǎn)生的字符串為a*b或b*b,③產(chǎn)生的字符串為a*b或b*b,故②③等價(jià)。 ● 開發(fā)專家系統(tǒng)時(shí),通過描述事實(shí)和規(guī)則由模式匹配得出結(jié)論,這種情況下適用的
14、開發(fā)語言是(19)。 (19)A.面向?qū)ο笳Z言B.函數(shù)式語言C.過程式語言D.邏輯式語言 正確答案:D 本題考查程序語言基本知識。函數(shù)式程序設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)本質(zhì)上是表,而函數(shù)又可以作為值出現(xiàn)在表中,因此函數(shù)式程序的控制結(jié)構(gòu)取決于函數(shù),以及函數(shù)的定義和調(diào)用。函數(shù)式語言主要用于符號數(shù)據(jù)處理,如微分和積分演算、數(shù)理邏輯、游戲推演以及人工智能等其他領(lǐng)域。用邏輯式程序設(shè)計(jì)語言編寫程序不需要描述具體的解題過程,只需要給出一些必要的事實(shí)和規(guī)則。這些規(guī)則是解決問題的方法的規(guī)范說明,根據(jù)這些事實(shí)和規(guī)則,計(jì)算機(jī)利用謂詞邏輯,通過演繹推理得到求解問題的執(zhí)行序列。這種語言主要用在人工智能領(lǐng)域,也應(yīng)用在自然語言處理
15、、數(shù)據(jù)庫查詢、算法描述等方面,尤其適合于作為專家系統(tǒng)的開發(fā)工具 ● 高級程序設(shè)計(jì)語言中用于描述程序中的運(yùn)算步驟、控制結(jié)構(gòu)及數(shù)據(jù)傳輸?shù)氖? (20) 。 (20)A.語句B.語義C.語用D.語法 正確答案:A 解析:本題考查程序語言的基本成分。程序設(shè)計(jì)語言的語法是語言的外觀。給出語言的語法意味著給出語句、聲明和其他語言結(jié)構(gòu)的書寫規(guī)則。語義則表示不同的語法結(jié)構(gòu)的含義。在程序語言的手冊中,語言的描述都是圍繞著語法結(jié)構(gòu)展開的。通常,先給出各種語句結(jié)構(gòu)的語法,然后給出對應(yīng)該結(jié)構(gòu)的語義以描述內(nèi)在含義。語用是關(guān)于程序與使用者之間的關(guān)系。在高級程序設(shè)計(jì)語言中,語句用于描述程序中的運(yùn)算步驟、控制結(jié)構(gòu)及數(shù)
16、據(jù)傳輸。 ● 對于下面的文法G[S], (44) 是其句子(從S 出發(fā)開始推導(dǎo))。 G[S]:S→M|(S,M) M→P|MP P→a|b|c|…|x|x|z (44)A.((a,F)) B.((fac,bb),g) C.(abc) D.(c,(da)) 選B. S=>(S,M)=>((S,M),M)=>((M,M),M)=>((MP,M),M)=>((MPP,M),M)=>((PPP,M),M)=>((fPP,M),M)=>((faP,M),M)=>((fac,M),M)=>((fac,MP),M)=>((fac,PP),M)=>((fac,bb),M)=>((fac,bb),g)
17、. ● 與逆波蘭式ab+ -c*d-對應(yīng)的中綴表達(dá)式是(45) 。 (45)A.a(chǎn)-b-c*d B.-(a+b)*c-d C.-a+b*c-d D.(a+b)*(-c-d) ● 下面的C 程序代碼段在運(yùn)行中會出現(xiàn)(46) 錯(cuò)誤。 int i=0; while(i<10); {i=i+l;} (46)A.語法B.類型不匹配C.變量定義D.動態(tài)語義 ● “通過指明一系列可執(zhí)行的運(yùn)算及運(yùn)算的次序來描述計(jì)算過程”是(19)語言的特點(diǎn)。 (19)A.邏輯式B.函數(shù)式C.交互式D.命令式(或過程式) 正確答案:D 解析:過程式(或命令式)語言是基于動作的語言,在這種語言中,計(jì)算被看
18、成是動作的序列。因此,通過指明一列可執(zhí)行的運(yùn)算及運(yùn)算的次序來描述計(jì)算過程是命令式語言的特點(diǎn)。邏輯式語言是一類以形式邏輯為基礎(chǔ)的語言。函數(shù)式語言以γ-演算為基礎(chǔ)。 ● “X=(A+B) (C - D/E)”的后綴式表示為(20)。 (20)A.XAB+CDE/-= B.XAB-C-DE/= C.XAB+CDE-/= D.XAB-CD-E/= ● 下圖是一有限自動機(jī)的狀態(tài)轉(zhuǎn)換圖,該自動機(jī)所識別語言的特點(diǎn)是(45),等價(jià)的正規(guī)式為(46)。 (45)A.由符號a、b 構(gòu)成且包含偶數(shù)個(gè)a 的串 B.由符號a、b 構(gòu)成且開頭和結(jié)尾符號都為a 的串 C.由符號a、b 構(gòu)成的任意串 D.
19、由符號a、b 構(gòu)成且b 的前后必須為a 的串 (46)A.(a∣b)*(aa)* B.a(chǎn)(a∣b)*a C.(a∣b)* D.a(chǎn)(ba)*a 正確答案:B 解析:本題考查有限自動機(jī)的基本運(yùn)算。在有限自動機(jī)的狀態(tài)轉(zhuǎn)換圖中,每一個(gè)結(jié)點(diǎn)代表一個(gè)狀態(tài),其中雙圈是終態(tài)結(jié)點(diǎn)。對于字符串ω,若存在一條從初態(tài)結(jié)點(diǎn)到某一終止?fàn)顟B(tài)結(jié)點(diǎn)的路徑,且這條路徑上所有弧的標(biāo)記符連接成的字符串等于ω,則稱①可由DFA M識別(接收或讀出)。若一個(gè) DFA M的初態(tài)結(jié)點(diǎn)同時(shí)又是終態(tài)結(jié)點(diǎn),則空字ε可由該DFA識別(或接收)。DFA M所能識別的語言L(M)={ω|ω①是從M的初態(tài)到終態(tài)的路徑上的弧上標(biāo)記所形成的串}。分析題
20、中給出的自動機(jī):從初態(tài)0出發(fā),識別一個(gè)符號a后進(jìn)入狀態(tài)1,在狀態(tài)1可識別出任意個(gè)a或(和)任意個(gè)b,再識別出一個(gè)a而到達(dá)終態(tài)2。顯然,該自動機(jī)識別的語言特點(diǎn)是“由a開頭由a結(jié)尾,期間的a、b任意排列”。用正規(guī)式表示為“a(a|b)*a”。 ● 表達(dá)式“(a+b)* (c-d)”的后綴表示為(48)。 (48)A. ab+cd-* B. abcd+-* C. ab+*cd- D. abcd*+- ● 函數(shù)t()、f()的定義如下所示,若調(diào)用函數(shù)t 時(shí)傳遞給x 的值為3,并且調(diào)用函數(shù)f()時(shí),第一個(gè)參數(shù)采用傳值(call by value)方式,第二個(gè)參數(shù)采用傳引用(call by refe
21、rence)方式,則函數(shù)t 的返回值為(49) 。 (49)A. 35 B. 24 C. 22 D. 11 ● 程序設(shè)計(jì)語言中(50) 。 (50)A. while 循環(huán)語句的執(zhí)行效率比do-while 循環(huán)語句的執(zhí)行效率高 B. while 循環(huán)語句的循環(huán)體執(zhí)行次數(shù)比循環(huán)條件的判斷次數(shù)多1,而do-while 語句的循環(huán)體執(zhí)行次數(shù)比循環(huán)條件的判斷次數(shù)少1 C. while 語句的循環(huán)體執(zhí)行次數(shù)比循環(huán)條件的判斷次數(shù)少1,而do-while 語句的循環(huán)體執(zhí)行次數(shù)比循環(huán)條件的判斷次數(shù)多1 D. while 語句的循環(huán)體執(zhí)行次數(shù)比循環(huán)條件的判斷次數(shù)少1,而do-while 語句的循環(huán)
22、體執(zhí)行次數(shù)等于循環(huán)條件的判斷次數(shù) ● 給定C 語言的數(shù)據(jù)結(jié)構(gòu) struct T { int w; union T { char c; int i; double d; } U; }; 假設(shè)char 類型變量的存儲區(qū)大小是1 字節(jié),int 類型變量的存儲區(qū)大小是4 字節(jié),double 類型變量的存儲區(qū)大小是8 字節(jié),則在不考慮字對齊方式的情況下,為存儲一個(gè)struct T 類型變量所需要的存儲區(qū)域至少應(yīng)為(15) 字節(jié)。 (15)A. 4 B. 8 C. 12 D. 17 正確答案:C 解析:在不考慮字對齊規(guī)則的情況下,C語言中一個(gè)結(jié)構(gòu)體變量的存儲區(qū)大小就是其所有成員所需存儲區(qū)
23、大小之和,一個(gè)聯(lián)合體變量的存儲區(qū)大小就是其各成員所需存儲區(qū)大小中的最大者。因此題目中給定的聯(lián)合體union T變量需要的存儲區(qū)大小就是存儲一個(gè) double類型變量的大小(即8字節(jié)),struct T類型變量的存儲區(qū)最小應(yīng)為int 類型成員w存儲區(qū)大小(4字節(jié))與union T類型成員U的存儲區(qū)大小之和,即12字節(jié)。 ● 在過程式程序設(shè)計(jì)(①)、數(shù)據(jù)抽象程序設(shè)計(jì)(②)、面向?qū)ο蟪绦蛟O(shè)計(jì)(③)、泛型(通用)程序設(shè)計(jì)(④)中,C++ 語言支持(16) ,C 語言支持(17) 。 (16)A. ① B. ②③ C. ③④ D. ①②③④ (17)A. ① B. ①③ C. ②③ D. ①②③④
24、 ● C 語言是一種(18) 語言。 (18)A. 編譯型B. 解釋型C. 編譯、解釋混合型D. 腳本 正確答案:A 編譯型語言指用該語言編寫的程序在執(zhí)行前,需要由相應(yīng)的編譯器將源程序翻譯為目標(biāo)代碼程序,然后在目標(biāo)機(jī)器上運(yùn)行目標(biāo)代碼程序。解釋型語言指用該語言編寫的程序無需編譯為目標(biāo)代碼,即可執(zhí)行。對于解釋型語言,都有相應(yīng)的解釋器,負(fù)責(zé)檢查源程序的語法,進(jìn)行語義分析,通常采用邊翻譯邊執(zhí)行的方式。對于C語言而言,一個(gè)C源程序必須由編譯器將其翻譯為目標(biāo)代碼,才能在目標(biāo)機(jī)上運(yùn)行,因此,它是編譯型語言。 ● 若程序運(yùn)行時(shí)系統(tǒng)報(bào)告除數(shù)為0,這屬于(20)錯(cuò)誤。 (20)A. 語法B. 語用C.
25、 語義D. 語境 ● 集合L ={amb m m ≥ 0} (21)。 (21)A.可用正規(guī)式“a *b *”表示 B.不能用正規(guī)式表示,但可用非確定的有限自動機(jī)識別 C.可用正規(guī)式“a mb m ”表示 D.不能用正規(guī)式表示,但可用上下文無關(guān)文法表示 ● 表達(dá)式“X = A + B (C ? D )/ E”的后綴表示形式可以為(22) (運(yùn)算符優(yōu)先級相同時(shí),遵循左結(jié)合的原則)。 (22)A. XAB + CDE/?= B. XA+BC?DE/= C. XABCD?E/+= D. XABCDE+?/= ● 在軟件開發(fā)中, (29) 不能用來描述項(xiàng)目開發(fā)的進(jìn)度安排。在其他三
26、種圖中,可用(30) 動態(tài)地反映項(xiàng)目開發(fā)進(jìn)展情況。 (29)A. 甘特圖B. PERT 圖C. PERT/CPM 圖D. 魚骨圖 (30)A. 甘特圖B. PERT 圖C. PERT/CPM 圖D. 魚骨圖 ● 選擇軟件開發(fā)工具時(shí),應(yīng)考慮功能、(31) 、穩(wěn)健性、硬件要求和性能、服務(wù)和支持。 (31)A. 易用性B. 易維護(hù)性C. 可移植性D. 可擴(kuò)充性 ● 內(nèi)聚性和耦合性是度量軟件模塊獨(dú)立性的重要準(zhǔn)則,軟件設(shè)計(jì)時(shí)應(yīng)力求(32) 。 (32)A. 高內(nèi)聚,高耦合B. 高內(nèi)聚,低耦合 C. 低內(nèi)聚,高耦合D. 低內(nèi)聚,低耦合 ● 對于如下的程序流程,當(dāng)采用語句覆蓋法設(shè)計(jì)測試案
27、例時(shí),至少需要設(shè)計(jì)(34)個(gè)測試案例。 (34)A. 1 B. 2 C. 3 D. 4 解析:語句覆蓋是一種設(shè)計(jì)測試案例的方法,它要求對于設(shè)計(jì)的測試案例,必須使得程序的每一條可執(zhí)行語句至少執(zhí)行一次。對于圖7-5所示的程序流程圖可設(shè)計(jì)如下測試案例。 案例1:X=1,Y=2 此時(shí)執(zhí)行語句序列為:X>0→Y=Y-X→Y>0→X=1。 案例2:X=-3,Y=2 此時(shí)執(zhí)行語句序列為:X>0→Y=Y+X→Y>0→X=-1。 可見,只需設(shè)計(jì)兩個(gè)測試案例即可使得程序的每條可執(zhí)行語句至少執(zhí)行一次。 ● 正則表達(dá)式1*(0|01)*表示的集合元素的特點(diǎn)是(48) 。 (48)A.
28、長度為奇數(shù)的0、1 串B. 開始和結(jié)尾字符必須為1 的0、1 串 C. 串的長度為偶數(shù)的0、1 串D. 不包含子串011 的0、1 串 分析:1* <=>1*0* & 1* * * (0|01) (01) 可得知得不出長度的奇偶性,也不能判斷開始和結(jié)尾的字符,通過排除法可得到,不包含字串011的0、1串有可能 ● 設(shè)某程序中定義了全局整型變量x 和r,且函數(shù)f()的定義如下所示,則在語句“x = r*r +1 ;”中(49) 。 int f(int r) { int x; x = r*r +1 ; return x; } (49)A. x 和r 均是全局變量B. x 是
29、全局變量、r 是形式參數(shù) C. x 是局部變量、r 是形式參數(shù)D. x 是局部變量、r 是全局變量 ● 程序語言的大多數(shù)語法現(xiàn)象可用上下文無關(guān)文法描述。對于一個(gè)上下文無關(guān)文法G=(N,T,P,S),其中N 是非終結(jié)符號的集合,T 是終結(jié)符號的集合,P 是產(chǎn)生式集合,S 是開始符號。令集合V= N∪T,那么G 所描述的語言是(50) 的集合。 (50)A. 從S 出發(fā)推導(dǎo)出的包含V 中所有符號的串 B. 從S 出發(fā)推導(dǎo)出的僅包含T 中符號的串 C. N 中所有符號組成的串D. T 中所有符號組成的串 正確答案:B 解析:本題考查程序語言的基礎(chǔ)知識。一個(gè)文法定義的語言是終結(jié)符號串的集
30、合,這些終結(jié)符號串應(yīng)能從文法的起始符號出發(fā)推導(dǎo)出來。 ● 在軟件設(shè)計(jì)和編碼過程中,采?。?) 的做法將使軟件更加容易理解和維護(hù)。 (7)A. 良好的程序結(jié)構(gòu),有無文檔均可B. 使用標(biāo)準(zhǔn)或規(guī)定之外的語句 C. 編寫詳細(xì)正確的文檔,采用良好的程序結(jié)構(gòu) D. 盡量減少程序中的注釋 ● 軟件文檔按照其產(chǎn)生和使用的范圍可分為開發(fā)文檔、管理文檔和用戶文檔。其中開發(fā)文檔不包括(8) 。 (8)A. 軟件需求說明B. 可行性研究報(bào)告C. 維護(hù)修改建議D. 項(xiàng)目開發(fā)計(jì)劃 正確答案:C 解析:本題考查軟件文檔的分類和作用。軟件文檔在軟件開發(fā)過程和運(yùn)行維護(hù)中起著重要作用,比如文件可以提高軟件開發(fā)過程
31、的能見度,提高開發(fā)效率,便于協(xié)調(diào)軟件的開發(fā)、使用和維護(hù),另外也可對軟件的運(yùn)維和培訓(xùn)提供相關(guān)信息,便于各類相關(guān)人員之間進(jìn)行交流。按照文檔產(chǎn)生和使用范圍,軟件文件可分為開發(fā)文檔、管理文檔和用戶文檔,其中開發(fā)文檔產(chǎn)生于軟件開發(fā)過程,是前一階段的工作成果體現(xiàn),也是后一階段工作的依據(jù),用戶文檔是為用戶準(zhǔn)備的軟件使用、操作、維護(hù)的資料。 ● 軟件維護(hù)成本在軟件成本中占較大比重。為降低維護(hù)的難度,可采取的措施有(9) 。 (9)A. 設(shè)計(jì)并實(shí)現(xiàn)沒有錯(cuò)誤的軟件B. 限制可修改的范圍 C. 增加維護(hù)人員數(shù)量 D. 在開發(fā)過程中就采取有利于維護(hù)的措施,并加強(qiáng)維護(hù)管理 ● 關(guān)于匯編語言,以下敘述中正確的是
32、(20) 。 (20)A. 匯編語言源程序可以直接在計(jì)算機(jī)上運(yùn)行 B. 將匯編語言源程序轉(zhuǎn)換成目標(biāo)程序的軟件稱為解釋程序 C. 在匯編語言程序中,不能定義符號常量 D. 將匯編語言源程序翻譯成機(jī)器語言程序的軟件稱為匯編程序 ● 對高級語言源程序進(jìn)行編譯時(shí),可發(fā)現(xiàn)源程序中的(21) 錯(cuò)誤。 (21)A. 堆棧溢出B. 變量未定義C. 指針異常D. 數(shù)組元素下標(biāo)越界 ● 編譯器對高級語言源程序的處理過程可以劃分為詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成等幾個(gè)階段,其中, (22) 并不是每種編譯器都必需的。 (22)A. 詞法分析和語法分析B. 語義分析和
33、中間代碼生成 C. 中間代碼生成和代碼優(yōu)化D. 代碼優(yōu)化和目標(biāo)代碼生成 ● 下列敘述中錯(cuò)誤的是(23) 。 (23)A. 面向?qū)ο蟪绦蛟O(shè)計(jì)語言可支持過程化的程序設(shè)計(jì) B. 給定算法的時(shí)間復(fù)雜性與實(shí)現(xiàn)該算法所采用的程序設(shè)計(jì)語言無關(guān) C. 與匯編語言相比,采用腳本語言編程可獲得更高的運(yùn)行效率 D. 面向?qū)ο蟪绦蛟O(shè)計(jì)語言不支持對一個(gè)對象的成員變量進(jìn)行直接訪問 ● 編譯程序?qū)Ω呒壵Z言源程序進(jìn)行翻譯時(shí),需要在該程序的地址空間中為變量指定地址,這種地址稱為(20)。 (20)A.邏輯地址B. 物理地址C. 接口地址D. 線性地址 ● 程序設(shè)計(jì)語言一般都提供多種循環(huán)語句,例如實(shí)現(xiàn)先判斷循環(huán)
34、條件再執(zhí)行循環(huán)體的while 語句和先執(zhí)行循環(huán)體再判斷循環(huán)條件的do-while 語句。關(guān)于這兩種循環(huán)語句,在不改變循環(huán)體的條件下, ( 21 )是正確的。 (21)A. while 語句的功能可由do-while 語句實(shí)現(xiàn) B. do-while 語句的功能可由while 語句實(shí)現(xiàn) C. 若已知循環(huán)體的次數(shù),則只能使用while 語句 D. 循環(huán)條件相同時(shí),do-while 語句的執(zhí)行效率更高 ● 表達(dá)式(a-b)*(c+5)的后綴式是(22) 。 (22)A. a b c 5 + * - B. a b – c + 5 * C. a b c - * 5 + D. a b- c
35、 5 + * ● 給定文法G[S]及其非終結(jié)符A,F(xiàn)IRST(A)定義為:從A 出發(fā)能推導(dǎo)出的終結(jié)符號的集合(S 是文法的起始符號,為非終結(jié)符)。對于文法G[S]: S→[L] | a L→L, S| S 其中,G[S]包含的四個(gè)終結(jié)符號分別為:a , [ ]則FIRST(S)的成員包括(48) 。 (48)A. a B. a、[ C. a、[和] D. a、[、]和, 正確答案:B 解析:本題考查程序語言基礎(chǔ)知識。 程序語言的語法可由上下文無關(guān)文法表示,合法的程序可看作是由該文法推導(dǎo)得到。 對于文法G[S],從S出發(fā)推導(dǎo)出[a,a]和a的過程可表示為: S=>[L]
36、=>[L,S]=>[S,S]=>[a,S]=>[a,a] S=>a 從S出發(fā)可推導(dǎo)出以a或[開始的符號串,因此FIRST(S)的成員包括a、[。 ● 高級語言源程序的編譯過程分若干個(gè)階段,分配寄存器屬于(49) 階段的工作。 (49)A. 詞法分析B. 語法分析C. 語義分析D. 代碼生成 ● 設(shè)某上下文無關(guān)文法如下: S→11 | 1001 | S0 |SS,則該文法所產(chǎn)生的所有二進(jìn)制字符串都具有的特點(diǎn)是(50) 。 (50)A. 能被3 整除B. 0、1 出現(xiàn)的次數(shù)相等 C. 0 和1 的出現(xiàn)次數(shù)都為偶數(shù)D. 能被2 整除 ● 函數(shù)調(diào)用時(shí),基本的參數(shù)傳遞方式有傳值與傳地
37、址兩種, (20) 。 (20)A. 在傳值方式下,形參將值傳給實(shí)參 B. 在傳值方式下,實(shí)參不能是數(shù)組元素 C. 在傳地址方式下,形參和實(shí)參間可以實(shí)現(xiàn)數(shù)據(jù)的雙向傳遞 D. 在傳地址方式下,實(shí)參可以是任意的變量和表達(dá)式 ● 已知某高級語言源程序A 經(jīng)編譯后得到機(jī)器C 上的目標(biāo)程序B,則(21) 。 (21)A. 對B 進(jìn)行反編譯,不能還原出源程序A B. 對B 進(jìn)行反匯編,不能得到與源程序A 等價(jià)的匯編程序代碼 C. 對B 進(jìn)行反編譯,得到的是源程序A 的變量聲明和算法流程 D. 對A 和B 進(jìn)行交叉編譯,可以產(chǎn)生在機(jī)器C 上運(yùn)行的動態(tài)鏈接庫 正確答案:A 解析:本題考查
38、程序語言方面的基礎(chǔ)知識。編譯是將高級語言源程序翻譯成機(jī)器語言程序(匯編形式或機(jī)器代碼形式),反編譯是編譯的逆過程。反編譯通常不能把可執(zhí)行文件還原成高級語言源代碼,只能轉(zhuǎn)換成功能上等價(jià)的匯編程序。 ● 下面關(guān)于程序語言的敘述,錯(cuò)誤的是(22) 。 (22)A. 腳本語言屬于動態(tài)語言,其程序結(jié)構(gòu)可以在運(yùn)行中改變 B. 腳本語言一般通過腳本引擎解釋執(zhí)行,不產(chǎn)生獨(dú)立保存的目標(biāo)程序 C. php、JavaScript 屬于靜態(tài)語言,其所有成分可在編譯時(shí)確定 D. C 語言屬于靜態(tài)語言,其所有成分可在編譯時(shí)確定 ● 下圖所示有限自動機(jī)的特點(diǎn)是(48) 。 (48)A. 識別的0、1 串是
39、以0 開頭且以1 結(jié)尾 B. 識別的0、1 串中1 的數(shù)目為偶數(shù) C. 識別的0、1 串中0 后面必須是1 D. 識別的0、1 串中1 不能連續(xù)出現(xiàn) ● 由a、b 構(gòu)造且僅包含偶數(shù)個(gè)a 的串的集合用正規(guī)式表示為(49) 。 (49)A. (a*a)*b* B. (b* (ab*a)*)* C. (a* (ba*)*b)* D. (a|b)* (aa)* 正確答案:B 解析:在正規(guī)式中,符號*表示重復(fù)若干次(包括O次),因此正規(guī)式“(a*a)*b*”中的表達(dá)式“(a+a)*”不能保證有偶數(shù)個(gè)a。同理,“(a*(ba*)*b)*”和“(a I b)*(aa)*”中對a的個(gè)數(shù)也沒有限制,
40、而在“(ab * a)*”中可以確保a的出現(xiàn)為偶數(shù)個(gè)。 ● 設(shè)某語言的語法規(guī)則用上下文無關(guān)文法G=(N,T,P,S)表示,其中N 是非終結(jié)符號的集合,T 是終結(jié)符號的集合,P 是產(chǎn)生式集合,S 是開始符號,令V=N∪T,那么符合該語言的句子是(50) 。 (50)A. 從S 出發(fā)推導(dǎo)的、僅包含T 中符號的符號串 B. 從N 中符號出發(fā)推導(dǎo)的、僅包含T 中符號的符號串 C. 從S 出發(fā)推導(dǎo)的、包含V 中符號的符號串 D. 從N 中符號出發(fā)推導(dǎo)的、包含V 中符號的符號串 ● 許多程序設(shè)計(jì)語言規(guī)定,程序中的數(shù)據(jù)都必須具有類型,其作用不包括(20) 。 (20)A. 便于為數(shù)據(jù)合理分
41、配存儲單元 B. 便于對參與表達(dá)式計(jì)算的數(shù)據(jù)對象進(jìn)行檢查 C. 便于定義動態(tài)數(shù)據(jù)結(jié)構(gòu)D. 便于規(guī)定數(shù)據(jù)對象的取值范圍及能夠進(jìn)行的運(yùn)算 正確答案:D 解析:變量是用來存儲值的所在處,它們有名字和數(shù)據(jù)類型。變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲到計(jì)算機(jī)的內(nèi)存中。在聲明變量時(shí)也可以指定它的數(shù)據(jù)類型。所有變量都具有數(shù)據(jù)類型,以決定能夠存儲哪類數(shù)據(jù)。 ● 以下關(guān)于C/C++語言指針變量的敘述中,正確的是(21) 。 (21)A. 指針變量可以是全局變量也可以是局部變量 B. 必須為指針變量與指針?biāo)赶虻淖兞糠峙湎嗤笮〉拇鎯臻g C. 對指針變量進(jìn)行算術(shù)運(yùn)算是沒有意義的 D. 指
42、針變量必須由動態(tài)產(chǎn)生的數(shù)據(jù)對象來賦值 ● 將高級語言源程序翻譯為機(jī)器語言程序的過程中常引入中間代碼。以下關(guān)于中間代碼的敘述中,錯(cuò)誤的是(22) 。 (22)A. 不同的高級程序語言可以產(chǎn)生同一種中間代碼 B. 使用中間代碼有利于進(jìn)行與機(jī)器無關(guān)的優(yōu)化處理 C. 使用中間代碼有利于提高編譯程序的可移植性 D. 中間代碼與機(jī)器語言代碼在指令結(jié)構(gòu)上必須一致 正確答案:D 試題(22分析 本題考查程序語言基礎(chǔ)知識。 “中間代碼”是一種簡單且含義明確的記號系統(tǒng),與具體的機(jī)器無關(guān),可以有若干種形式??梢詫⒉煌母呒壋绦蛘Z言翻譯成同一種中間代碼。由于與具體機(jī)器無關(guān),使用中間代碼有利于
43、進(jìn)行與機(jī)器無關(guān)的優(yōu)化處理,以及提高編譯程序的可移植性。 ● 以下關(guān)于編譯系統(tǒng)對某高級語言進(jìn)行翻譯的敘述中,錯(cuò)誤的是(48) 。 (48)A. 詞法分析將把源程序看作一個(gè)線性字符序列進(jìn)行分析 B. 語法分析階段可以發(fā)現(xiàn)程序中所有的語法錯(cuò)誤 C. 語義分析階段可以發(fā)現(xiàn)程序中所有的語義錯(cuò)誤 D. 目標(biāo)代碼生成階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)相關(guān) ● 若一個(gè)程序語言可以提供鏈表的定義和運(yùn)算,則其運(yùn)行時(shí)的( 49) 。 (49)A. 數(shù)據(jù)空間適合采用靜態(tài)存儲分配策略 B. 數(shù)據(jù)空間必須采用堆存儲分配策略 C. 指令空間需要采用棧結(jié)構(gòu)D. 指令代碼必須放入堆區(qū) 正確答案:B 試題(49分析 本題考查程序語言基礎(chǔ)知識。 鏈表中的結(jié)點(diǎn)空間需要程序員根據(jù)需要申請和釋放,因此,數(shù)據(jù)空間應(yīng)采用堆存儲分配策略。 ● 由某上下文無關(guān)文法M[S]推導(dǎo)出某句子的分析樹如下圖所示,則錯(cuò)誤的敘述是( 50) 。 (50)A. 該文法推導(dǎo)出的句子必須以“a”開頭 B. acabcbdcc 是該文法推導(dǎo)出的一個(gè)句子 C. “S->aAcB”是該文法的一個(gè)產(chǎn)生式 D. a、b、c、d 屬于該文法的終結(jié)符號集 正確答案:A 解析:程序語言的語法可用上下文無關(guān)文法表示,合法的程序可看作是由該文法推導(dǎo)得到的。
- 溫馨提示:
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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XX公司班組凝聚力培訓(xùn)班組長怎樣提升班組的凝聚力和執(zhí)行力
- 2025經(jīng)濟(jì)工作這樣干簡要概括的20個(gè)知識點(diǎn)
- 團(tuán)隊(duì)管理橫向領(lǐng)導(dǎo)力培訓(xùn)打破傳統(tǒng)界限共同引領(lǐng)變革
- XX學(xué)校班主任期末工作總結(jié)用愛心來做事用感恩的心做人
- 交通局未來工作規(guī)劃管理優(yōu)化交通安全與管理
- XX地區(qū)民政局新年工作規(guī)劃工作目標(biāo)與方工作重點(diǎn)與舉措工作實(shí)施與保障
- XX地區(qū)交通局工作總結(jié)匯報(bào)工作概述工作成果存在問題工作計(jì)劃
- XX中小學(xué)除夕年夜飯主題班會
- 企業(yè)經(jīng)營管理企業(yè)的生存和發(fā)展
- XX公司辦公樓消防應(yīng)急疏散演練方案
- 常見氣體爆炸極限
- XX廠消防應(yīng)急預(yù)案演練方案
- 滅火和應(yīng)急疏散預(yù)案
- XX公司應(yīng)消防演練方案(四)
- 家庭消防知識集錦