國家二級C語言機試(C語言程序設(shè)計)模擬試卷34_第1頁
國家二級C語言機試(C語言程序設(shè)計)模擬試卷34_第2頁
國家二級C語言機試(C語言程序設(shè)計)模擬試卷34_第3頁
國家二級C語言機試(C語言程序設(shè)計)模擬試卷34_第4頁
國家二級C語言機試(C語言程序設(shè)計)模擬試卷34_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(C語言程序設(shè)

計)模擬試卷34

一、選擇題(本題共40題,每題1.0分,共40分。)

1、下列敘述中正確的是()。

A、循環(huán)隊列中的元素個數(shù)隨隊頭指針與隊尾指針的變化而動態(tài)變化

B、循環(huán)隊列中的元素個數(shù)隨隊頭指針的變化而動態(tài)變化

C、循環(huán)隊列中的元素個數(shù)隨隊尾指針的變化而動態(tài)變化

D、以上說法都不對

標準答案:A

知識點解析:在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用隊頭指

針front指向隊頭元素的前一個位置因此,從隊頭指針front指向的后一個位置直

到隊尾指針rear指向的位置之間,所有的元素均為隊列中的元素。所以循環(huán)隊列

中的元素個數(shù)隨隊頭指針和隊尾指針的變化而變化。故A選項正確。

2、下列關(guān)于棧的敘述中,正確的是()。

A、棧底元素一定是最后入棧的元素

B、棧頂元素一定是最先入棧的元素

C、棧操作遵循“先進后出''的原則

D、以上說法均錯誤

標準答案:C

知識點解析:棧頂元素總是后被插入的元素,也是最先被刪除的元素;棧底元素總

是最先被插入的元素,也是最后才被刪除的元素;棧的修改是按“后進先出”的原則

進行的。因此,棧稱為“先進后出”表,或“后進先出''表,故C選項正確。

3、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為

()。

A、BCA

B、CBA

C、ABC

D、CAB

標準答案:C

知識點解析:后序序列為CBA,中序序列為ABC,則說明,A為根結(jié)點,并且B

和C均在A的右子樹上;結(jié)點B和C中,后序序列為CB,中序序列為BC,則說

明結(jié)點C在結(jié)點B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答

案選C。

4、結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。

A、程序的規(guī)模

B、程序的效率

C、程序設(shè)計語言的先進性

D、程序易讀性

標準答案:D

知識點解析:結(jié)構(gòu)化程序設(shè)計強調(diào)的是程序的易讀性。

5、為了使模塊盡可能獨立,要求()。

A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B、模塊的內(nèi)聚程度耍盡量高,且各模塊間的耦合程度要盡量弱

C、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

標準答案:B

知識點解析?:系統(tǒng)設(shè)計的質(zhì)量主要反映在模塊的獨立性上。評價模塊獨立性的主要

標準有兩個:一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度;二是模

塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地

弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。

6、在結(jié)構(gòu)化方法中,軟件功能屬于軟件開發(fā)中的()階段。

A、詳細設(shè)計

B、需求分析

C、總體設(shè)計

D、編程調(diào)試

標準答案:C

知識點解析:總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體

實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復

雜的功能進一步分解.分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果

一個處理的功能過分復雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。

7、下列敘述中正確的是()。

A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)

B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)

C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

D、以上說法均錯誤

標準答案:A

知識點解析:程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)、數(shù)據(jù)的邏輯結(jié)構(gòu)、程序的控制結(jié)

構(gòu)、所處理的數(shù)據(jù)量等有關(guān)。

8、關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。

A、若干個二維表

B、一個DBF文件

C、一個DBC文件

D、若干個DBC文件

標準答案:A

知識點解析:在關(guān)系數(shù)據(jù)庫中,一個表就是一個關(guān)系,關(guān)系數(shù)據(jù)庫管理系統(tǒng)管理的

關(guān)系就是多個二維表。

9、結(jié)構(gòu)化程序設(shè)計中,下面對goto語句使用描述正確的是()。

A、禁止使用goto語句

B、使用goto語句程序效率高

C、應避免濫用got。語句

D、以上說法均錯誤

標準答案:C

知識點解析:結(jié)構(gòu)化程序設(shè)計中,要注意盡量避免got。語句的使用,故C選項正

確。

10、設(shè)有如下三個關(guān)系表:下列操作中正確的是()。

A、T=RCIS

B、T=RUS

C、T=RxS

D、T=R/S

標準答案:B

知識點解析:兩個相同結(jié)構(gòu)關(guān)系的“并”是由屬于這兩個關(guān)系的元組組成的集合。

11、以下選項中合法的標識符是()。

A、_11

B、1—1

C、1_1

D、1

標準答案:A

知識點解析:標識符由字母、數(shù)字或下畫線組成,并且數(shù)字不能開頭。故A選項

是合法的標識符。

12、以下敘述中錯誤的是()。

A、C程序經(jīng)過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文

B、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

C、用C語言編寫的程序稱為源程序,它以ASCH代碼形式存放在一個文本文件中

D、C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序

標準答案:B

知識點解析:C語言程序編譯時將每條可執(zhí)行語句轉(zhuǎn)換為二進制的機器指令,但非

執(zhí)行語句(如注釋語句)不被編譯。所以選項B錯誤.

13、若有定義:inta=0,b=0,c=0,d=0;,有C語言表達式(a++&&b++)?c++:

d++,以下關(guān)于其執(zhí)行順序的敘述中正確是()。

A、先執(zhí)行a++,表達式a++的值為0,由此即可確定(a++&&b++)值為0,因比執(zhí)

行d++

B、先執(zhí)行a++,表達式a++的值為0:再執(zhí)行b++,表達式b++的值為0,由此可

確定(a++&&b++)值為0,因此執(zhí)行d++

C、先執(zhí)行a++,表達式a++的值為1;再執(zhí)行b++,表達式b++的值為1,由此可

確定(a++&&b++)值為1,因此執(zhí)行C++

D、先執(zhí)行b++,表達式b++的值為1;再執(zhí)行a++,表達式a++的值為1,由此可

確定(a++&&b++)值為1,因此執(zhí)行c++

標準答案:A

知識點解析:把握前置運算和后置運算的基本運算規(guī)則。

14、表達式:(int)((douhle)9/2)—(9)%2的值是()。

A、0

B、3

C、4

D、5

標準答案:B

知識點解析:運算符和“%”的優(yōu)先級高于“一”,所以先進行除法和求余運算,

再進行減法運算。強制類型轉(zhuǎn)換表達式的形式:(類型名)(表達式)?!?/2”結(jié)果為

4,轉(zhuǎn)換成double類型再轉(zhuǎn)換成int類型結(jié)果依然為4,(9)%2的結(jié)果為1,4—1的

最后結(jié)果為3o

15、以下選項中敘述正確的是()。

A、函數(shù)體必須由{開始

B、C程序必須由main語句開始

C、C程序中的注釋可以嵌套

D、C程序中的注釋必須在一行里完成

標準答案:A

知識點解析:函數(shù)體是函數(shù)首部下面的花括號內(nèi)的部分,所以函數(shù)休必須由{開

始,A項正確。一個源程序文件可以包括預處理命令、全局聲明、函數(shù)定義,程序

總是從main函數(shù)開始執(zhí)行的,不是rflain語句,B項錯誤。C程序中允許兩種注

釋,以//開頭的單行注釋;以/*開始,以*/結(jié)束的塊式注釋,D項錯誤。函數(shù)

可以嵌套,注釋不能嵌套,C項錯誤。

16、若有以下程序段:intr=8:printfC%d\n",r>>l);輸出結(jié)果是()。

A、16

B、8

C、4

D、2

標準答案:C

知識點解析?:C語言中“>>”是對二進制的右移運算符,右移相當于將原數(shù)做除二

操作,它將原數(shù)右移相應位數(shù),并將移出的位舍去,在高位補0,將所得的結(jié)果再

賦值給變量。本題中8的二進制為00001000,右移一位得到00000100,所以是

40

17、以下能對一維數(shù)組a進行初始化的語句是()。

A>inta[5]=(0,1,2,3,4);

inta(5)={};

C>inta[3]={0,I,2);

D、inta{5}={10*1);

標準答案:C

知識點解析:選項A,數(shù)組可以看作是若干個相同數(shù)據(jù)類型元素的有序集合,因此

以集合的形式對其初始叱,使用{}對其初始化;選項BD,常量表達式只能放在中

括號口中.故「選項正確C

18、若有定義:inta;floatb;doublec;,程序運行時輸入:123V回車>,能把

1輸入給變量a、把2輸入給變量b、把3輸入給變量c的輸入語句是()。

A、scanf("%d%f%ir,&a,&b,&c);

B、scanf("%d%f%l『.,&a,&b,&c);

C、scanf("%d%If%If',&a,&b,&c);

D、scanf("%d%f%f,&a,&b,&c):

標準答案:A

知識點解析:在scanf()函數(shù)中,a變量為整數(shù)用%d格式字符串,a變量為單精度

數(shù)用%f格式字符串,a變量為雙精度數(shù)用%lf格式字符串,只有A選項正確。

19、下列數(shù)據(jù)中屬于“字符串常量”的是()。

A、

B、{ABC}

C、abc\O,

D、a'

標準答案:A

知識點解析:在C語言中,若干個字符構(gòu)成字符串,用單引號標識字符,用雙引

號標識字符串。選項A,用雙引號標識字符串,正確:選項B和C,分別用花括

號和單引號標識字符串,錯誤;選項D,標識字符。故A選項正確。

20、當變量C的值不為2、4、6時,值為“真”的表達式是()。

A、(c==2)||(c==4)||(c==6)

13、(c>=2&&c<=6)||(c!=3)||(c!=5)

C、(c>=2&&c<=6)&&!(c%2)

D、(c>=2&&c<=6)&&(c%2!=l)

標準答案:B

知識點解析:本題主要考查的是邏輯表達式。邏輯與運算中只有兩邊的表達式同時

為真,最后結(jié)果才為真;參與邏輯或運算的表達式只要有一個為真,最后結(jié)果就為

真。選項A中表達式的意思是當c等于2或4或6時,表達式的值為真,否則為

假,所以不滿足題意。選項C中表達式的意思是當c大于等于2且小于等于6,并

且c不是奇數(shù)時,表達式的值為真,否則為假。此時滿足該表達式的c只能取值為

2、4、6,所以也不滿足題意。選項D中后面一個子表達式(c%21=1)和選項C中

的!(c%2)是等價的,都是判斷c不是奇數(shù),因此也不滿足題意。故B選項正確。

21、有以下程序:#include<stdio.h>main()(floata,b,C,t:a=3;b=7;

c=l;if(a>b){t=a;a=b.b=t;)if(a>c){t=a;a=c;c=t;)if(b>c){t=b;b=c;

c=t;)printf("%5.2f,%5.2f,%5.2f,a,b,c);}程序運行后的輸出結(jié)果

是(其中口代表空格)()。

A、口口3.00,口口1.00,口口7.00

B、口口3.00,口口7.00,口口1.00

C、口口I.00.口口3.00,□□7.()0

D、口口7.00,口口3.00,□□1.00

標準答案:C

知識點解析:本題考查if語句。該題包含了3個if語句,每個if語句后的{}都不

可省略,因為每個什中都包含了多條語句。首先判斷條件a>b,由于3小于7,表

達式a>b不成立,因此不執(zhí)行{l=a;a=b;b=t;);然后判斷條件a>c,由于3大

于1,因此表達式a>c成立,則執(zhí)行{t=a;a=c;c=t;),該表達式語句是用來交

換a和c的值,執(zhí)行完后a為1,c為3;然后判斷條件b>c,由于7大于c中的

3,因此b>c成立,則執(zhí)行{t=b.b=c;c=t;},過程同上,執(zhí)行后b為3,c為

7。printf語句用來輸出a,b,c中的值,并且要求輸出的每個數(shù)據(jù)寬度為5個空

格,小數(shù)部分保留2位,數(shù)據(jù)右對齊。故最后輸出為C選項中所示結(jié)果。

22、有以下程序:#include<stdio.h>main(){inta=Lb=0;for(;a<5;a++)

{if(a%2==0)break;continue;b+=a:)printf("%d\n",b):}程序運行后的輸出

結(jié)果是()。

A、0

B、1

C、10

D、4

標準答案:A

知識點解析:第一次循環(huán),a=l,a%2!=0所以執(zhí)行break,整個循環(huán)結(jié)束,所以

b=0o

23、有以下程序:#include<stdio.h>main()(intstlm=10,n=l;while(n<3)

{sum=sum—n;n++;(pnntt("%d?%d"?n,sum);)程序運行后的輸出結(jié)果是

()o

A、2,8

B、3,7

C、3,8

D、2,7

標準答案:B

知識點解析:考查while循環(huán)。當循環(huán)條件n<3成立的時候,執(zhí)行循環(huán)體

(sum=sum—n;n++;)中的語句。循環(huán)初值sum為10,n為1。首先判斷循環(huán)條件

n73成立,開始第1次循環(huán),執(zhí)行sum=sum—n=10—1=9,執(zhí)彳jn十十,即將n中的

值加1,執(zhí)行后n為2;此時n中的值為2,sum中的值為9,循環(huán)條件n<3成

立,繼續(xù)執(zhí)行第2次循環(huán),執(zhí)行sum=sum—n=9一2=7,執(zhí)行n++,即將n中的值

加I,執(zhí)行后n為3;n為3時,循環(huán)條件不成立,結(jié)束循環(huán),輸出結(jié)果為3,7。

故B選項正確。

24、以下敘述中正確的是()。

A、數(shù)組說明符的一對方括號中只能使用整型常量,而不能使用表達式

B、一條語句只能定義一個數(shù)組

C、每個數(shù)組包含一組具有同一類型的變量.這些變量在內(nèi)存中占有連續(xù)的存儲單

D、在引用數(shù)組元素時,下標表達式可以使用浮點數(shù)

標準答案:C

知識點解析:同類元素的集合稱為數(shù)組,數(shù)組元素在內(nèi)存中占據(jù)連續(xù)的存儲空間,

答案C正確。方括號中可以為整型變量或者常量表達式,選項A錯。在使用逗號

運算符的情況下,一條語句可以定義多個數(shù)組,選項B錯。數(shù)組元素在數(shù)組中的

下標為整型常量或者變量構(gòu)成的整型表達式,不能為浮點數(shù),選項D錯。

25、以下敘述中正確的是()。

A、charcl,c2,*c3,c4[40];是合法的變量定義語句

B、數(shù)組下標的下限由數(shù)組中第一個#零元素的位置決定

C、數(shù)組下標的下限由數(shù)組中第一個被賦值元素的位置決定

D、數(shù)組下標的下限是1

標準答案:A

知識點解析:A正確,charcl,c2,*c3,c4[40]表示定義了兩個字符變量cl、c2,

一個字符指針c3,一個字符數(shù)組c4。數(shù)組的下限永遠為0,選項B、C、D錯,答

案選A。

26、設(shè)有定義:charp[]={T,2,3},*q=p;以下不能計算出一個char型數(shù)據(jù)

所占字節(jié)數(shù)的表達式是()。

A、sizeof(*q)

B、sizeof(char)

C、sizeof(p)

D、sizcot(ptOJ)

標準答案:C

知識點解析:數(shù)組名表示該數(shù)組的首地址,是一個地址常量,所以sizeof(p)求得的

是一個地址占用的字節(jié)數(shù),即4個字節(jié),答案選C。

27、以下敘述中正確的是()。

A、語句chara[2]={”a”,“b"):是合法的,定義了一個包含兩個字符的數(shù)組

B、語句inta口={0};是不合法的,遺漏了數(shù)組的大小

C、語句inta[8]={0};是合法的

D、語句chara[3]:a="ab":是合法的,因為數(shù)組有三個字符空間的容量,可以保

存兩個字符

標準答案:C

知識點解析:考查一維數(shù)組以及字符數(shù)組的初始化。初始化的時候可以只給數(shù)組的

前面一部分元素設(shè)定初值,故C正確。字符數(shù)組中的每個元素為一個字符,需要

用單引號,選項A錯。若對數(shù)組全部元素賦初值時,可以不指定數(shù)組元素的個

數(shù),選項B錯。定義字符數(shù)組時可以將字符串直接賦給該字符數(shù)組,其他情況則

不可以,選項D錯。答案選C。

28、有以下程序:#include<stdio.h>intk=5;voidf(int*s){s=&k;}main()

{intm=3,*p=&m;f(p):printf("Md%d\n",m,*p);}程序的運行結(jié)果是

()o

A、33

B、55

C>35

D、53

標準答案:A

知識點解析:考查函數(shù),'專參。C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,指針作

為函數(shù)參數(shù)時,形參仍然作為實參的副本被賦值,形參指針變量的指向改變不能影

響實參指針變量的指向,結(jié)果不變,答案選A。

29、有以下程序:#include<stdio.h>main(){intx[3][3]={1,2,3,4,5,6,

7,8,9),i;for(i=l;i<3;i++)printf(',%dH,x[i][3—i]);}程序運行后的輸出

結(jié)果是()。

A、2,4

B、6,8

C、3,7

D、2,6

標準答案:B

知識點解析:二維數(shù)組的起始行標和列標均為O,即x[0][0]=l。當i=l時,for循

環(huán)判斷條件成立,輸出x[l|[2]=6;此時i自增為2,開始第二次for循環(huán),條件成

立,輸出x[2][l]=8.故B選項正確。

3。、下列錯誤的定義是()。

A、int*p=&i,i;

int*p,i:

C、inti,*p=&i;

D、inti,*p;

標準答案:A

知識點解析:選項A,先定義一個整型指針變量p,然后將變量i的地址賦給p。

然而此時還未定義變量i,因此編譯器無法獲得變量i的地址,A選項錯誤。A與

C對比,選項C先定義變量i,則在內(nèi)存中為i分配空間,因此i在內(nèi)存空間的地址

就可以確定了,然后再定義p,此時可以為p賦i的地址,C選項正確。

31、有以下程序:#include<stdio.h>main(){inta[2][3]=((l,2,3),{4,5,

6)}:intb[3][2],i,j;for(i=0;i<=l;i++){for(j=0;j<=2;j++)

b[j][i]=a[i][j];}for(i=0;i<=2;i++){for(j=0;j<=l;j++)printf("%d",

b[j][j]);}}程序的運行結(jié)果是()。

A、123456

B、I35246

C、142536

D、132546

標準答案:C

知識點解析:本題考查for循環(huán)的嵌套以及二維數(shù)組的賦值和輸出。第一個for循

環(huán)嵌套用來給二維數(shù)組b中的各元素賦值,執(zhí)行完后得到b[3][2]={{l,4),{2,

5),{3,6}}。第二個for循環(huán)嵌套用來輸出二維數(shù)組b中的各元素。依次輸出為

b[0][0],b[0][l],b[l][0|,b[l][l],b[2][0],b[2][l],故輸出結(jié)果為132546。

,,

32、若有定義語句:charts1="GOOD",*s2="good;以下選項中,能夠輸出

“GOOD”語句是()。

A、if(strcmp(sl,s2)!=0)puts(s2);

B、if(strcmp(sl,s2)!=0)puts(sl);

C、if(strcmp(sl,s2)==l)puts(sl);

D、if(strcmp(sl,s2)==0)puts(sl);

標準答案:B

知識點解析:strcmp(sl,s2)是字符串比較函數(shù),比較方式是兩個字符串從左自右

逐個字符進行比價(按照ASCII碼值大小),以第一個不相同字符的大小作為比較結(jié)

果。由于大寫字母的ASCII碼值小于小寫字母的ASCII碼值,所以比較后的結(jié)果

為負值,故只有B選項符合題意。

33、有以卜程序:#include<stdio.h>unsignedfun(unsignednum){unsigned

k=l:do{k*=num%10;num/=10:}while(num):returnk:}main(){unsigned

n=26:printf("%d\nH,fun(n));}程序運行后的輸出結(jié)果是()。

A、12

B、10

C、16

D、8

標準答案:A

知識點解析:程序首先執(zhí)行main函數(shù),執(zhí)行primf「%d\n”,fun(n));即輸出表達

式fun(6)的值,為了計算該表達式,需要調(diào)用函數(shù)func。此時main將n中的26作

為實參傳遞給fun的num,即num值為26,接著執(zhí)行do—while語句。第1次循

環(huán),執(zhí)行k*=num%10,即k=k*(num%10)=1*(26%10)=6;執(zhí)行num/=10,即

num=num/10=26/10=2;while后面循環(huán)條件為num,此時num為2,是非0

值,即表示循環(huán)條件成立,繼續(xù)執(zhí)行循環(huán)體。此時k為6,num為2,執(zhí)行do-

while中的語句后,k為12,num為0。由丁,while后面循環(huán)條件為num,此時num

為0,表示循環(huán)條件不成立,結(jié)束循環(huán),執(zhí)行returnk,即返回至main函數(shù)中的被

調(diào)用處,執(zhí)行main函數(shù),執(zhí)行printf語句,輸出結(jié)果為12。

34、在C語言中,只有在使用時才占用內(nèi)存單元的變量的是()。

A、auto^11register

extern和register

C、autoflstatic

D、staticregister

標準答案:A

知識點解析:C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間。

auto變量的存儲單元是分配在內(nèi)存的動態(tài)存儲區(qū)中,每當進入函數(shù)體時自動分配存

儲單元。register變量也是自動類變量。static說明的變量為靜態(tài)變量,靜態(tài)變量在

內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結(jié)束。extern說明的變量

為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內(nèi)存空間。

35、若有如下定義:char*ps[]={"aa","bb",Hcc","dd");,則以下敘述中正確的

是()。

A、*ps[0]是字符,A,

B、*ps[0]是字符串“aa”

C、ps[0]是字符,A'

D、ps是字符串“aa”

標準答案:B

知識點解析:對于指針數(shù)組,ps|O|代表的就是第一個字符串的地址。

36、以下敘述中正確的是()。

A、在C語言中,預處理命令行都以#開頭

B、預處理命令行必須位于C源程序的起始位置

C、#include<stdio.h>必須放在C程序的開頭

D、C語言的預處理不能實現(xiàn)宏定義和條件編譯的功能

標準答案:A

知識點解析:C語言中,凡是以#開頭的都被稱為編譯預處理行,選項A正確;預

處理行可以放在C源程序的任何位置,習慣放在起始位置,選項B錯誤;語句

#include<stdio.h>必須放在使用文件stdio.h中用關(guān)方法的語句之前,但是不一

定非要放在C程序開頭,選項C錯誤;預處理包括宏定義、文件包含和條件編譯

等,選項D錯誤。

37、有以下程序:#include<stdio.h>main()(staticchara[]="Program",*ptr;

for(ptr=a;ptr<a+7;ptr+=2)putchar(*ptr);}程序運行后的結(jié)果為()。

A、Prog

B、Porm

C、rga

D、Por

標準答案:B

知識點解析:首先定義一個字符型數(shù)組a,并對a進行初始化,然后定義字符型指

針變量p。執(zhí)行for語句,ptr=a表示將數(shù)組a的地址賦給ptr;ptr<a+7代表循環(huán)條

件,ptr+=2,即ptr=ptr+2。執(zhí)行putchar(*ptr);即輸出*pt所對應的字符。此時ptr

指向數(shù)組中的第1個元素,即a[0],因此*ptr表示a[0]中的值,即P,此時輸出

P;然后執(zhí)行ptr+=2,此時ptr指向數(shù)組中的第3個元素,即a⑵,輸出0;然后執(zhí)

行阿+=2,此時凡指向數(shù)組中的第5個元素,即a[4],輸出r;然后執(zhí)行pir+=2,

此時ptr指向數(shù)組中的第6個元素.即輸出m:然后執(zhí)行ptr+=2.得到

ptr=a+8<a+7,即循環(huán)條件不成立,循環(huán)結(jié)束,最終輸出結(jié)果為Porm。

38、有以下程序:#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;

i++){fp=fopen("res.txt","w");fj)utc('K'+i,fp);fclose(fp);}}程序運行后,

在當前目錄下會生成一個res.txt文件,其內(nèi)容是()。

A、M

B、EOF

C、KLM

D、L

標準答案:A

知識點解析:通過三次循環(huán),最后i的值定格在2,最后儲存值,K,+2=,M1所以

最后保存的數(shù)值為M。注意:fclose函數(shù),每次都關(guān)閉文件,并且重新回到文件首

地址。

39、有以下程序:#include<stdio.h>structSt{intx:inty;}a[2]={5,7,2,

9);main(){printf("%dkn'\a[O].x);}程序運行后的輸出結(jié)果是()。

A、10

B、18

C、14

D、63

標準答案:c

知識點腦析:首先是定義結(jié)構(gòu)體st,st中共有兩個整型成員x,y。然后定義一個st

類型的數(shù)組a,a的長度為2,即數(shù)組中含有兩個st類型的元素,分別是a[0]和

a|l|o對a進行初始化,此題是按照存儲順序進行初始化,即將5賦給a[0]中的

x(即a[0].x=5),將7賦給a[0]中的y(即a[0].y=7),將2賦給a[l]中的x(即

a[l].x=2),將9賦給a⑴中的y(即a。].y=9)。執(zhí)行main函數(shù),輸出表達式

a[0].y*a[l].x的值,即7*2的值14。

40、下列關(guān)于C語言文件的敘述中正確的是()。

A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進制文件

B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進制文件或文本文件

C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進制文件或文本文件

D、文件由字符序列組成,其類型只能是文本文件

標準答案:C

知識點解析:C語言將文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字

節(jié))數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組成形式,可將文件分為兩種:①ASCII文件,又

稱文本(text)文件,它的每一個字節(jié)可放一個ASCH碼,代表一個字符;②二進制

文件,是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。所以

C文件就是一個字節(jié)流或一個二進制流。

二、程序填空題(本題共I題,每題7.0分,共[分0)

41、給定程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學生的學號、

姓名和3門課的成績。函數(shù)fun的功能是將該學生的各科成績都乘以一個系數(shù)a。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>

typedefstruct]intnum;charname[9];floatscore[3J;JSTU;voidshow(STUtt)

{inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%

5.if,tt.score[i]);printf(n\n");}/******found******/voidmodify(J.

*ss,floata){inti;for(i=0;i<3;i++)/******found******/ss—>_2

*=a;}main(){STUstd={1,"Zhanghua'1,76.5,78.0,82.0);floata;

printf("Theoriginalnumberandnameandscores:\n");show(std);printf("Inputa

number:");scanf("%f',&a);/******found******/modifvC3ya);

printf("Aresultofmodifying:\n");show(std);}

標準答案:(l)STU(2)score[i](3)&std

知識點解析:本題考查:數(shù)組變量賦值;函數(shù)實參定義。本題是利用結(jié)構(gòu)體存儲

學生記錄,對記錄進行修改并由實參SS返回。填空1:實參SS是一個結(jié)構(gòu)型指針

變量,所以應填STU。填空2:該學生的各科成績都乘以一個系數(shù)a,所以應填

score|i]o填空3:函數(shù)的調(diào)用,由于函數(shù)定義時使用的指針結(jié)構(gòu)型變量,所以應

填&std。

三、程序修改題(本題共1題,每題1.0分,共1分0)

42、以下給定程序中,函數(shù)fun的功能是:判斷輸入的任何一個正整數(shù)n,是否等

于某個連續(xù)正整數(shù)序列之和。若是,則輸出所有可能的序列。否則輸出“不能分

解“。例如:當輸入100時,輸出:100=9+10+11+12+13+14+15+16

100=18+19+20+21+22請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)

果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題

程序:#include<stdio.h>voidfun(intn){intj,b,c,m,flag=0;for(b=l;b<

=n/2.b++)[/******found******/n=m:c=b:while(m!=0&&m>=c){/

******jpQund******/JYI=nix:c++}/******found******/

{printf("%d=n,n);for(j=b;j<c—1;j++)printf("%d+",j);printf(H%d\n",

j);flag=1:}}if(flag=O)printf("不能分解\n"):}main(){intn;printf("請輸入

一個整數(shù):");scanf("%d'\&n);fun(n);}

標準答案:(l)m=n:(2)m=m―c;C++;(3)if(m==0)

知識點解析:(1)每次循環(huán),程序需要對n執(zhí)行減去連續(xù)的正整數(shù)序列,來判斷n

是否剛好為0,即n是否是連續(xù)的正整數(shù)序列之和,所以需要使用臨時變量m寄存

n的值,每次循環(huán)對m執(zhí)行減運算操作,不滿足繼續(xù)下一輪,另外程序聲明變量m

時,未初始化它的值,所以此處應該修改為:m=n:o(2)語法錯誤,C語言中每

個語句必須以分號結(jié)束,修改為:m=mr;C+

溫馨提示

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

最新文檔

評論

0/150

提交評論