


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、二級C語言真題2013年09月-(2)1. (總分:100.00,做題時間:90分鐘)一、選擇題(總題數(shù):40,分?jǐn)?shù):40.00)設(shè)循環(huán)隊列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過一系列入隊與退隊運算后,front=15,rear=20?,F(xiàn)要在該循環(huán)隊列中尋找最大值的元素,最壞情況下需要比較的次數(shù)為。(分?jǐn)?shù):1.00)A. 4VB. 6C. m-5m-6解析:解析循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),用隊尾指針rear指向隊列中的隊尾元素,用排頭指針指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊
2、列初始狀態(tài)為front=rear=m,當(dāng)front=15,rear=20時,隊列中有5個元素,比較次數(shù)為4次,故A選項正確。2. 下列敘述中正確的是。(分?jǐn)?shù):1.00)A. 循環(huán)隊列屬于隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)B. 雙向鏈表是二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)C. 非線性結(jié)構(gòu)只能采用鏈?zhǔn)酱鎯Y(jié)構(gòu)有的非線性結(jié)構(gòu)也可以采用順序存儲結(jié)構(gòu)V解析:解析循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),A選項錯誤。雙向鏈表為順序存儲結(jié)構(gòu),二叉樹通常采用鏈?zhǔn)酱鎯Y(jié)構(gòu),B選項錯誤。完全二叉樹是屬于非線性結(jié)構(gòu),但其最佳存儲方式是順序存儲方式,C選項錯誤,故D選項正確。3. 某二叉樹中有n個葉子節(jié)點,則該二叉樹中度為2的節(jié)點數(shù)為。(分?jǐn)?shù):1.00)
3、A. n+1B. n-1VC. 2nn/2解析:解析對任何一棵二叉樹,度為0的節(jié)點(即葉子節(jié)點)總是比度為2的節(jié)點多一個。二叉樹中有n個葉子節(jié)點,則度為2的節(jié)點個數(shù)為n-1,故B選項正確。4. 下列敘述中錯誤的是o(分?jǐn)?shù):1.00)A. 算法的時間復(fù)雜度與算法所處理數(shù)據(jù)的存儲結(jié)構(gòu)有直接關(guān)系B. 算法的空間復(fù)雜度與算法所處理數(shù)據(jù)的存儲結(jié)構(gòu)有直接關(guān)系C. 算法的時間復(fù)雜度與空間復(fù)雜度有直接關(guān)系V算法的時間復(fù)雜度與算法程序執(zhí)行的具體時間是不一致的解析:解析算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。數(shù)據(jù)的存儲結(jié)構(gòu)直接決定數(shù)據(jù)輸入,而這會影響算法所執(zhí)行的基本運算次數(shù),A選項敘述正確。算法的空間復(fù)雜
4、度是指執(zhí)行這個算法所需要的內(nèi)存空間,其中包括輸入數(shù)據(jù)所占的存儲空間,B選項敘述正確。而算法的時間復(fù)雜度與空間復(fù)雜度沒有直接關(guān)系,故選擇C選項。算法程序執(zhí)行的具體時間受到所使用的計算機、程序設(shè)計語言以及算法實現(xiàn)過程中的許多細(xì)節(jié)所影響,而算法的時間復(fù)雜度與這些因素?zé)o關(guān),所以是不一致的,故D選項敘述正確。5. 軟件工程的三要素是。(分?jǐn)?shù):1.00)A. 方法、工具和過程VB. 建模、方法和工具C. 建模、方法和過程定義、方法和過程解析:解析軟件工程是應(yīng)用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標(biāo)準(zhǔn)和工序。軟件工程包含3個要素:方法、工具和過程。故A選項正確。6. 通常軟件測試實施
5、的步驟是。(分?jǐn)?shù):1.00)A. 集成測試、單元測試、確認(rèn)測試B. 單元測試、集成測試、確認(rèn)測試VC. 確認(rèn)測試、集成測試、單元測試單元測試、確認(rèn)測試、集成測試解析:解析軟件測試的實施過程主要有4個步驟:單元測試、集成測試、確認(rèn)測試(驗收測試)和系統(tǒng)測試。故B選項正確。7. 下面可以作為軟件設(shè)計工具的是。(分?jǐn)?shù):1.00)A. 系統(tǒng)結(jié)構(gòu)圖VB. 數(shù)據(jù)字典(DD)C. 數(shù)據(jù)流程圖(DFD圖)甘特圖解析:解析結(jié)構(gòu)化分析方法的常用工具:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定表、判定樹。常用的過程設(shè)計工具如下所述:圖形工具(程序流程圖、N-S圖、PAD圖、HIPO)、表格工具(判定表)、語言工具(
6、PDL)。結(jié)構(gòu)化設(shè)計方法使用的描述方式是系統(tǒng)結(jié)構(gòu)圖。故A選項正確。8. 在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于。(分?jǐn)?shù):1.00)A. 邏輯設(shè)計階段VB. 需求分析階段C. 概念設(shè)計階段物理設(shè)計階段解析:解析采用E-R方法得到的全局概念模型是對信息世界的描述,并不適用于計算機處理,為了適合關(guān)系數(shù)據(jù)庫系統(tǒng)的處理,必須將E-R圖轉(zhuǎn)換成關(guān)系模式。這就是邏輯設(shè)計的主內(nèi)容,故A選項正確。9. 設(shè)有關(guān)系表學(xué)生表S(學(xué)號,姓名,性別,年齡,身份證號),每個學(xué)生學(xué)號唯一。除屬性學(xué)號外,也可以作為鍵的是。(分?jǐn)?shù):1.00)A. 姓名B. 身份證號VC. 姓名,性別,年齡學(xué)號,姓名解析:解析候選鍵
7、是二維表中能唯一標(biāo)識元組的最小屬性集。一個二維表有多個候選碼,則選定其中一個作為主鍵供用戶使用。學(xué)生學(xué)號與身份證號均是唯一的,都可以作為主鍵,故B選項正確。10. 在數(shù)據(jù)庫系統(tǒng)中,考慮數(shù)據(jù)庫實現(xiàn)的數(shù)據(jù)模型是。(分?jǐn)?shù):1.00)A. 概念數(shù)據(jù)模型B. 邏輯數(shù)據(jù)模型VC. 物理數(shù)據(jù)模型關(guān)系數(shù)據(jù)模型解析:解析數(shù)據(jù)模型按照不同的應(yīng)用層次分為以下3種類型:概念數(shù)據(jù)模型,它是一種面向客觀世界、面向用戶的模型,它與具體的數(shù)據(jù)庫管理系統(tǒng)和具體的計算機平臺無關(guān);邏輯數(shù)據(jù)模型,是面向數(shù)據(jù)庫系統(tǒng)的模型,著重于在數(shù)據(jù)庫系統(tǒng)一級的實現(xiàn);物理數(shù)據(jù)模型,是面向計算機物理實現(xiàn)的模型,此模型給出了數(shù)據(jù)模型在計算機上物理結(jié)構(gòu)的表
8、示。故B選項正確。11. 以下選項中敘述正確的是。(分?jǐn)?shù):1.00)A. 結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)是循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)VB. C語言源程序不編譯也能直接運行C. 使用N-S流程圖不能描述復(fù)雜算法計算機能夠直接運行C語言源程序,不必進行任何轉(zhuǎn)換解析:解析結(jié)構(gòu)化程序主要由3種基本控制結(jié)構(gòu)組成,循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu),它們組成的算法結(jié)構(gòu)可以解決任何復(fù)雜的問題,A選項正確。編譯就是把高級語言變成計算機可以識別的二進制語言,不經(jīng)過編譯的源程序是不能運行的,B選項錯誤。算法可以用各種描述方法進行描述,N-S流程圖把算法的每一步都用一個矩形框來表示,把一個個矩形框按執(zhí)行的次序連接起來就是一個
9、算法描述,無論算法復(fù)雜與否都能用N-S流程圖描述,C選項錯誤。C語言源程序需要經(jīng)過編譯和連接生成目標(biāo)文件和可執(zhí)行文件后才能運行,故D選項錯誤。12. 以下選項中敘述正確的是。(分?jǐn)?shù):1.00)A. 使用三種基本結(jié)構(gòu)就可以實現(xiàn)任何復(fù)雜算法VB. 只要程序包含了三種基本結(jié)構(gòu)中的任意一種,就是結(jié)構(gòu)化程序C. 程序語法錯誤要在運行時才能發(fā)現(xiàn)C語言程序不需要包含main()函數(shù)解析:解析結(jié)構(gòu)化程序主要由3種基本控制結(jié)構(gòu)組成,循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu),它們組成的算法結(jié)構(gòu)可以解決任何復(fù)雜的問題,A選項正確。結(jié)構(gòu)化程序設(shè)計是以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,在設(shè)計其中一個模
10、塊時,不會受到其它模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計,而不是說包含了三種基本結(jié)構(gòu)就是結(jié)構(gòu)化程序,B選項錯誤。程序語法錯誤是在編譯過程中發(fā)現(xiàn)的,一般來說編譯器只能檢查語法和最簡單的語義錯誤,而不檢查程序的邏輯錯誤,C選項錯誤。一個C程序由一個或若干個函數(shù)構(gòu)成,而程序中有且只能有一個主函數(shù),即main函數(shù),C程序總是從main函數(shù)開始執(zhí)行,其他函數(shù)由main函數(shù)直接或間接調(diào)用執(zhí)行,所以C語言程序必須包含main函數(shù),故D選項錯誤。13. 以下選項中,合法的C語言常量是o(分?jǐn)?shù):1.00)A. 1.234VB. ”C+"C. "/2.02Kb解析:解
11、析整型常量:用不帶小數(shù)點的數(shù)字表示。實型常量:用帶小數(shù)點的數(shù)字表示。字符型常量:用帶有單引號的一個字符表示。字符串常量:用一對雙引號括起來的一串字符。1.234為實型常量,A選項正確。C+不合法,若改成“C+f則為字符串常量,B選項錯誤?!?2.0不合法,不是任何類型常量,C選項錯誤。2Kb不合法,若加上雙引號“2Kb'為字符串常量,故D選項錯誤。14. 以下選項中,合法的C語言實數(shù)是。(分?jǐn)?shù):1.00)A. 3.1e0.4B. .2e0VC. E137.12E解析:解析實型常量:用帶小數(shù)點的數(shù)字表示,其值有兩種表達(dá)形式,分別為十進制小數(shù)形式和指數(shù)形式。十進制小數(shù)形式由數(shù)字和小數(shù)組成,
12、必須有小數(shù)點,且小數(shù)點的位置不受限制。指數(shù)形式由十進制數(shù)加階碼標(biāo)志“e”或“E'以及階碼(只能為整數(shù),可以帶符號)組成。.2e0為指數(shù)形式實數(shù),B選項正確。3.1e0.4,階數(shù)不是整數(shù),A選項錯誤。E13階碼標(biāo)志前缺少十進制數(shù),C選項錯誤。7.12E缺少階碼,故D選項錯誤。15. 設(shè)a,b,c是整型變量且均已賦值,則以下選項中錯誤的賦值語句是o(分?jǐn)?shù):1.00)A. a=(b=3)=1;VB. a=(b=2)+c;C. a=b=c+10;a=1+(b=c=2);解析:解析賦值運算結(jié)合性為由右向左結(jié)合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。A選項中,
13、賦值運算(b=3)=1,左值為表達(dá)式,不是變量不能被賦值,A選項錯誤,所以選擇A選項。B選項運算過程為,先賦值b=2,再計算b+e,將結(jié)果賦給a,是正確的賦值語句。C選項運算過程為,先計算c+10將結(jié)果賦給b,再將b賦給a,是正確的賦值語句。D選項運算過程為,先將2賦給c,再將c賦給b,然后計算1+b,將結(jié)果賦給a,是正確的賦值語句。16. 有如下程序:#include<stdio.h>main()intx=072;printf("%d/n",x+1);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 59VB. 73C. 11572解析:解析整型常量有3種表示方
14、法,分別是十進制數(shù)表示法、八進制數(shù)表示法和十六進制數(shù)表示法。十進制整常量沒有前綴,輸出格式控制符為a八進制整常量以0作為前綴,輸出格式控制符為o十六進制整常量以0X或0x作為前綴,輸出格式控制符為&八進制數(shù)072表示成十進制數(shù)為58,即x=072=58,以十進制格式輸出x+1=59,故A選項正確。17. 有如下程序:#include<stdio.h>main()inta=0,b=1;if(a+&&b+)printf("T");elseprintf("F");printf("a=%d,b=%d/n",
15、a,b);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. Ta=1,b=2B. Fa=0,b=2C. Fa=1,b=1VTa=0,b=1解析:解析題目中判斷if條件是否成立,a+毋取值為0,則(a+&&b+)為0,且不計算b+,而后a自增得a=1,if條件不成立執(zhí)行else函數(shù)體,輸出F。最后執(zhí)行語句rintf("a=%d,b=%d/n”,a,b);按照格式輸出a=1,b=1。故C選項正確。18. 有如下程序:#include<stdio.h>main()inti,data;scanf("%d”,&data);for(i=0;iv5;i+
16、)(if(i<data)continue;printf("%d,",i);printf("/n”);程序運行時,從鍵盤輸入:3回車>后,程序輸出結(jié)果為。(分?jǐn)?shù):1.00)A. 3,4,VB. 1,2,3,4,C. 0,1,2,3,4,5,0,1,2,解析:解析continue語句只能用在循環(huán)結(jié)構(gòu)中,其作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,而是立即轉(zhuǎn)入對循環(huán)條件的判斷與執(zhí)行。本題執(zhí)行過程為:輸入3,則data=3;執(zhí)行for循環(huán),i=0,if條件成立,結(jié)束本次循環(huán),不輸出i值,執(zhí)行下一次循環(huán);直到i>=3,if條件不
17、成立,依次輸出i值3,4,直到i=5退出for循環(huán)。故A選項正確。19. 有如下程序:#include<stdio.h>main()(inti,data;scanf("%d",&data);for(i=0;iv5;i+)(if(i>data)break;printf("%d,",i);printf("/n”);程序運行時,從鍵盤輸入:3回車>后,程序輸出結(jié)果為。(分?jǐn)?shù):1.00)4,1,D.0,1,2,3,V解析:解析break語句作用是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立,且在嵌套循環(huán)中,其只跳出最
18、內(nèi)層的一層循環(huán)。本題執(zhí)行過程為:輸入3,則data=3;執(zhí)行for循環(huán),在i<=3時,if條件不成立,執(zhí)行語句printf("%d,”,i);依次輸出i值,0,1,2,3;直到i=4時,if條件成立,執(zhí)行break退出for循環(huán)。故D選項正確。20. 有如下程序:#include<stdio.h>main()(chara="3",b="A"inti;for(i=0;iv6;i+)(if(i%3)putchar(a+i);elseputchar(b+i);)printf("/n");)程序運行后的輸出結(jié)果是(
19、分?jǐn)?shù):1.00)A. A45D78VB. ABC678C. 34CD7834AB78解析:解析putchar函數(shù)是向標(biāo)準(zhǔn)輸出設(shè)備上輸出一個字符。字符在內(nèi)存中以AScII碼方式存儲,可以與整數(shù)進行加減運算,但是要保證計算結(jié)果在0255之間。本題執(zhí)行過程為:i=0,i%3=0,if條件不成立執(zhí)行else函數(shù)體,輸出字符Ai=1,i%3=1,if條件成立輸出字符4;i=2,i%3=2,if條件成立輸出字符5;i=3,if條件不成立,輸出字符D;i=4和i=5時,分別輸出字符7與8;i=6退出for循環(huán)。所以程序運行后輸出結(jié)果為A45D78,故A選項正確。21. 有如下程序:#include<s
20、tdio.h>main()inti;for(i=0;iv5;i+)putchar("9"-i);printf("/n");)程序運行后的輸出結(jié)果是(分?jǐn)?shù):1.00)A. 54321B. 98765VC. "9""8""7""6""5""43210"解析:解析putcbar函數(shù)是向標(biāo)準(zhǔn)輸出設(shè)備上輸出一個字符。字符在內(nèi)存中以ASCII碼方式存儲,可以與整數(shù)進行加減運算,但是要保證計算結(jié)果在0255之間。本題執(zhí)行過程為:i=0,輸出字符
21、9,在iv5的情況下,依次輸出字符8、7、6、5。在i=5時,退出for循環(huán)。最后顯示在命令窗口結(jié)果為98765,故B選項正確。22. 有如下程序:#include<stdio.h>main()intx=0x13;if(x=0x18)printf("T");printf("F");printf("/n");)程序運行后的輸出結(jié)果是(分?jǐn)?shù):1.00)A. TFVB. TC. FTFT解析:解析x=0x18為賦值表達(dá)式,十六進制數(shù)0x18非0,即x非0,if條件成立輸出T,之后再輸出F與回車符。程序運行后的輸出結(jié)果是TF,故A
22、選項正確。23. 有如下程序:#include<stdio.h>intsum(inta,intb)returna+b-2;main()inti;for(i=0;iv5;i+)printf("%d",sum(i,3);printf("/n”);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 54321B. 01234C. 4567812345V解析:解析函數(shù)調(diào)用的一般形式為:函數(shù)名(實際參數(shù)表)對無參函數(shù)調(diào)用時,則無實際參數(shù)表。實際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實參之間用逗號分隔。函數(shù)sum在main函數(shù)之前,所以在main
23、函數(shù)中不需要聲明。本題程序執(zhí)行過程為:在i=0,1,2,3,4時依次輸出sum(i,3),即調(diào)用sum函數(shù)后依次輸出1、2、3、4、5,故D選項正確。24. 有如下程序:#include<stdio.h>intchange(int*data)return(*data)+;main()intdata=123;change(&data);printf("%d,",data);data=change(&data);printf("%d,",data);printf("/n");程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.
24、00)A. 124,124,VB. 123,124,C. 124,123,123,123,解析:解析本題程序執(zhí)行過程為:調(diào)用change函數(shù),將變量data地址傳入函數(shù),返回當(dāng)前指針指向的變量值123,之后此變量加一,data=124。輸出data=124。再次調(diào)用函數(shù),返回當(dāng)前指針指向的變量值124,然后此地址內(nèi)存中變量加一,data=125,然后將返回值124賦給變量data=124,最后輸出data=124。故A選項正確。25. 有如下程序:#include<stdio.h>voidchange(int*array,intlen)for(len>=0;len-)arra
25、ylen+=2;main()(inti,array5=1,2;change(array,4);for(i=0;iv4;i+)printf("%d,",arrayi);printf("/n”);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 2,3,4,5,B. 3,4,5,6,C. 3,4,2,2,V1,2,0,0,解析:解析在對一維數(shù)組初始化時,如果在說明數(shù)組時給出了長度,但沒有給所有的元素賦予初始值,而只依次給前面的幾個數(shù)組元素賦予初值,那么C語言將自動對余下的元素賦初值0。本題程序執(zhí)行過程為:調(diào)用change函數(shù),將數(shù)組array=1,2,0,0,0首地址傳
26、入函數(shù),函數(shù)實現(xiàn)將數(shù)組每個元素加2,arrray=3,4,2,2,2。依次輸出數(shù)組前4個元素為3,4,2,2。故C選項正確。26. 以下選項中敘述正確的是。(分?jǐn)?shù):1.00)A. charc1,c2,*c3,c440j;是合法的變量定義語句VB. 數(shù)組說明符的一對方括號中只能使用整型常量,而不能使用表達(dá)式C. 數(shù)組下標(biāo)的下限可以是負(fù)值若有數(shù)組定義floatarray4;則語句printf("%f”,array3.12);是合法的解析:解析A選項正確定義了字符變量c1、c2,字符型指針c3,字符型一維數(shù)組c440,A選項正確。“”是下標(biāo)運算符,“下標(biāo)”可以是任何非負(fù)整型數(shù)據(jù),取值范圍是
27、0(數(shù)據(jù)元素的個數(shù)-1)o在引用數(shù)組元素時,下標(biāo)運算符內(nèi)可以是常量也可以是變量或者表達(dá)式,B選項錯誤。數(shù)組下標(biāo)的下限不可以是負(fù)值,C選項錯誤。數(shù)組下標(biāo)必須是整型數(shù)據(jù),3.12為浮點數(shù),故D選項錯誤。27. 若有函數(shù)聲明:voidfun(floatarray,int*ptr);以下敘述正確的是。(分?jǐn)?shù):1.00)A. 函數(shù)參數(shù)array,ptr都是指針變量VB. 函數(shù)參數(shù)array不是指針變量,ptr是指針變量C. 調(diào)用函數(shù)時,實參數(shù)組的值將一一復(fù)制給array數(shù)組調(diào)用函數(shù)時,array是按值傳送,ptr是按地址傳送解析:解析數(shù)組名為數(shù)組的首地址,也是指向數(shù)組的指針,所以array和ptr都是指
28、針,A選項正確,B選項錯誤。調(diào)用函數(shù)時,將實參數(shù)組首地址賦給指針array,而不是傳遞整個數(shù)組元素,C選項錯誤。調(diào)用函數(shù)時,array與ptr都是按地址傳送的,故D選項錯誤。28. 設(shè)有如下程序段:inta8=0;intb=0;charc2=("A”,”B"chard="AB"以下敘述正確的是。(分?jǐn)?shù):1.00)A. 只有a,b,c的定義是合法的B. a,b,c,d的定義都是合法的C. 只有a,b的定義是合法的V只有c的定義是合法的解析:解析在對數(shù)組進行初始化時應(yīng)該注意,如果對數(shù)組的全部元素賦以初值,定義時可以不指定數(shù)組長度,如果被定義數(shù)組的長度與初值個
29、數(shù)不同,則數(shù)組長度不能省略;如果在說明數(shù)組時給出了長度,但沒有給所有的元素賦予初始值,而只依次給前面的幾個數(shù)組元素賦予初值,那么C語言將自動對余下的元素賦初值。定義整型數(shù)組a,長度為8,并且其每個元素賦初值0,a定義是合法的。定義整型數(shù)組b,沒有指定長度,但為1個元素賦值0,所以自動指定數(shù)組長度為1,b定義是合法的。定義字符型數(shù)組c,長度為2,應(yīng)對其元素賦值字符型常量,而“A”與“B'均為字符串,c定義不合法。定義字符d,賦初值字符串“AB”,這是不合法的定義,若要定義數(shù)組,必須要有“”,下標(biāo)運算符??芍琣b定義合法,cd定義不合法,故C選項正確。29. 以下涉及字符串?dāng)?shù)組、字符指針
30、的程序段,不會產(chǎn)生編譯錯誤的是。(分?jǐn)?shù):1.00)A. char*str,name10;str="HelloWorld";VB. char*str,name10;name="HelloWorld";C. charstr110="prog.c",str210;str2=str1;charhead_line;head_line="=";解析:解析將字符指針變量初始化為一個字符串有兩種方式,一種通過賦值運算使一個字符指針指向一個字符串常量:chat*str;str="Helloworld",A選項正確
31、。另一種是定義一個字符指針變量,并且初始化為一個字符串的首地址:char*str="HelloWorld"。字符指針變量與字符數(shù)組都可以用來實現(xiàn)字符串的存儲和運算,但二者是有區(qū)別的:(1)數(shù)組名是一個地址常量,而字符指針變量是一個變量,所以不能給一個數(shù)組名賦值,如name="HelloWorld"錯誤,B選項錯誤;(2)字符型的指針變量的值是可以改變的;(3)字符指針變量和字符數(shù)組在內(nèi)存中的存儲情形不同,數(shù)組指的是按照數(shù)組長度分配的若干存儲空間,而指針只是一個存儲字符串首地址的存儲空間,所以相同類型指針可以相互賦值,而數(shù)組不能直接用“=”賦值,C選項錯誤
32、。數(shù)組不可以直接賦值字符串,head_line="="不合法,只有在數(shù)組初始化時可以直接賦值,如charhead_line="="合法,并且定義數(shù)組時必須指定數(shù)組長度,charhead_line不合法,故D選項錯誤。30. 有如下程序:#include<stdio.h>#include<string.h>main()(printf("%d/n",strlen("0/n011/1");程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 6VB. 8C. 94解析:解析由一對雙引號括起來的一串字符為
33、字符串。字符常量是用一對單引號括起來的單個字符,還有一些特殊字符常量,即以“/”開頭的轉(zhuǎn)義字符?!?”后可以為某些單個字符也可以為八進制或十六進制數(shù)字。strlen函數(shù)統(tǒng)計字符串長度,遇到“/0”統(tǒng)計結(jié)束。0''/n''0''1''1'71'共6個字符,故A選項正確。31. 有如下程序:#include<stdio.h>voidconvert(charch)(if(chv"D")convert(ch+1);printf("%c”,ch);main()(convert(&qu
34、ot;A");printf("/n");程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. ABCDDCBAB. ABCDC. ADCBAV解析:解析在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接的調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。本題程序的執(zhí)行過程為:調(diào)用convert("A")函數(shù),ch="A”,if條件成立->convert("B")->converr("C")->convert("D"),if條件不成立,輸出D->執(zhí)行convert("C&qu
35、ot;)中if語句后的輸出語句,輸出C->執(zhí)行convert("B")中if語句后的輸出語句,輸出B->執(zhí)行convert("A")中if語句后的輸出語句,輸出A,函數(shù)調(diào)用完成。程序運行后的輸出結(jié)果是DCBA故D選項正確。32. 有如下程序:#include<stdio.h>#include<string.h>main()(chara="THIS”,*b="OK”;printf("%d,%d,%d,%d/n",strlen(a),sizeof(a),strlen(b),sizeo
36、f(b);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 4,5,2,4VB. 4,4,2,1C. 5,5,3,34,5,2,3解析:解析在對數(shù)組進行初始化時,如果對數(shù)組的全部元素賦以初值,定義時可以不指定數(shù)組長度,如chara="THIs”。將字符指針變量初始化為一個字符串可以定義一個字符指針變量,并且初始化為一個字符串的首地址,如char*b="OK"。strlen函數(shù)統(tǒng)計字符串長度,遇到“/0”統(tǒng)計結(jié)束。sizeof用來獲取類型或數(shù)據(jù)對象的長度,也即是一個這種數(shù)據(jù)類型的變量在內(nèi)存中所占字節(jié)數(shù)。a數(shù)組/0'之前有效字符有4個,由于字符串有效字符之后有一
37、個/0'也會被放入數(shù)組,char類型占一個字節(jié),所以數(shù)組a所占字節(jié)數(shù)為1*5=5。b為指向字符串的指針,字符串長度為2,指針類型變量所占字節(jié)數(shù)為4。故A選項正確。33. 有如下程序:#include<stdio.h>voidget_put()(charch;ch=getchar();if(ch!="/n")get_put();putchar(ch);)main()(get_put();printf("/n");)程序運行時,輸入1234回車,則輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 1234B. 4321VC. 44441111解析:解析
38、在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接的調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。本題程序的執(zhí)行過程為:在輸入1234回車的情況下,調(diào)用get_put()函數(shù),getchar()讀入1,在這次調(diào)用中的局部變量ch="1”,if條件成立-調(diào)用get_put()函數(shù),讀入2,局部變量ch="2”-調(diào)用get_put()函數(shù),讀入3,局部變量ch="3”-調(diào)用get_put()函數(shù),讀入4,局部變量ch="4”-調(diào)用get_put()函數(shù),讀入回車,if條件不成立,返回執(zhí)行每次調(diào)用函數(shù)中if語句后的輸出語句,即依次輸出4321o故B選項正確。34. 有如下程序:#i
39、ncludestdio.hintsum(intdata)(staticintint=0;returninit+=data;)main()(inti;for(i=1;i=5;i+)printf("%d,”,sum(i);printf("/n");)程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 1,3,6,10,15,VB. 1,2,3,4,5,C. 0,0,0,0,0,1,1,1,1,1,解析:解析程序執(zhí)行過程為:for循環(huán)i=1,調(diào)用函數(shù)sum(1),init=0,data=1,返回init=0+1=1,輸出1;i=2,調(diào)用函數(shù)sum(2),data=2,ini
40、t=1,返回init=1+2=3,輸出3;i=3,調(diào)用函數(shù)sum(3),data=3,init=3,返回init=3+3=6,輸出6;i=4,調(diào)用函數(shù)sum(4),data=4,init=6,返回init=6+410,輸出10;i=5,調(diào)用函數(shù)sum(5),data=5,init=10,返回init=10+5=15,輸出15;i=6,退出for循環(huán)。本題運行后的輸出結(jié)果是1,3,6,10,15,故A選項正確。35. 以下選項中的編譯預(yù)處理命令行,正確的是。(分?jǐn)?shù):1.00)A. #definePI3.14VB. #defineeps0.001C. #DEFINETRUE#defineintIN
41、T解析:解析不帶參數(shù)的宏定義是用一個指定的標(biāo)識符來代表一個字符串,其一般形式如下:#define宏名替換文本。需要注意:在#define、宏名和替換文本之間用空格隔開;在C程序中,宏定義的定義位置一般寫在程序的開頭;宏名一般用大寫字母表示,便于與變量名區(qū)別;宏定義是用宏名來表示一個字符串,在宏展開時以該字符串取代宏名,這只是一種簡單的代換,預(yù)處理程序?qū)λ蛔鋈魏螜z查;宏定義不是語句,在行末不加分號,如加上分號則連分號也一起替換;宏定義必須寫在函數(shù)之外,其作用域為從宏定義命令起到源程序結(jié)束,如要終止其作用域可使用#undef命令。B選項define前多了一個#。C選項缺少“替換文本”,不能將一個
42、自定義標(biāo)識符宏定義為關(guān)鍵字,故BGD選項錯誤。A選項中的宏定義正確。36. 設(shè)有以下程序段:structperson(charname10;charsex;floatweight;zhangsan,*ptr;ptr=&zhangsan;若要從鍵盤讀入姓名給結(jié)構(gòu)體變量zhangsan的name成員,輸入項錯誤的是。(分?jǐn)?shù):1.00)A. scanf("%s”,zhangsan->name);VB. scanf("%s",);C. scanf("%s”,ptr->name);scanf("%s"
43、;,(*ptr).name);解析:解析可用以下3種形式來引用結(jié)構(gòu)體變量中的成員:結(jié)構(gòu)體變量名.成員名;指針變量名->成員名;(*指針變量名).成員名。程序定義了一個結(jié)構(gòu)體變量zhangsan,一個結(jié)構(gòu)體指針ptr,并且使指針指向變量zhangsan。A選項zhangsan為結(jié)構(gòu)體變量名,不能用->引用其成員,A選項錯誤故選擇A選項。、ptr->nam&(*ptr).name均是正確的引用結(jié)構(gòu)體變量成員的方式,故B、C、D選項正確。37. 有如下程序:#include<stdio.h>structperson(charname10
44、;intage;main()(structpersonroom4="Zhang”,19,"Li”,20,"Wang”,17,"Zhao”,18;printf("%s;%d/n",(room+2)->name,room->age);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. Wang:19VB. Wang:17C. Li:20Li:19解析:解析可用以下3種形式來引用結(jié)構(gòu)體變量中的成員:結(jié)構(gòu)體變量名.成員名;指針變量名->成員名;(*指針變量名).成員名。數(shù)組名是指向數(shù)組首地址,也可以當(dāng)做指向數(shù)組的指針來使用。ro
45、om+2指向數(shù)組第三個元素,(room+2)->name為字符串Wangr00m指向數(shù)組第一個元素,room->age=19。運行后的輸出結(jié)果是Wang19,故A選項正確。38. 有如下程序:#include<stdio.h>structpair(intfirst,second;);structpairget_min_max(int*array,intlen)(inti;structpairres;res.first=array0;res.second=array0;for(i=1;i<len;i+)(if(arrayi<res.first)res.firs
46、t=arrayi;if(arrayi>res.second)res.second=arrayi;)returnres;main()(intarray5=9,1,3,4;structpairmin_max=get_min_max(array,5);printf("min=%d,max=%d/n”,min_max.first,min_max.second);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. min=1,max=9B. min=0,max=9VC. min=1,max=4min=0,max=4解析:解析在對數(shù)組進行初始化時,如果在說明數(shù)組時給出了長度,但沒有給所有的元素
47、賦予初始值,而只依次給前面的幾個數(shù)組元素賦予初值,那么C語言將自動對余下的元素賦初值0,則array5=9,1,3,4,0。程序的執(zhí)行過程為:調(diào)用函數(shù)get_min_max(array,5),將數(shù)組array首地址傳入函數(shù),定義結(jié)構(gòu)體變量res,并為其成員賦值。for循環(huán)查找數(shù)組array數(shù)組的最小值0,將其賦值給res的成員first,查找數(shù)組最大值9,賦值給res的成員seconnd。最后返回結(jié)構(gòu)體變量res,則min_max=res。輸出min_max.first=0,min_max.second=9,故B選項正確。39. 有如下程序:#include<stdio.h>mai
48、n()inta=8,b;b=(a>>2)%2;printf("%d,%d/n",a,b);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 8,0VB. 4,0C. 4,18,1解析:解析">>”右移運算符,按位右移運算規(guī)則是將一個操作數(shù)先轉(zhuǎn)換成二進制數(shù),然后將二進制數(shù)各位右移若干位,移出的低位舍棄,并在高位補位。若為無符號數(shù),右移時左邊高位移入0。a=8=01000,執(zhí)行a>>2后,a=00010=2,b=2%2=Q輸出a,b為8,0,故A選項正確。40. 以下選項中敘述正確的是。(分?jǐn)?shù):1.00)A. 文件指針是指針類型的變量
49、VB. 文件指針可同時指向不同文件C. 文件指針的值是文件在計算機磁盤中的路徑信息調(diào)用fscanf函數(shù)可以向文本文件中寫入任意字符解析:解析所謂文件指針,實際上是指向一個結(jié)構(gòu)體類型的指針變量,這個結(jié)構(gòu)體中包含有文件的一些信息,如緩沖區(qū)的地址,在緩沖區(qū)中當(dāng)前存取的字符的位置,對文件是“讀”還是“寫”,是否出錯,是否已經(jīng)遇到文件結(jié)束標(biāo)志等信息。文件指針本身是指針類型的變量,故A選項正確。一個指針在同一時間只能指向一個文件,故B選項錯誤。文件指針是指針類型變量,存儲的是文件緩存區(qū)首地址,而不是文件在計算機磁盤中的路徑信息,故C選項錯誤。fscanf函數(shù)從文本文件中按格式讀入到程序中,而不是向文本文件
50、中寫入數(shù)據(jù),故D選項錯誤。二、程序填空題(總題數(shù):1,分?jǐn)?shù):20.00)人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回數(shù)據(jù)中的編號為空串。請在程序的下畫線處填入正確的內(nèi)容,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN8typedefstructcharnum10;intyear,mont
51、h,day;STU;/*found*/1fun(STU*std,char*num)inti;STUa="",9999,99,99;for(i=0;ivN;i+)/*fomad*/if(strcmp(2,num)=0)/*found*/return(3);returna;main()STUstdN="111111",1984,2,15,"222222",1983,9,21,"333333",1984,9,1,"444444",1983,7,15,"555555”,1984,9,28,&q
52、uot;666666”,1983,11,15,"777777”,1983,6,22,"888888”,1984,8,19;STUp;charn10="666666"p=fun(std,n);if(p.num0=0)printf("/nNotfound!/n");elseprintf("/nSucceed!/n");printf("%s%d-%d-%d/n",p.num,p.year,p.month,p.day);(分?jǐn)?shù):20.00)解析:STUstdi.numstdi考點本題考查:if條件表達(dá)式
53、;比較字符串函數(shù)strcmp;指針變量的使用;函數(shù)定義及函數(shù)返回值。strcmp函數(shù)用來比較兩個字符數(shù)組的大小,其格式為:strcmp(字符數(shù)組1,字符數(shù)組2)。若字符數(shù)組1字符數(shù)組2,函數(shù)值大于0(正數(shù));若字符數(shù)組1=字符數(shù)組2,函數(shù)值等于0;若字符數(shù)組1字符數(shù)組2,函數(shù)值小于0(負(fù)數(shù))。解析填空1:根據(jù)函數(shù)fun的返回值類型可知,函數(shù)類型標(biāo)識符應(yīng)該是結(jié)構(gòu)體類型的,所以填入STU填空2:根據(jù)題目說明,找出指定編號人員,并將其數(shù)據(jù)返回。通過strcmp函數(shù)比較編號,若相同則函數(shù)值為0,所以填入stdi.num。41. 填空3:由題目可知,假如編號對應(yīng),則返回其編號對應(yīng)數(shù)據(jù),所以填入數(shù)據(jù)stdio三、程序修改題(總題數(shù):1,分?jǐn)?shù):20.00)下列給定程序中,函數(shù)fun的功能是:從s所指字符串中,找出t所指字符串的個數(shù)作為函數(shù)值返回例如,當(dāng)s所指字符串中的內(nèi)容為"abcdabfab",t所指字符串的內(nèi)容為"ab",則函數(shù)返回整數(shù)3請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 選人用人中的主觀與客觀因素計劃
- 收益模型構(gòu)建與優(yōu)化計劃
- 京東電商平臺運營策略分析
- 信用體系構(gòu)建與企業(yè)管理策略
- 中國在線教育行業(yè)市場分析及展望
- 如何利用反饋優(yōu)化品牌設(shè)計計劃
- 2024年高三數(shù)學(xué)重難點復(fù)習(xí)專練:三角函數(shù)最值與取值范圍問題十三大題型(原卷版)
- 八年級體育 第 18周 第2次課教學(xué)實錄36
- 2024年高考數(shù)學(xué)一輪總復(fù)習(xí)講義:圓錐曲線-求值、證明問題
- 供應(yīng)鏈金融與融資策略分析
- 網(wǎng)課智慧樹知道《人工智能引論(浙江大學(xué))》章節(jié)測試答案
- 設(shè)備管理制度中的設(shè)備維修與保養(yǎng)流程
- 計算機網(wǎng)絡(luò)維保方案
- 產(chǎn)品不良改善報告
- 鴻星爾克的營銷案例分析
- 土石方工程投標(biāo)書技術(shù)標(biāo)
- 胸腹聯(lián)合傷完整版本
- 裝修店長述職報告
- 2023年10月自考試題00840第二外語(日語)
- 農(nóng)產(chǎn)品市場營銷中的市場競爭分析
- 了解滑雪:滑雪器材與滑雪的技巧
評論
0/150
提交評論