計(jì)算機(jī)等級(jí)考試二級(jí)c語(yǔ)言歷年單選題100道及答案_第1頁(yè)
計(jì)算機(jī)等級(jí)考試二級(jí)c語(yǔ)言歷年單選題100道及答案_第2頁(yè)
計(jì)算機(jī)等級(jí)考試二級(jí)c語(yǔ)言歷年單選題100道及答案_第3頁(yè)
計(jì)算機(jī)等級(jí)考試二級(jí)c語(yǔ)言歷年單選題100道及答案_第4頁(yè)
計(jì)算機(jī)等級(jí)考試二級(jí)c語(yǔ)言歷年單選題100道及答案_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言歷年單選題100道及答案

1.以下關(guān)于C語(yǔ)言變量定義的說法,正確的是()

A.變量可以先使用后定義

B.變量定義時(shí)必須賦初值

C.不同類型的變量可以在同一語(yǔ)句中定義

D.變量名可以使用C語(yǔ)言的關(guān)鍵字

答案:C

解析:C語(yǔ)言中不同類型的變量可以在同一語(yǔ)句中定義,如"inta,floatb;"o變量必須先定

義后使用,定義時(shí)不一定要賦初值,變量名不能使用C語(yǔ)言的關(guān)鍵字。

2.若有定義“inta=5,b=3;“,則表達(dá)式(a+b)/2的值是()

A.4.0

B.4

C.3.5

D.3

答案:B

解析:a+b為8,8除以2是整數(shù)除法,結(jié)果取整為4O

3.以下哪個(gè)是C語(yǔ)言的轉(zhuǎn)義字符()

A.'\a!

B.*a'

C."aH

D.a

答案:A

而析:W是C語(yǔ)言的轉(zhuǎn)義字符,表示響鈴。宜是字符常量,匕”是字符串常量,a是標(biāo)

識(shí)符。

4.執(zhí)行以下代碼后,變量x的值是()

intx=10;

x+=5;

A.10

B.15

C.5

D.20

答案:B

解析:x+=5等價(jià)于x=x+5,原來x為10,力口5后變?yōu)?5o

5.以下哪種循環(huán)結(jié)構(gòu)一定會(huì)執(zhí)行一次循環(huán)體()

A.for循環(huán)

B.while循環(huán)

C.do-while循環(huán)

D.以上都不是

答案:C

解析:do-while循環(huán)是先執(zhí)行循環(huán)體,再判斷條件,所以一定會(huì)執(zhí)行一次循環(huán)體。

6.若有數(shù)組定義“intarr[5]={1,2,3,4,5};",則arr[3]的值是()

A.1

B.2

C.3

D.4

答案:D

解析:數(shù)組下標(biāo)從0開始,arr[3]表示數(shù)組的第4個(gè)元素,值為4。

7.以下關(guān)于函數(shù)調(diào)用的說法,錯(cuò)誤的是()

A.函數(shù)可以嵌套調(diào)用

B.函數(shù)調(diào)用時(shí),實(shí)參和形參的類型必須一致

C.函數(shù)調(diào)用時(shí),實(shí)參可以是常量、變量或表達(dá)式

D.函數(shù)調(diào)用時(shí),實(shí)參和形參的個(gè)數(shù)可以不同

答案:D

解析:函數(shù)調(diào)用時(shí),實(shí)參和形參的個(gè)數(shù)必須相同,類型盡量一致。函數(shù)可以嵌套調(diào)用,實(shí)參

可以是常量、變量或表達(dá)式。

8.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

inti;

for(i=0;i<3;i++){

printf("%d",i);

L

A.012

B.123

C.0123

D.12

答案:A

解析:for循環(huán)從i=0開始,當(dāng)i<3時(shí)執(zhí)行循環(huán)體,依次輸出0、1、2。

9.以下關(guān)于指針的說法,正確的是()

A.指針只能指向變量

B.指針變量必須先初始化才能使用

C.指針的大小和所指向的數(shù)據(jù)類型有關(guān)

D.一個(gè)指針只能指向一種數(shù)據(jù)類型

答案:B

解析:指針變量必須先初始化才能使用,否則可能指向一個(gè)隨機(jī)地址。指針可以指向變量、

數(shù)組、函數(shù)等,指針的大小在同一系統(tǒng)中是固定的,一個(gè)指針可以通過強(qiáng)制類型轉(zhuǎn)換指向不

同的數(shù)據(jù)類型。

10.若有定義“charstr口=”hello";”,則strlen(str)的值是()

A.5

B.6

C.7

D.4

答案:A

解析:strlen函數(shù)計(jì)算字符串的長(zhǎng)度,不包括字符串結(jié)束符'\0',"hello"長(zhǎng)度為5。

11.以下哪個(gè)是C語(yǔ)言合法的標(biāo)識(shí)符()

A.2abc

B._abc

C.int

D.ab*c

答案:B

解析:C語(yǔ)言標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成,且不能以數(shù)字開頭,不能是關(guān)鍵字。

_abc符合要求,2abc以數(shù)字開頭,int是關(guān)鍵字,ab*c包含非法字符。

12.執(zhí)行以下代碼,變量y的值是()

、'、c

intx=5;

inty=++x;

A.5

B.6

C.4

D.7

答案:B

解析:++X是前置自增運(yùn)算符,先將X的值加1變?yōu)?,再將6賦值給y。

13.以下關(guān)于邏輯運(yùn)算符的說法,錯(cuò)誤的是()

A.&&是邏輯與運(yùn)算符

B.||是邏輯或運(yùn)算符

C.!是邏輯非運(yùn)算符

D.邏輯運(yùn)算符的運(yùn)算結(jié)果只能是0或1

答案:D

解析:邏輯運(yùn)算符的運(yùn)算結(jié)果在判斷真假時(shí)通常用0表示假,非0表示真,但在一些表達(dá)

式中可以根據(jù)運(yùn)算規(guī)則得到不同的非0值。

14.若有定義“inta[3][2]={{l,2},{3,4},{5,6}};",則a[l][l]的值是()

A.1

B.2

C.3

D.4

答案:D

解析:二維數(shù)組a[l][l]表示第2行第2列的元素,值為4。

15.以下關(guān)于函數(shù)返回值的說法,正確的是()

A.函數(shù)必須有返回值

B.函數(shù)返回值的類型可以和定義時(shí)不一致

C.函數(shù)返回值可以是一個(gè)數(shù)組

D,函數(shù)可以沒有返回值,用void表示

答案:D

解析:函數(shù)可以沒有返回值,用void表示。函數(shù)返回值的類型必須和定義時(shí)一致,函數(shù)不

能直接返回?cái)?shù)組,但可以返回指向數(shù)組的指針。

16.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

intx=10;

if(x>5){

printf("Yes");

}else{

printf("No");

1、

A.Yes

B.No

C.YesNo

D.無輸出

答案:A

解析:x=10大于5,滿足if條件,執(zhí)行if語(yǔ)句塊,輸出Yes。

17.以下關(guān)于字符數(shù)組和字符串的說法,錯(cuò)誤的是()

A.字符數(shù)組可以存儲(chǔ)字符串

B.字符串以'\0'結(jié)尾

C.字符數(shù)組的長(zhǎng)度一定等于存儲(chǔ)的字符串長(zhǎng)度

D.可以用strcpy函數(shù)復(fù)制字符串

答案:C

解析:字符數(shù)組的長(zhǎng)度可以大于存儲(chǔ)的字符串長(zhǎng)度,因?yàn)樽址枰浴甛0'結(jié)尾,字符數(shù)

組中可能有多余的空間。

18.若有指針定義"int*p;inta=5;p=&a;",則*p的值是()

A.5

B.指針p的地址

C.變量a的地址

D.不確定值

答案:A

解析:p指向變量a,*p表示取p所指向的變量的值,即a的值5o

19.以下關(guān)于switch語(yǔ)句的說法,正確的是()

A.switch語(yǔ)句中的case后面只能是常量表達(dá)式

B.switch語(yǔ)句中必須有default分支

C.switch語(yǔ)句中的case后面可以是變量

D.switch語(yǔ)句只能處理整數(shù)類型的表達(dá)式

答案:A

解析:switch語(yǔ)句中的case后面只能是常量表達(dá)式,default分支不是必須的,不能是變

量,switch語(yǔ)句可以處理整數(shù)類型、字符類型等可枚舉類型的表達(dá)式。

20.執(zhí)行以下代碼,變量z的值是()

intx=3,y=4;

intz=x>y?x:y;

A.3

B.4

C.7

D.1

答案:B

解析:這是一個(gè)三目運(yùn)算符,x>y為假,所以取y的值,z為4O

21.以下哪個(gè)是C語(yǔ)言的文件打開模式()

A.T

B.T

C.r

D.read

答案:B

解析:C語(yǔ)言文件打開模式用雙引號(hào)括起來的字符串表示,丁”表示以只讀模式打開文件。

22.若有數(shù)組定義"intarr口二{1,2,3,4,5};”,則sizeof(arr)/sizeof(arr[0])的值是()

A.5

B.10

C.20

D.1

答案:A

解析:sizeof(arr)得到數(shù)組的總字節(jié)數(shù),sizeof(arr[0])得到數(shù)組一個(gè)元素的字節(jié)數(shù),相除得

到數(shù)組元素的個(gè)數(shù)5o

23.以下關(guān)于遞歸函數(shù)的說法,錯(cuò)誤的是()

A.遞歸函數(shù)必須有終止條件

B.遞歸函數(shù)調(diào)用自身

C.遞歸函數(shù)效率一定比非遞歸函數(shù)高

D.遞歸函數(shù)可以解決一些復(fù)雜的問題

答案:C

解析:遞歸函數(shù)效率不一定比非遞歸函數(shù)高,因?yàn)檫f歸會(huì)有函數(shù)調(diào)用的開銷,且可能會(huì)導(dǎo)致

棧溢出。遞歸函數(shù)必須有終止條件,會(huì)調(diào)用自身,可以解決一些復(fù)雜問題。

24.執(zhí)行以下代碼,輸出結(jié)果是()

inti;

for(i=5;i>0;i-){

if(i==3)continue;

printf(n%d”,i);

L

A.54321

B.5421

C.54

D.3

答案:B

解析:當(dāng)i等于3時(shí),執(zhí)行continue語(yǔ)句,跳過本次循環(huán)的后續(xù)語(yǔ)句,繼續(xù)下一次循環(huán),

所以輸出5421。

25.以下關(guān)于結(jié)構(gòu)體的說法,正確的是()

A.結(jié)構(gòu)體成員只能是基本數(shù)據(jù)類型

B.結(jié)構(gòu)體變量不能作為函數(shù)參數(shù)

C.結(jié)構(gòu)體類型定義后必須立即定義變量

D.結(jié)構(gòu)體可以包含不同類型的成員

答案:D

解析:結(jié)構(gòu)體可以包含不同類型的成員,成員可以是基本數(shù)據(jù)類型、數(shù)組、指針等。結(jié)構(gòu)體

變量可以作為函數(shù)參數(shù),結(jié)構(gòu)體類型定義后不一定要立即定義變量。

26.若有定義ustructStudent(charname[20];intage;};structStudents={"Tom",20};”,則

s.age的值是()

A."Tom"

B.20

C.隨機(jī)值

D.無值

答案:B

解析:s.age表示結(jié)構(gòu)體變量s的age成員,值為20。

27.以下關(guān)于共用體的說法,錯(cuò)誤的是()

A.共用體的所有成員共享同一塊內(nèi)存

B.共用體同一時(shí)間只能使用一個(gè)成員

C.共用體的大小等于最大成員的大小

D.共用體成員的類型必須相同

答案:D

解析:共用體成員的類型可以不同,所有成員共享同一塊內(nèi)存,同一時(shí)間只能使用一個(gè)成員,

大小等于最大成員的大小。

28.執(zhí)行以下代碼,輸出結(jié)果是()

c

inta=10;

intb=20;

inttemp=a;

a=b;

b=temp;

printf("%d%d",a,b);

A.1020

B.2010

C.1010

D.2020

答案:B

解析:通過臨時(shí)變量temp交換了a和b的值,所以輸出2010。

29.以下關(guān)于位運(yùn)算符的說法,正確的是()

A.&是按位與運(yùn)算符

B.|是按位異或運(yùn)算符

C.八是按位或運(yùn)算符

D.-是左移運(yùn)算符

答案:A

蔡析:&是按位與運(yùn)算符,|是按位或運(yùn)算符,八是按位異或運(yùn)算符,?是按位取反運(yùn)算符。

30.若有定義“intx=5;",則表達(dá)式x?2的值是()

A.5

B.10

C.20

D.40

答案:C

解析:x?2表示將x的二進(jìn)制位左移2位,相當(dāng)于乘以2的2次方,5左移2位為

20o

31.以下哪個(gè)是C語(yǔ)言的標(biāo)準(zhǔn)輸入函數(shù)()

A.printf

B.scanf

C.getchar

D.putchar

答案:B

解析:scanf是C語(yǔ)言的標(biāo)準(zhǔn)輸入函數(shù),用于從鍵盤讀取數(shù)據(jù)。printf是輸出函數(shù),getchar

用于讀取單個(gè)字符,putchar用于輸出單個(gè)字符。

32.若有數(shù)組定義“charstr[]="abc";",則str[l]的值是()

A.'a'

B.'b'

C.'c'

D.'\0'

答案:B

解析:數(shù)組下標(biāo)從0開始,str[l]表示字符串的第2個(gè)字符,為'b'o

33.以下關(guān)于函數(shù)重載的說法,在C語(yǔ)言中()

A.支持函數(shù)重載

B.不支持函數(shù)重載

C.部分支持函數(shù)重載

D,只有在特定情況下支持函數(shù)重載

答案:B

解析:C語(yǔ)言不支持函數(shù)重載,函數(shù)名必須唯一。

34.執(zhí)行以下代碼,輸出結(jié)果是()

inti;

for(i=0;i<5;i++){

if(i%2==0)break;

printf(n%d”,i);

A.01234

B.13

c.無輸出

D.0

答案:c

解析:當(dāng)i=0時(shí),i%2==0成立,執(zhí)行break語(yǔ)句,跳出循環(huán),所以無輸出。

35.以下關(guān)于指針數(shù)組的說法,正確的是()

A.指針數(shù)組的元素都是指針

B.指針數(shù)組不能存儲(chǔ)字符串

C.指針數(shù)組的大小是固定的

D.指針數(shù)組只能存儲(chǔ)整數(shù)指針

答案:A

而析:指針數(shù)組的元素都是指針,可以存儲(chǔ)字符串指針等不同類型的指針,其大小可以在定

義時(shí)指定,也可以通過動(dòng)態(tài)分配改變。

36.若有定義“int*arr[3];",則arr是()

A.一個(gè)指向整數(shù)的指針

B.一個(gè)包含3個(gè)整數(shù)的數(shù)組

C.一個(gè)包含3個(gè)指向整數(shù)的指針的數(shù)組

D.一個(gè)指向包含3個(gè)整數(shù)的數(shù)組的指針

答案:C

解析:int*arr[3];定義了一個(gè)包含3個(gè)指向整數(shù)的指針的數(shù)組。

37.以下關(guān)于宏定義的說法,錯(cuò)誤的是()

A.宏定義是在編譯時(shí)進(jìn)行替換的

B.宏定義可以帶參數(shù)

C.宏定義可以嵌套使用

D.宏定義的作用域是整個(gè)程序

答案:D

解析:宏定義的作用域從定義處到文件結(jié)束或被#undef取消,不是整個(gè)程序。宏定義在編

譯時(shí)進(jìn)行替換,可以帶參數(shù),也可以嵌套使用。

38.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

#defineADD(a,b)a+b

intresult=ADD(2,3)*4;

printf("%d",result);

A.20

B.14

C.24

D.10

答案:B

解析:宏替換后result=2+3*4,根據(jù)運(yùn)算符優(yōu)先級(jí),先乘后加,結(jié)果為14。

39.以下關(guān)于文件操作的說法,正確的是()

A.文件打開后必須立即關(guān)閉

B.文件操作完成后不需要關(guān)閉文件

C.文件關(guān)閉后可以繼續(xù)對(duì)其進(jìn)行讀寫操作

D.可以同時(shí)打開多個(gè)文件

答案:D

解析:可以同時(shí)打開多個(gè)文件。文件打開后不一定要立即關(guān)閉,但操作完成后必須關(guān)閉文件,

關(guān)閉后不能再對(duì)其進(jìn)行讀寫操作。

40.若要以追加模式打開一個(gè)文本文件,應(yīng)該使用的打開模式是()

A."r"

B."w"

C."a"

D."rb"

答案:C

解析:“a”表示以追加模式打開一個(gè)文本文件?!皉”是以只讀模式打開,"w”是以只寫模式

打開并會(huì)清空原文件內(nèi)容,"rb"是以二進(jìn)制只讀模式打開。

41.以下關(guān)于動(dòng)態(tài)內(nèi)存分配的說法,正確的是()

A.動(dòng)態(tài)內(nèi)存分配的空間在棧上

B.使用malloc函數(shù)分配內(nèi)存不需要指定大小

C.動(dòng)態(tài)分配的內(nèi)存使用完后不需要釋放

D,可以使用free函數(shù)釋放動(dòng)態(tài)分配的內(nèi)存

答案:D

解析:動(dòng)態(tài)內(nèi)存分配的空間在堆上,使用malloc函數(shù)需要指定分配的內(nèi)存大小,動(dòng)態(tài)分配

的內(nèi)存使用完后必須使用free函數(shù)釋放,否則會(huì)造成內(nèi)存泄漏。

42.若有代碼"int*p=(int*)malloc(sizeof(int));",則以下說法正確的是()

A.p指向一個(gè)整數(shù)變量

B.p指向一個(gè)整數(shù)數(shù)組

C.p沒有分配到內(nèi)存

D.p分配的內(nèi)存大小是不確定的

答案:A

蔡析:該代碼使用malloc函數(shù)動(dòng)態(tài)分配了一個(gè)整數(shù)大小的內(nèi)存空間,并將其地址賦給指針

P,所以p指向一個(gè)整數(shù)變量。

43.以下關(guān)于typedef的說法,正確的是()

A.typedef只能用于定義基本數(shù)據(jù)類型的別名

B.typedef定義的別名和原類型本質(zhì)不同

C.typedef可以為自定義類型定義別名

D.typedef定義的別名不能用于函數(shù)參數(shù)類型

答集:C

解析:typedef可以為基本數(shù)據(jù)類型、自定義類型(如結(jié)構(gòu)體、枚舉等)定義別名,定義的

別名和原類型本質(zhì)相同,可以用于函數(shù)參數(shù)類型。

44.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

typedefintINT;

INTnum=10;

printf("%d",num);

A.10

B.隨機(jī)值

C.無輸出

D.編譯錯(cuò)誤

答案:A

解析:使用typedef為int定義了別名INT,num是INT類型的變量,值為10,輸出10。

45.以下關(guān)于枚舉類型的說法,錯(cuò)誤的是()

A.枚舉類型的常量默認(rèn)從0開始編號(hào)

B,可以為枚舉常量指定值

C.枚舉常量可以作為函數(shù)返回值

D.枚舉類型的大小一定是1字節(jié)

答案:D

解析:枚舉類型的大小取決于系統(tǒng),不一定是1字節(jié)。枚舉類型的常量默認(rèn)從0開始編號(hào),

可以為其指定值,也可以作為函數(shù)返回值。

46.若有定義aenumColor{RED,GREEN,BLUE};enumColorc=GREEN;”,則c的值

是()

A.O

B.1

C.2

D.不確定

答案:B

解析:枚舉常量RED從0開始編號(hào),GREEN為1,BLUE為2,所以c的值是1。

47.以下關(guān)于條件編譯的說法,正確的是()

A.條件編譯只能在預(yù)處理階段處理

B.條件編譯不能嵌套使用

C.條件編譯只能根據(jù)宏定義進(jìn)行判斷

D.條件編譯的作用是提高程序運(yùn)行效率

答案:A

解析:條件編譯是在預(yù)處理階段處理的,可以嵌套使用,不僅能根據(jù)宏定義判斷,還能根據(jù)

其他條件。其主要作用是方便程序的調(diào)試和移植,不是提高運(yùn)行效率。

48.執(zhí)行以下代碼,輸出結(jié)果是()

'、'c

#defineDEBUG

#ifdefDEBUG

printf("Debugmode\n");

#else

printf("Releasemode\n");

#endif

A.Debugmode

B.Releasemode

C.無輸出

D.編譯錯(cuò)誤

答案:A

解析:因?yàn)槎x了宏DEBUG,所以滿足#ifdefDEBUG條件,輸出Debugmode。

49.以下關(guān)于函數(shù)指針的說法,正確的是()

A.函數(shù)指針不能作為函數(shù)參數(shù)

B.函數(shù)指針只能指向一個(gè)函數(shù)

C.函數(shù)指針的類型和所指向的函數(shù)類型必須一致

D.函數(shù)指針不能調(diào)用所指向的函數(shù)

答案:C

解析:函數(shù)指針的類型和所指向的函數(shù)類型必須一致。函數(shù)指針可以作為函數(shù)參數(shù),可以指

向不同的函數(shù),也可以通過函數(shù)指針調(diào)用所指向的函數(shù)。

50.若有函數(shù)定義"intadd(inta,intb){returna+b;},以下定義函數(shù)指針并初始化的正確

方式是()

A.int(*p)(int,int)=add;

B.int*p(int,int)二add;

C.intp(int,int)=add;

D.(*intp)(int,int)=add;

答案:A

解析:定義函數(shù)指針的正確形式是返回類型(*指針名X參數(shù)類型列表),所以int(*p)(int,int)

=add;是正確的。

51.以下關(guān)于內(nèi)存對(duì)齊的說法,正確的是()

A.內(nèi)存對(duì)齊會(huì)增加內(nèi)存使用效率

B.內(nèi)存對(duì)齊只影響結(jié)構(gòu)體的內(nèi)存布局

C.不同編譯器的內(nèi)存對(duì)齊規(guī)則相同

D.內(nèi)存對(duì)齊會(huì)導(dǎo)致結(jié)構(gòu)體實(shí)際占用內(nèi)存大于成員總大小

答案:D

解析:內(nèi)存對(duì)齊會(huì)導(dǎo)致結(jié)構(gòu)體實(shí)際占用內(nèi)存大于成員總大小,它會(huì)降低內(nèi)存使用效率,不僅

影響結(jié)構(gòu)體,也影響其他數(shù)據(jù)類型的內(nèi)存布局,不同編譯器的內(nèi)存對(duì)齊規(guī)則可能不同。

52.若有結(jié)構(gòu)體定義"structData{charc;inti;在一般情況下,該結(jié)構(gòu)體的大小是()

A.5字節(jié)

B.8字節(jié)

C.4字節(jié)

D.1字節(jié)

答案:B

解析:由于內(nèi)存對(duì)齊,char類型占1字節(jié),int類型通常占4字節(jié),為了保證int類型的

地址是4的倍數(shù),char后面會(huì)填充3字節(jié),所以結(jié)構(gòu)體大小為8字節(jié)。

53.以下關(guān)于預(yù)處理指令include的說法,錯(cuò)誤的是()

A.#include可以包含頭文件

B.#include可以包含自定義文件

C.include只能包含一次文件

D.#include有兩種形式:尖括號(hào)和雙引號(hào)

答案:C

解析:include可以多次包含同一個(gè)文件,它可以包含頭文件和自定義文件,有尖括號(hào)(用

于包含系統(tǒng)頭文件)和雙引號(hào)(用于包含自定義文件)兩種形式。

54.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

#include<stdio.h>

#defineSQUARE(x)x*x

intmain(){

intresult=SQUARE(2+3);

printf(H%d",result);

return0;

!、

A.25

B.11

C.5

D.編譯錯(cuò)誤

答案:B

解析:宏替換后result=2+3*2+3,根據(jù)運(yùn)算符優(yōu)先級(jí),結(jié)果為11。

55.以下關(guān)于遞歸函數(shù)終止條件的說法,正確的是()

A.終止條件可以有多個(gè)

B.終止條件必須是常量

C.終止條件只能在遞歸函數(shù)開頭判斷

D.沒有終止條件遞歸函數(shù)也能正常結(jié)束

答案:A

蔡析:遞歸函數(shù)的終止條件可以有多個(gè),不一定要是常量,可以在函數(shù)體的合適位置判斷,

沒有終止條件遞歸函數(shù)會(huì)無限遞歸,無法正常結(jié)束。

56.若有遞歸函數(shù)"intfactorial(intn){if(n==0||n==1)return1;elsereturnn*factorial(n-

1);}",調(diào)用factorial(3)的結(jié)果是()

A.3

B.6

C.9

D.12

答案:B

解析:factorial(3)=3*factorial(2)=3*2*factorial1)=3*2*1=6。

57.以下關(guān)于二維數(shù)組作為函數(shù)參數(shù)的說法,正確的是()

A.二維數(shù)組作為函數(shù)參數(shù)時(shí),第一維大小必須指定

B.二維數(shù)組作為函數(shù)參數(shù)時(shí),第二維大小必須指定

C.二維數(shù)組不能作為函數(shù)參數(shù)

D.二維數(shù)組作為函數(shù)參數(shù)時(shí),兩維大小都不需要指定

答案:B

解析:二維數(shù)組作為函數(shù)參數(shù)時(shí),第二維大小必須指定,第一維大小可以不指定。

58.若有函數(shù)定義"voidprintArray(intarr[][3],introws){for(inti=0;i<rows;i++){for(intj

=0;j<3;j++){printf("%d",arr[i][j]);}}}”,調(diào)用該函數(shù)時(shí),傳入的二維數(shù)組第二維大小

必須是()

A.任意大小

B.2

C.3

D.與第一維大小相同

答案:C

解析:函數(shù)定義中指定了二維數(shù)組的第二維大小為3,調(diào)用時(shí)傳入的二維數(shù)組第二維大小必

須是3o

59.以下關(guān)于文件指針的說法,正確的是()

A.文件指針只能指向文本文件

B.文件指針在文件關(guān)閉后仍然有效

C.文件指針可以用于讀寫文件

D.一個(gè)文件指針只能打開一個(gè)文件

答案:c

解析:文件指針可以用于讀寫文件,它可以指向文本文件或二進(jìn)制文件,文件關(guān)閉后文件指

針無效,一個(gè)文件指針在同一時(shí)間只能打開一個(gè)文件,但可以在不同時(shí)間打開不同文件。

60.若有代碼“FILE*3=fopen("test.txt",,若文件打開失敗,fp的值是()

A.0

B.1

C.NULL

D.隨機(jī)值

答案:C

解析:fopen函數(shù)打開文件失敗時(shí)返回NULLo

61.以下關(guān)于字符處理函數(shù)的說法,正確的是()

A.isdigit函數(shù)用于判斷字符是否為字母

B.isalpha函數(shù)用于判斷字符是否為數(shù)字

C.tolower函數(shù)用于將大寫字母轉(zhuǎn)換為小寫字母

D.toupper函數(shù)用于將小寫字母轉(zhuǎn)換為數(shù)字

答案:C

解析:isdigit函數(shù)用于判斷字符是否為數(shù)字,isalpha函數(shù)用于判斷字符是否為字母,tolower

函數(shù)用于將大寫字母轉(zhuǎn)換為小寫字母,toupper函數(shù)用于將小寫字母轉(zhuǎn)換為大寫字母。

62.執(zhí)行以下代碼,輸出結(jié)果是()

、''c

charch='A';

printf("%c",tolower(ch));

A.'A'

B.'a'

C.65

D.97

答案:B

解析:tolower函數(shù)將大寫字母'N轉(zhuǎn)換為小寫字母'a'并輸出。

63.以下關(guān)于字符串處理函數(shù)的說法,錯(cuò)誤的是()

A.strcpy函數(shù)用于復(fù)制字符串

B.strcat函數(shù)用于連接字符串

C.strcmp函數(shù)用于比較字符串長(zhǎng)度

D.strlen函數(shù)用于計(jì)算字符串長(zhǎng)度

答案:C

解析:strcmp函數(shù)用于比較兩個(gè)字符串的大小,不是比較字符串長(zhǎng)度。strcpy用于復(fù)制字

符串,strcat用于連接字符串,strlen用于計(jì)算字符串長(zhǎng)度。

64.若有代碼”charstrl[20]="hello";charstr2[20]="world";strcat(strl,str2);”,則strl的

值是()

A."hello"

B."world"

C."helloworld"

D."helloworld"

答案:C

解析:strcat函數(shù)將str2連接到strl后面,所以strl的值為"helloworld"0

65.以下關(guān)于指針運(yùn)算的說法,正確的是()

A.指針可以和整數(shù)相加

B.指針可以和指針相減,但結(jié)果無意義

C.指針不能和指針比較大小

D.指針不能進(jìn)行自增自減運(yùn)算

答案:A

解析:指針可以和整數(shù)相加,指針和指針相減得到的是兩個(gè)指針之間元素的個(gè)數(shù),指針可以

比較大小,指針也可以進(jìn)行自增自減運(yùn)算。

66.若有定義"intarr[5]={1,2,3,4,5};int*p=arr;",則p+2指向的元素是C)

A.1

B.2

C.3

D.4

答案:C

解析:p指向數(shù)組arr的首元素,p+2指向數(shù)組的第3個(gè)元素,值為3。

67.以下關(guān)于結(jié)構(gòu)體指針的說法,正確的是()

A.結(jié)構(gòu)體指針不能訪問結(jié)構(gòu)體成員

B.訪問結(jié)構(gòu)體成員時(shí),結(jié)構(gòu)體指針必須用->運(yùn)算符

C.結(jié)構(gòu)體指針不能作為函數(shù)參數(shù)

D.結(jié)構(gòu)體指針只能指向一個(gè)結(jié)構(gòu)體變量

答案:B

解析:訪問結(jié)構(gòu)體成員時(shí),結(jié)構(gòu)體指針必須用->運(yùn)算符,它可以訪問結(jié)構(gòu)體成員,可以作

為函數(shù)參數(shù),也可以指向不同的結(jié)構(gòu)體變量。

68.若有定義ustructPerson{charname[20];intage;};structPersonp={"Tom",20};struct

Person*ptr=&p;",則訪問p的age成員的正確方式是()

A.ptr.age

B.ptr->age

C.*ptr.age

D.(*ptr).age

答案:B

解析:對(duì)于結(jié)構(gòu)體指針ptr,訪問其指向的結(jié)構(gòu)體成員age可以用ptr->age或(*ptr).age,

這里選Bo

69.以下關(guān)于位運(yùn)算的應(yīng)用,錯(cuò)誤的是()

A,可以用按位與運(yùn)算判斷一個(gè)數(shù)的奇偶性

B.可以用按位異或運(yùn)算交換兩個(gè)數(shù)的值

C.可以用左移運(yùn)算實(shí)現(xiàn)乘法

D,可以用右移運(yùn)算實(shí)現(xiàn)除法,但只能是整除

答案:D

解析:右移運(yùn)算實(shí)現(xiàn)除法時(shí),對(duì)于正數(shù)是整除,但對(duì)于負(fù)數(shù)結(jié)果可能不符合預(yù)期。按位與運(yùn)

算可以判斷奇偶性,按位異或運(yùn)算可以交換兩個(gè)數(shù)的值,左移運(yùn)算可以實(shí)現(xiàn)乘法。

70.若有代碼“intx=5;inty=x&1;",則y的值是()

A.0

B.1

C.5

D.2

答案:B

解析:5的二進(jìn)制是101,1的二進(jìn)制是001,按位與運(yùn)算后結(jié)果為001,即1,所以y的

值是lo

71.以下關(guān)于函數(shù)調(diào)用時(shí)參數(shù)傳遞的說法,正確的是()

A.實(shí)參和形參的存儲(chǔ)單元是同一個(gè)

B.傳值調(diào)用時(shí),形參的改變會(huì)影響實(shí)參

C.傳址調(diào)用時(shí),實(shí)參傳遞的是變量的地址

D.函數(shù)調(diào)用時(shí),實(shí)參和形參的類型可以完全不同

答案:C

解析:傳址調(diào)用時(shí),實(shí)參傳遞的是變量的地址。實(shí)參和形參有各自獨(dú)立的存儲(chǔ)單元,傳值調(diào)

用時(shí)形參的改變不影響實(shí)參,函數(shù)調(diào)用時(shí)實(shí)參和形參類型應(yīng)盡量一致。

72.若有函數(shù)定義"voidswap(inta,intb){inttemp=a;a=b;b=temp;}",調(diào)用該函數(shù)不能

實(shí)現(xiàn)兩個(gè)整數(shù)交換的原因是(),

A.函數(shù)沒有返回值

B.采用了傳值調(diào)用

C,函數(shù)參數(shù)類型錯(cuò)誤

D.函數(shù)體邏輯錯(cuò)誤

答案:B

解析:該函數(shù)采用傳值調(diào)用,形參的改變不影響實(shí)參,所以不能實(shí)現(xiàn)兩個(gè)整數(shù)的交換。

73.以下關(guān)于數(shù)組名作為函數(shù)參數(shù)的說法,正確的是()

A.數(shù)組名作為函數(shù)參數(shù)時(shí),傳遞的是數(shù)組的副本

B.數(shù)組名作為函數(shù)參數(shù)時(shí),函數(shù)內(nèi)部不能修改數(shù)組元素的值

C.數(shù)組名作為函數(shù)參數(shù)時(shí),本質(zhì)上傳遞的是數(shù)組首元素的地址

D.數(shù)組名作為函數(shù)參數(shù)時(shí),函數(shù)定義中必須指定數(shù)組的大小

答案:C

解析:數(shù)組名作為函數(shù)參數(shù)時(shí),本質(zhì)上傳遞的是數(shù)組首元素的地址,函數(shù)內(nèi)部可以修改數(shù)組

元素的值,傳遞的不是數(shù)組的副本,函數(shù)定義中第一維大小可以不指定。

74.若有函數(shù)定義"voidprintArray(intarr[],intsize){for(inti=0;i<size;i++){printf("%d",

arr[i]);}}",調(diào)用該函數(shù)時(shí)傳入數(shù)組名,以下說法正確的是()

A.函數(shù)內(nèi)部會(huì)重新分配一個(gè)和原數(shù)組一樣大小的數(shù)組

B.函數(shù)內(nèi)部可以修改原數(shù)組的元素值

C.函數(shù)只能處理固定大小的數(shù)組

D.函數(shù)無法訪問原數(shù)組的元素

答案:B

解析:函數(shù)內(nèi)部可以通過傳入的數(shù)組首地址訪問和修改原數(shù)組的元素值,不會(huì)重新分配數(shù)組,

也可以處理不同大小的數(shù)組。

75.以下關(guān)于枚舉類型和整數(shù)的關(guān)系,正確的是()

A.枚舉常量不能賦值給整數(shù)變量

B.整數(shù)變量不能賦值給枚舉變量

C.枚舉常量和整數(shù)可以進(jìn)行比較

D.枚舉類型和整數(shù)類型完全不同,不能相互轉(zhuǎn)換

答案:C

解析:枚舉常量可以賦值給整數(shù)變量,整數(shù)變量在一定范圍內(nèi)也可以賦值給枚舉變量,枚舉

常量和整數(shù)可以進(jìn)行比較,它們?cè)谝欢ǔ潭壬峡梢韵嗷マD(zhuǎn)換。

76.若有定義“enumWeekday{MON,TUE,WED,THU,FRI,SAT,SUN};enumWeekday

day=MON;intnum=day;",則num的值是()

A.0

B.1

C.2

D.7

答案:A

解析:枚舉常量默認(rèn)從0開始編號(hào),MON為0,將day(值為MON)賦值給整數(shù)變量num,

num的值為0o

77.以下關(guān)于宏定義和函數(shù)的區(qū)別,錯(cuò)誤的是()

A.宏定義在編譯時(shí)展開,函數(shù)在運(yùn)行時(shí)調(diào)用

B.宏定義沒有參數(shù)類型檢查,函數(shù)有參數(shù)類型檢查

C.宏定義會(huì)增加程序的執(zhí)行時(shí)間,函數(shù)不會(huì)

D.宏定義可能會(huì)產(chǎn)生副作用,函數(shù)相對(duì)更安全

答案:C

解析:宏定義在編譯時(shí)直接展開,不會(huì)增加程序的執(zhí)行時(shí)間,而函數(shù)調(diào)用有一定的開銷。宏

定義在編譯時(shí)展開,無參數(shù)類型檢查,可能產(chǎn)生副作用;函數(shù)在運(yùn)行時(shí)調(diào)用,有參數(shù)類型檢

查,相對(duì)更安全。

78.執(zhí)行以下代碼,輸出結(jié)果是()

'、'c

#defineMAX(a,b)((a)>(b)?(a):(b))

intx=5,y=3;

intresult=MAX(x++,y++);

printf("%d%d%d",result,x,y);

A.564

B.354

C.553

D.編譯錯(cuò)誤

答案:A

解析:宏替換后result=((x++)>(y++)?(x++):(y++)),先比較x和y,止匕時(shí)x=5,y=3,

x大,取x的值,之后x再自增兩次變?yōu)?,y自增一次變?yōu)?,所以結(jié)果為564o

79.以下關(guān)于文件讀寫操作的說法,正確的是()

A.fgetc函數(shù)只能從文本文件中讀取字符

B.fputc函數(shù)只能向文本文件中寫入字符

C.fread函數(shù)只能讀取二進(jìn)制文件

D.fwrite函數(shù)可以向文本文件或二進(jìn)制文件寫入數(shù)據(jù)

答案:D

解析:fgetc和fputc可用于文本文件和二進(jìn)制文件,fread和fwrite也可用于文本文件和

二進(jìn)制文件。fwrite函數(shù)可以向文本文件或二進(jìn)制文件寫入數(shù)據(jù)。

80.若要從文件中讀取一個(gè)整數(shù),以下正確的做法是()

A.使用fgetc函數(shù)讀取每個(gè)字符再轉(zhuǎn)換為整數(shù)

B.使用fscanf函數(shù)直接讀取整數(shù)

C.使用fread函數(shù)讀取整個(gè)文件內(nèi)容再提取整數(shù)

D,以上都不對(duì)

答案:B

解析:fscanf函數(shù)可以按照指定格式從文件中讀取數(shù)據(jù),可直接用于讀取整數(shù)。fgetc一次

讀取一個(gè)字符,操作繁瑣;fread一般用于按塊讀取二進(jìn)制數(shù)據(jù)。

81.以下關(guān)于動(dòng)態(tài)內(nèi)存分配失敗的處理,正確的是()

A,不需要處理,程序會(huì)自動(dòng)終止

B.繼續(xù)使用分配失敗的指針

C.檢查返回值是否為NULL,若為NULL進(jìn)行相應(yīng)處理

D.重新定義指針類型

答案:C

解析:使用動(dòng)態(tài)內(nèi)存分配函數(shù)(如malloc)時(shí),應(yīng)檢查返回值是否為NULL,若為NULL

表示分配失敗,需進(jìn)行相應(yīng)處理,如輸出錯(cuò)誤信息、釋放已分配的其他內(nèi)存等。

82.若有代碼"int*p=(int*)malloc(10*sizeof(int));if(p==NULL){//處理代碼)”,這里

檢查p是否為NULL的目的是()

A.確保分配的內(nèi)存大小正確

B.檢查指針類型是否正確

C.判斷內(nèi)存分配是否成功

D.避免指針越界

答案:C

解析:malloc函數(shù)分配內(nèi)存失敗時(shí)返回NULL,檢查p是否為NULL是為了判斷內(nèi)存分

配是否成功。

83.以下關(guān)于typedef和#define的區(qū)別,正確的是()

A.typedef是預(yù)處理指令,#define是關(guān)鍵字

B.typedef只能為基本數(shù)據(jù)類型定義別名,#define可以為任意內(nèi)容定義別名

C.typedef定義的別名有類型檢查,#define只是簡(jiǎn)單的文本替換

D.typedef和#define作用完全相同

答案:C

解析:typedef是關(guān)鍵字,用于為類型定義別名,有類型檢查;#define是預(yù)處理指令,只是

簡(jiǎn)單的文本替換。typedef不僅能為基本數(shù)據(jù)類型,也能為自定義類型定義別名。

84.執(zhí)行以下代碼,說法正確的是()

、''c

typedefintINTEGER;

#defineINTint

INTEGERa=5;

INTb=10;

A.a和b的類型本質(zhì)不同

B.代碼存在編譯錯(cuò)誤

C.a和b都是int類型的變量

D.只有a是int類型的變量

答案:C

解析:typedef為int定義了別名INTEGER,#define用INT替換int,所以a和b都是

int類型的變量。

85.以下關(guān)于結(jié)構(gòu)體嵌套的說法,正確的是()

A.結(jié)構(gòu)體不能嵌套自身

B.結(jié)構(gòu)體嵌套時(shí),內(nèi)層結(jié)構(gòu)體的成員不能被直接訪問

C.結(jié)構(gòu)體嵌套會(huì)增加內(nèi)存使用量,但不影響訪問效率

D.結(jié)構(gòu)體嵌套只能嵌套一層

答案:B

解析:結(jié)構(gòu)體可以嵌套自身(通過指針實(shí)現(xiàn)),可以嵌套多層。結(jié)構(gòu)體嵌套時(shí),內(nèi)層結(jié)構(gòu)體

的成員不能被直接訪問,需要通過外層結(jié)構(gòu)體成員逐層訪問。嵌套會(huì)增加內(nèi)存使用量,也可

能影響訪問效率。

86.若有定義“structDate{intyear;intmonth;intday;};structPerson{charname[20];struct

Datebirthday;};structPersonp;w,訪問p的生日年份的正確方式是()

A.p.year

B.p.birthday.year

C.p->birthday.year

D.birthday.year

答案:B'

解析:p是結(jié)構(gòu)體變量,要訪問其嵌套的結(jié)構(gòu)體birthday的year成員,使用p.birthday.year。

p不是指針,不能用birthday不是獨(dú)立變量,不能直接訪問。

87.以下關(guān)于共用體和結(jié)構(gòu)體的區(qū)別,錯(cuò)誤的是()

A.共用體所有成員共享同一塊內(nèi)存,結(jié)構(gòu)體成員有各自獨(dú)立的內(nèi)存

B.共用體同一時(shí)間只能使用一個(gè)成員,結(jié)構(gòu)體可以同時(shí)使用多個(gè)成員

C.共用體的大小取決于最大成員的大小,結(jié)構(gòu)體的大小是成員大小之和

D,共用體和結(jié)構(gòu)體的定義語(yǔ)法不同

答案:C

解析:結(jié)構(gòu)體的大小由于內(nèi)存對(duì)齊等原因,不一定是成員大小之和。共用體所有成員共享同

一塊內(nèi)存,同一時(shí)間只能使用一個(gè)成員,大小取決于最大成員;結(jié)構(gòu)體成員有各自獨(dú)立內(nèi)存,

可同時(shí)使用多個(gè)成員,定義語(yǔ)法也不同。

88.若有定義"unionData{inti;floatf;};unionDatad;d.i=10;",此時(shí)訪問d.f的值()

A.一定是10

B.是不確定的

C.編譯錯(cuò)誤

D.會(huì)引發(fā)運(yùn)行時(shí)錯(cuò)誤

答案:B

解析:共用體成員共享同一塊內(nèi)存,給d.i賦值后再訪問d.f,由于int和float存儲(chǔ)方式

不同,d.f的值是不確定的。

89.以下關(guān)于函數(shù)嵌套調(diào)用和遞歸調(diào)用的說法,正確的是()

A.函數(shù)嵌套調(diào)用是指函數(shù)調(diào)用自身,遞歸調(diào)用是指函數(shù)調(diào)用其他函數(shù)

B.函數(shù)嵌套調(diào)用和遞歸調(diào)用都可能導(dǎo)致棧溢出

C.函數(shù)嵌套調(diào)用沒有終止條件,遞歸調(diào)用有終止條件

D.函數(shù)嵌套調(diào)用效率一定比遞歸調(diào)用高

答案:B

解析:函數(shù)嵌套調(diào)用是指一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù),遞歸調(diào)用是指函數(shù)調(diào)用自身。兩者都可

能因調(diào)用層次過深導(dǎo)致棧溢出。函數(shù)嵌套調(diào)用和遞歸調(diào)用都可以有合適的邏輯控制,遞歸調(diào)

用必須有終止條件。嵌套調(diào)用和遞歸調(diào)用效率高低不能簡(jiǎn)單判定。

90.以下遞歸函數(shù)用于計(jì)算斐波那契數(shù)列第n項(xiàng),若n較大,該函數(shù)存在的主要問題是()

'、'c

intfibonacci(intn){

if(n==0||n==1)returnn;

elsereturnfibonacci(n-1)+fibonacci(n-2);

1、

A.代碼邏輯錯(cuò)誤

B.計(jì)算結(jié)果錯(cuò)誤

C.效率低下,存在大量重復(fù)計(jì)算

D,無法處理n為負(fù)數(shù)的情況

答案:C

解析:該遞歸函數(shù)計(jì)算斐波那契數(shù)列時(shí),存在大量重復(fù)計(jì)算,如計(jì)算fibonacci(n-1)時(shí)會(huì)

重復(fù)計(jì)算fibonacci(n-2)等,導(dǎo)致效率低下。代碼邏輯正確,能正確計(jì)算結(jié)果,可通過添

加判斷處理n為負(fù)數(shù)的情況。

91.以下關(guān)于指針和數(shù)組的關(guān)系,錯(cuò)誤的是()

A.數(shù)組名可以隱式轉(zhuǎn)換為指向首元素的指針

B.可以用指針訪問數(shù)組元素

C.指針和數(shù)組完全相同,使用上沒有區(qū)別

D.指針可以指向數(shù)組的任意元素

答案:C

解析:數(shù)組名在很多情況下可隱式轉(zhuǎn)換為指向首元素的指針,可用指針訪問數(shù)組元素,指針

也能指向數(shù)組任意元素。但指針和數(shù)組并不完全相同,數(shù)組有固定大小,指針是變量可指向

不同地址,使用上有區(qū)別。

92.若有定義“intarr[5]={l,2,3,4,5};int*p=arr;",以下表達(dá)式中與arr[2]等價(jià)的是()

A.*(p+2)

B.p[2]

C.以上都是

D.只有A正確

答案:C

解析:p指向數(shù)組arr的首元素,p+2指向數(shù)組第3個(gè)元素,*(p+2)等價(jià)于arr[2];指

針也可像數(shù)組一樣使用下標(biāo)訪問元素,p[2]也等價(jià)于arr[2]o

93.以下關(guān)于條件編譯指令#ifndef和

溫馨提示

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

評(píng)論

0/150

提交評(píng)論