c語言考題第一套_第1頁
c語言考題第一套_第2頁
c語言考題第一套_第3頁
c語言考題第一套_第4頁
c語言考題第一套_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1. 程序流程圖中帶有箭頭的線段表示的是 ( )。A)圖元關(guān)系B)數(shù)據(jù)流C)控制流D)調(diào)用關(guān)系參考答案: C解析】在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇 C)。2. 結(jié)構(gòu)化程序設(shè)計的基本原則不包括 ()。A)多態(tài)性B)自頂向下C)模塊化D)逐步求精goto 語句,所參考答案: A 【解析】結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用 以選擇 A) 。3. 軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是 ( )。A) 低內(nèi)聚低耦合B) 高內(nèi)聚低耦合C) 低內(nèi)聚高耦合D) 高內(nèi)聚高耦合參考答案: B【解析】軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是

2、高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴 關(guān)系適當(dāng)?shù)取DK的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據(jù) 開發(fā)出的軟件系統(tǒng)可靠性強,易于理解和維護。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度 應(yīng)盡可能的高。4. 在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是 ( ) 。A) 可行性分析報告B) 軟件需求規(guī)格說明書C) 概要設(shè)計說明書D) 集成測試計劃參考答案: B【解析】A)錯誤,可行性分析階段產(chǎn)生可行性分析報告。C)錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D)錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B)正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔

3、。5. 算法的有窮性是指 ()。A) 算法程序的運行時間是有限的B) 算法程序所處理的數(shù)據(jù)量是有限的C) 算法程序的長度是有限的D) 算法只能被有限的用戶使用參考答案: A【解析】算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。6. 對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是 n(n 1)/2的排序方法是()。A)快速排序B)冒泡排序C)直接插入排序D)堆排序參考答案:D【解析】除了堆排序算法的比較次數(shù)是1二兇吒門)一,其他的都是n(n 1)/2。7. 下列關(guān)于棧的敘述正確的是()。A)棧按先進先出”組織數(shù)據(jù)B)棧按先進后出”組織

4、數(shù)據(jù)C)只能在棧底插入數(shù)據(jù)D)不能刪除數(shù)據(jù)【解析】棧是按”先進后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進行操作。8. 在數(shù)據(jù)庫設(shè)計中,將 E F圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A)需求分析階段B)概念設(shè)計階段C)邏輯設(shè)計階段D)物理設(shè)計階段【解析】E R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設(shè)計出表,所以屬于邏輯設(shè)計階段。9. 有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。EICS0kJ1.1ncn且0klA)并B)自然連接C)笛卡爾積D)交【解析】自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性

5、組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以B)錯誤。笛卡爾積是用R集合中元素為第一元素,S集合中元素為第二元素構(gòu)成的有序?qū)?,所以C)錯誤。根據(jù)關(guān)系T可以很明顯的看出是從關(guān)系R與關(guān)系S中取得相同的關(guān)系組所以取得是交運算,選擇D)。10. 設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC勺關(guān)鍵字(鍵或碼)為()。A)課號,成績B)學(xué)號,成績C)學(xué)號,課號D) 學(xué)號,姓名,成績【解析】學(xué)號是學(xué)生表 S的主鍵,課號是課程表 C的主鍵,所以選課表 SC勺關(guān)鍵字就應(yīng)該是與前 兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇

6、C)。11. 以下敘述中錯誤的是()。A C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令B) C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件C) 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D) C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序【解析】C語言中的非執(zhí)行語句不會被編譯,不會生成二進制的機器指令,所以A)錯誤。由C語言構(gòu)成的指令序列稱C源程序,C源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標(biāo)文件);最后要由”連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來 生成一個后綴

7、為.EXE的可執(zhí)行文件。12. 以下選項中,合法的一組 C語言數(shù)值常量是()。A)12.0Xa234.5e0B)028.5e 30xfC).1774e1.50abcD)0x8A10,0003.e5【解析】C語言中八進制整型常量的開頭是數(shù)字0,十六進制整型常量的開頭數(shù)字是0x。C語言中的實型常量有兩種表示形式:小數(shù)形式,小數(shù)形式表示的實型常量必須要有小數(shù)點;指數(shù)形式,以e或E后跟一個整數(shù)來表示以10為底數(shù)的幕數(shù),且規(guī)定字母e或E之前必須要有數(shù)字,且 e或E后面的指數(shù)必須為整數(shù)。B)選項中028錯誤,八進制中沒有數(shù)字 8。C)選項中4e1.5中e后面的指數(shù)不是整數(shù)。D)選項中3.e5小數(shù)點后面缺少

8、數(shù)字。13. 以下選項中不合法的標(biāo)識符是()。A)&aB)FORC)printD)00【解析】C語言中標(biāo)識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。另外,關(guān)鍵 字不能作為標(biāo)識符。因為 C語言中區(qū)分大小寫,所以 B)選項中的FOR可以作為標(biāo)識符來用。A)選項中含有非法字符&所以選擇A)。14. 若有代數(shù)式討丙(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達式是()。A) sqrt(fabs(pow(n,x) + exp(x)B) sqrt(fabs(pow(n, x) + pow(x, e)C) sqrt(abs( nx + eAx)D) sqrt(f

9、abs(pow(x , n) + exp(x)【解析】B)選項中函數(shù)pow(x, e)錯誤應(yīng)該直接使用exp(x)函數(shù)。C)選項中函數(shù)abs(nAx + eAx) 錯誤,應(yīng)該使用fabs()返回浮點數(shù)的絕對值。D)選項中pow(x, n)參數(shù)順序錯誤。15. 若有定義:double a = 22;int i= 0,k =18;,則不符合C語言規(guī)定的賦值語句是()A) i = (a + k) = (i + k);B) i = a%11;C) a= aH , i HFD) i =! a;B 中的 a【解析】取模運算符 %,二元運算符,具有左結(jié)合性,參與運算的量均為整型。選項 變量是 double

10、實型,所以 B) 不符合規(guī)定。16. 有以下程序:#include main() int s , t , A= 10; double B = 6;s= sizeof(A) ; t = sizeof(B); printf(%d , %dn , s, t) ;在VC6.0平臺上編譯運行,程序運行后的輸出結(jié)果是()。A) 10,6B) 4,4C) 2,4D) 4,8【解析】C語言中利用sizeof()函數(shù)判斷數(shù)據(jù)類型長度,在VC6.0平臺中,整型int占有4個字節(jié),double 型數(shù)據(jù)占有 8個字節(jié)。17. 有以下程序:#include main() char a , b, c , d; scanf

11、(%c%c , &a, &b) ; c = getchar() ; d = getchar(); printf(%c%c%c%cn , a, b, c, d);當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第1列開始,P表回車,注意:回車也是一個字符)1234則輸出結(jié)果是 ()。A) 1234B) 12C) 1234D) 123【解析】按照從鍵盤輸入的數(shù)據(jù)可以判斷字符1給了變量a,字符2給了變量b,字符CR即回車給了變量c,字符3給了變量d。所以打印輸出的結(jié)果為D)選項。18. 下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。A) 可以是任意合法的表達式B) 只能是整數(shù) 0或非 0整數(shù)C) 可以是結(jié)構(gòu)

12、體類型的數(shù)據(jù)D) 只能是整數(shù) 0或 1【解析】C語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達式,所以選擇 A)。19. 有以下程序:#include main() int a = 0, b = 0, c= 0, d = 0;if(a = 1) b = 1; c= 2;else d = 3;printf(%d , %d, %d, %dn, a, b, c, d);程序輸出 ( ) 。A) 1,1,2,0B) 0,0,0,3C) 編譯有錯D) 0,1,2,0【解析】本題中if(a = 1)b = 1;與else d = 3;之間多了語句c = 2;所以會出現(xiàn)else

13、語句的位 置錯誤的編譯失敗提示。20. 有以下程序:#include main() int x = 1, y = 0, a = 0, b = 0;switch (x) case 1:switch(y) case 0 : a ; break ; case 1 : b ; break ;case 2 : a ; b ; break ;case 3 : a ; b ;printf(a= %d b = %dn , a , b); 程序的運行結(jié)果是 ()。A)a= 2,b= 2B)a= 2,b= 1C)a= 1,b= 1D)a= 1,b= 0switch 語句【解析】case常量表達式只是起語句標(biāo)號作用

14、,并不是該處進行條件判斷。在執(zhí)行時,根據(jù)switch的表達式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不在進行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時只執(zhí)行了 a + + ,此時a的值為1。 然后執(zhí)行外層case 2語句的a+ + ; b + + ; a為2, b為1。所以結(jié)果為B)。21. 以下程序段中的變量已正確定義:for( i = 0;i4 ; i + + , i + )for( k = 1; k3 ; k + ) ;printf(*)程序段的輸出結(jié)果是( )。A)*B)C)*D)*【解析】由于內(nèi)層循環(huán)for( k = 1:; k3 ;部

15、什么操作也不做,跳出外層循環(huán)后執(zhí)行打印語句,k )后面直接跟了空語句 ; 所以在循環(huán)內(nèi) 所以打印了一個 * ,選擇 C)。22. 有以下程序段:#include int i , n ;for( i = 0; i8 ; i + ) n = ran d() % 5;switch (n) case 1 :case 3 : printf(%d n, n) ; break ;case 2 :case 4 : printf(%d n, n) ; continue ;case 0 : exit(0) ;printf(%d n,n); 以下關(guān)于程序段執(zhí)行情況的敘述,正確的是 ( ) 。A) for 循環(huán)語句固

16、定執(zhí)行 8次B) 當(dāng)產(chǎn)生的隨機數(shù)n為4時結(jié)束循環(huán)操作C) 當(dāng)產(chǎn)生的隨機數(shù)n為1和2時不做任何操作D) 當(dāng)產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行【解析】 case 常量表達式只是起語句標(biāo)號作用,并不是該處進行條件判斷。在執(zhí)行switch 語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不再進行判斷,直到碰到 break 或函數(shù)結(jié)束為止。簡單的說 break 是結(jié)束整個循環(huán)體,而 continue 是結(jié)束單 次循環(huán)。B)選項中當(dāng)產(chǎn)生的隨機數(shù) n為4時要執(zhí)行打印操作。C)選項中當(dāng)產(chǎn)生的隨機數(shù)為1和2時分別執(zhí)行case3與case4后面語句的內(nèi)容。由于存在break

17、語句所以for循環(huán)不是固定執(zhí)行8次,執(zhí) 行次數(shù)與產(chǎn)生的隨機數(shù)n有關(guān)系。23. 有以下程序:#include int f(int x) ; main() int n = 1, mm= f(f(f(n); printf(%dn, m);int f(int x) return x*2; 程序運行后的輸出結(jié)果是 ()。A) 8B) 2C) 4D) 1【解析】第一次調(diào)用m= f(f(f(1),第二次為m= f(f(2),第三次為m= f(4),即返回值為8。24. 以下敘述中錯誤的是 () 。A) 可以給指針變量賦一個整數(shù)作為地址值B) 函數(shù)可以返回地址值C) 改變函數(shù)形參的值,不會改變對應(yīng)實參的值D)

18、 當(dāng)在程序的開頭包含頭文件 stdio.h 時,可以給指針變量賦 NULL【解析】不能將一個整數(shù)直接賦給指針變量作為地址,所以A)是錯誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會傳遞給實參。25. 設(shè)已有定義:float x ;,則以下對指針變量p進行定義且賦初值的語句中正確的是()。A) int *p = (float)x ;B) float *p= &x;C) float p= &x;D) float *p= 1024;【解析】 指針是用來存放地址的變量, 用 ( 類型名 * 指針變量名 )的形式定義。賦值時應(yīng)將某個 變量地址即 &x 賦給指針變量,所以選擇 B)。26

19、. 以下數(shù)組定義中錯誤的是 ()。A) int x23= 1,2,3,4,5,6;B) int x3= 0;C) int x3= 1,2,3, 4,5,6;D) int x23= 1,2 , 3,4 , 5,6;【解析】D)選項中x23定義的是一個兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時卻賦成了三行,所以錯誤。27. 有以下程序:#include void fun( int a, int n) int i , t ;for(i = 0; in/2 ; i + ) t = ai ; ai = an 1 i ; an 1 i = t; main() int k10= 1,2,3,4,5,6,7,8

20、,9,10, i ;fun(k,5) ;for(i = 2; i8 ; i + ) printf(%d, ki);printf(n) ;程序的運行結(jié)果是 ()。A) 321678B) 876543C) 1098765D) 345678【解析】本題中的函數(shù)fun()的功能是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10 。所以打印輸出k2到k7元素的值,即321678,所以選擇A。28. 有以下程序:#include #define N 4void fun(int aN , int b) int i ;for (i = 0; iN ; i + )

21、 bi = aii aiN 1 i;main() int xNN= 1 , 2 , 3 , 4 , 5 , 6 , 7, 8 , 9,10,11,12, 13,14,15,16,yN , i ;fun (x , y) ;for (i = 0; iN ; i + ) printf(%d, , yi); printf(n);程序運行后的輸出結(jié)果是 ( ) 。A) 3, 1,1,3 ,B) 12, 3,0,0 ,C) 0,1,2,3 ,D) 3, 3, 3, 3,【解析】本題中由 fun 函數(shù)可知,b0 = a00 a03= 1 4= 3,b1 = a11 12=6 7 = 1, b2 = a22

22、21= 11 10= 1, b3 = a33 31= 16 13= 3。所以主函數(shù)中打印y數(shù)組元素的值為A)選項。29. 設(shè)有定義: char s81; int i =0;,以下不能將一行 (不超過 8 0個字符)帶有空格的字符串正確讀入的語句或語句組是 ()。A) gets(s) ;B) while(si = getchar() != n); si = 0;C) scanf(%s , s) ;D) do scanf(%c , &si); while(si != n); si = 0;【解析】字符串的輸入不能使用scanf(%s , s) ;而應(yīng)該使用 gets(s) 。30. 設(shè)有定義: c

23、har p= 1 , 2, 3, *q= p; ,以下不能計算出一個 char 型數(shù)據(jù)所占字節(jié)數(shù)的表達式是 () 。A) sizeof(p)B) sizeof(char)C) sizeof(*q)D) sizeof(p0)【解析】根據(jù)題目中的定義可以知道 sizeof(p),計算的是數(shù)組p中所有元素所占用的字節(jié)數(shù), 而不是 char 型數(shù)據(jù)所占字節(jié)數(shù)。31. 有以下程序:#include #include main() char str20= One*World , One*Dream! , *p = str1 ;printf(%d , , strlen(p) ; printf(%sn , p

24、) ;程序運行后的輸出結(jié)果是 ( ) 。A) 10, One*Dream!B) 9, One*Dream!C) 9, One*WorldD) 10, One*World【解析】p是指向二維字符數(shù)組第二行One*Dream的數(shù)組指針,所以長度是 10,打印輸出的也是該字符串。32. 有以下程序:#include main() char s= 012xy08s34f4w2;int i , n = 0;for ( i = 0; si ! = 0; i + )if(si = 0 & si = 9) n + + ;printf(%dn , n); 程序運行后的輸出結(jié)果是 ()。A) 0B) 3C) 7D

25、) 8【解析】本題中遇到 字符循環(huán)結(jié)束,所以只統(tǒng)計 之前的數(shù)字字符,所以為 3。33. 有以下程序:#include fun(int x , int y) static int m = 0, i = 2;i += m+ 1; m = i + x+ y; return m ;main() int j = 1, m= 1, k ;k= fun(j , m);printf(%d, , k);k= fun(j , m);printf(%dn, k);執(zhí)行后的輸出結(jié)果是 ()。A) 5, 11B) 5, 5C) 11, 11D) 11, 5【解析】聲明靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后,其占用的存儲單元不釋放

26、,在下次該函數(shù)調(diào)用時,該變量保留上一次函數(shù)調(diào)用結(jié)束時的值。本題子函數(shù)fun中的變量i和m均為靜態(tài)局部變量。所以第一次調(diào)用fun函數(shù),返回m勺值為5,第二次再調(diào)用fun函數(shù)時,i的值為3, m的值已經(jīng)是5 了,所以執(zhí)行 i += m+ 1, i 的值變?yōu)?9, m= i + x+ y= 9 + 1 + 1= 11。34. 在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是A) auto 和 staticB) extern 和 registerC) auto 和 registerD) static 和 register【解析】 auto :函數(shù)中的局部變量,動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動

27、態(tài)存儲區(qū)中,在調(diào)用 該函數(shù)時系統(tǒng)會給它們分配存儲空間, 在函數(shù)調(diào)用結(jié)束時就自動釋放這些存儲空間。 register 為了提高效率,C語言允許將局部變量的值放在CPI中的寄存器中,這種變量叫”寄存器變量”,; struct ord a ;錯誤,不B)選項或者D)選項的格式。只有局部自動變量和形式參數(shù)可以作為寄存器變量。 extern :外部變量 ( 即全局變量 ) 是在函數(shù) 的外部定義的,它的作用域為從變量定義處開始,到本程序文件的末尾。如果外部變量不在文 件的開頭定義,其有效的作用范圍只限于定義處到文件終了。 static :靜態(tài)局部變量屬于靜態(tài) 存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整

28、個運行期間都不釋放。35.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。A)struct ord int x ; int y ;intz ; struct ord aB)struct ord int x ; int y ;intz ; ; struct ordC)struct ord int x ; int y ;intz ; a ;D)struct int x ; int y ; int z; a ;a解析】 A) 選項 struct ord int x; int y ; int z能在定義結(jié)構(gòu)體的同時,又用結(jié)構(gòu)體類型名定義變量。應(yīng)該寫成36. 有以下程序:# include typedef str

29、uct intbp; A ;void f(A c) /*注意:c 是結(jié)構(gòu)變量名 */ int j ;c.b = 1 ;c.p= 2;main() int i ;A a =1,2;f(a) ;printf(%d , %dn , a.b , a.p) ; 程序運行后的輸出結(jié)果是 ()。A) 2,4B) 1,2C) 1,4D) 2,3【解析】結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù)和返回值。作為函數(shù)的實參時,可以實現(xiàn)函數(shù)的傳值 調(diào)用。當(dāng)使用結(jié)構(gòu)體變量作為函數(shù)的形參時,實參也應(yīng)該是結(jié)構(gòu)體變量名以實現(xiàn)傳值調(diào)用,實 參將拷貝副本給形參,在被調(diào)用函數(shù)中改變形參值對于調(diào)用函數(shù)中的實參沒有影響。所以選擇B) 。37. 以下敘述中正確的是 ()。A) 在C語言中,預(yù)處理命令行都以#開頭B) 預(yù)處理命令行必須位于 C源程序的起始位置C) #inelude 必須放在C程序的開頭D) C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能【解析】預(yù)處理命令是以#號開頭的命令,它們不是C

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論