國家二級(C語言)機(jī)試模擬試卷6_第1頁
國家二級(C語言)機(jī)試模擬試卷6_第2頁
國家二級(C語言)機(jī)試模擬試卷6_第3頁
國家二級(C語言)機(jī)試模擬試卷6_第4頁
國家二級(C語言)機(jī)試模擬試卷6_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)機(jī)試模擬試卷第1

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

1、一個棧的初始狀態(tài)為空。現(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次人

棧,然后再依次出棧,則元素出棧的順序是()。

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:棧是先進(jìn)后出的原則組織數(shù)據(jù),所以入棧最早的最后出棧,所以選擇

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

A、循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)

B、在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C、在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況

D、循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定的

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所

以A錯誤;在循環(huán)隊列中只需要隊頭指針與隊尾兩個指針來共同反映隊列中元素

的動態(tài)變化情況,所以B與C錯誤。

3、在長度為n的有序線性表中進(jìn)行二分查找,最坎情況下需要比較的次數(shù)是()。

A、D(n)

B、D(n2)

C、D(log2n)

D、D(nlog2n)

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:當(dāng)有序線性表為順序存儲時才能用二分法查找??梢宰C明的是對于長

度為n的有序線性表,在最壞情況下,二分法查找只需要比較log2n次,而順序查

找需要比較n次。

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

A、順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的

B、順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)

C、順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表

D、鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:鏈?zhǔn)酱鎯Y(jié)構(gòu)既可以針對線性結(jié)構(gòu)也可以針對非線性結(jié)構(gòu),所以B

與C錯誤。鏈?zhǔn)酱鎯Y(jié)構(gòu)中每個結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存

儲空間,所以D錯誤。

5、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。

A、控制流

B、事件驅(qū)動

C、模塊調(diào)用

D、數(shù)據(jù)流

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:數(shù)據(jù)流圖中帶箭頭的線段表示的是數(shù)據(jù)流,即沿箭頭方向傳送數(shù)據(jù)的

通道,一般在旁邊標(biāo)注數(shù)據(jù)流名。

6、在軟件開發(fā)中,需求分析階段可以使用的工具是()。

A、N-S圖

B、DFD圖

C、PAD圖

D、程序流程圖

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖(I)FD圖),數(shù)據(jù)字典

(D),判定樹與判定表,所以選擇B。

7、在面向?qū)ο蠓椒ㄖ?,不屬于“對象”基本特點(diǎn)的是()。

A、一致性

B、分類性

C、多態(tài)性

D、標(biāo)識唯一性

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:對象有如下一些基本特點(diǎn):標(biāo)識唯一性、分類性、多態(tài)性、封裝性、

模塊獨(dú)立性好。所以選擇A。

8、一間宿舍可住多個學(xué)生,則實(shí)體宿舍和學(xué)生之間的聯(lián)系是()。

A、一對一

B、一對多

C、多對一

D、多對多

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:因?yàn)橐婚g官舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)

生只能住一間宿舍,所以實(shí)體宿舍和學(xué)生之間是一對多的關(guān)系。

9、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A、人工管理階段

B、文件系統(tǒng)階段

C、數(shù)據(jù)庫系統(tǒng)階段

D、三個階段相同

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段

和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強(qiáng)物理性少,在

各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇c。

10、下列敘述中錯誤的是()。

A、C程序可以由多個程序文件組成

B、一個C語言程序只能實(shí)現(xiàn)一種算法

C、C程序可以由一個或多個函數(shù)組成

D、一個C函數(shù)可以單獨(dú)作為一個C程序文件存在

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在一個C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對算法的個數(shù)沒有

規(guī)定,所以B錯誤。

11、以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。

A、115L

B、0118

C、1.5el.5

D、0115

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:A選項(xiàng)中115L表示115是長整型數(shù)據(jù),合法。B選項(xiàng)是八進(jìn)制常量

的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B錯誤。C選項(xiàng)中。后面應(yīng)該

是整數(shù)不能是小數(shù)1.5,所以C錯誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是數(shù)字“(F開始,

而不是字母開始。

12、按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能現(xiàn)在標(biāo)識符中的是()。

A、大寫字母

B、下劃線

C、數(shù)字字符

D、連接符

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:C語言中標(biāo)識符由字母、下劃線、數(shù)字組成”且開頭必須是字母或下

劃線。所以D選項(xiàng)中的連接符不合法。

13、設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。

A^x=y+z+5,++yB)int(15.8%5)

B、x=y*5=x+z

C、x=25%5.0

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:B與D選項(xiàng)中取模運(yùn)算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B、

D錯誤。C選項(xiàng)中不能籽x+y的值賦給表達(dá)式y(tǒng)*5,所以C錯誤。

14、設(shè)有定義:intx=2:,以下表達(dá)式中,值不為6的是()。

A、2*x,x+=2

x++,2*x

C、x*c=(l+x)

D、x*=x+l

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:A選項(xiàng)中逗號表達(dá)式先計算第一表達(dá)式2*x,然后計算表達(dá)式x+=2

的值,即x=x+2即4,整個逗號表達(dá)式為第二個表達(dá)式的值4,所以選擇A。B選

項(xiàng)中首先計算逗號表達(dá)式中第一一表達(dá)式x++,此時x為3,在執(zhí)行第二個表達(dá)式

2*x=2*3=6,所以逗號表達(dá)式為第二個表達(dá)式的值6。C選項(xiàng)的賦值表達(dá)式可以表

示為x=x*(l+x)=2*(l+2)=6。D選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。

15、有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;

printf("%d,%d,%d\n”,x,y,z);)辿序運(yùn)行后的輸出結(jié)果是()。

A、2,3,3

B、2,3,2

C、2,3,1

D、2,2,1

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:7=x++.y++.++y:因?yàn)橘x值運(yùn)算符的優(yōu)先級高于逗號運(yùn)算符的優(yōu)先

級,所以可以將上式表不成(z=x++),(y++),(++y),然后從左向右先計算表達(dá)式

z=x++,因?yàn)閄++先使用后自增,所以z的值為1,x的值為2。再計算逗號表達(dá)式

第二個表達(dá)式y(tǒng)++,此時y的值為2,最后計算第三個表達(dá)式++y,y的值為3。

16、有以下程序:#includemain(){charcl,c2;cl='A'+'8'-'4':c2='A'+'8'

一5:printfC%c,%d\n”,cl,c2);}已知字母A的ASCII馬為65,程序運(yùn)行

后的輸出結(jié)果是()。

A、E,68

B、D,69

C、E,D

D、輸出無定值

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:本題目中字符變量cl是字符,AWJASCII碼加上4,即69所對應(yīng)的

字符'EL字符變量c2是字符,A,的ASCH碼加上3,即68所對應(yīng)的字符但是

打印輸出時,cl以%<:的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

17、若有定義intx,y;并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(x—

y)?(x++):(丫++)中的條件表達(dá)式(x—y)等價的是()。

A、(x-y<0IIx—y>0)

B、(x—y<0)

C>(x—y>0)

D、(x—y==0)

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:條件表達(dá)式:x二表達(dá)式1?表達(dá)式2:表達(dá)式3的含義是:先求解表達(dá)

式1,若為非0(真),則求解表達(dá)式2,將表達(dá)式2的值賦給X。若表達(dá)式1的值為

0(假),則求解表達(dá)式3,將表達(dá)式3的值賦給X。在本題中與表達(dá)式1:(X—y)等

價的是(x—y<0IIx—y>0)o

18、有以下程序:#includemain(){intx=l,y=0;if(!x)y++;elseif(x==0)

if(x)y+=2;elsey+=3:printf("%d\n",y);}程序運(yùn)行后的輸出結(jié)果是()。

A、3

B、2

C、1

D、0

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:在i「else語句中else總是與離它最近的if配對。本題目中x為1所

以!x為0,所以執(zhí)行elseif語句中的內(nèi)容,判斷(x==0)是否成立,因?yàn)閤為1所以

條件不成立,所以elseif內(nèi)部的if…else語句不再執(zhí)行,所以y的值還是初始值

0o

19、若有定義:floatx=l.5;inta=Lb=3,c=2;則正確的switch語句是()。

A、switch(a+b)(case1:pr4nfR"*\n");case2+1:printtf'**\n");}

B、switch((int)x);{case1:prinftf'*\n");case2:print1“**\n");}

C^switch(x){case1.0:prinff("*\n");case2.0:prinff("**\n");)

D、switch(a+b){ease1:printf("*\n");easec:printf("*\rT);)

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:B選項(xiàng)中switch((int)x);語句中不應(yīng)該有最后的分號。

switch(exprl),中的exprl不能用浮點(diǎn)類型或long類型,也不能為一個字符串,所

以C錯誤。case后面常量表達(dá)式的類型必須與switch后面表達(dá)式的類型一致,所

以D錯誤。

20、有以卜程序:#includemain(){inty=9;for(;y>0;y----)if(y%

3=0)printf("%d",一一y);}程序運(yùn)行后的輸出結(jié)果是()。

A、852

B、963

C、741

D、875421

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:第一次f。「循環(huán),y的值為9,y%3的值為0,滿足條件打印一一y,

即先減一后打印,所以打印8;第二次for循環(huán),y的值為7,y%3的值為1,不執(zhí)

行打印語句;第三次而循環(huán),y的值為6,y%3的值為0,滿足條件打印一一y,

即先減一后打印,所以打印5;第四次for循環(huán),y的值為4,不滿足if條件,不執(zhí)

行打印語句;第五次f?!秆h(huán),y的值為3,滿足if條件,打印輸出2;第六次for

循環(huán),y的值為I,不滿足條件,不執(zhí)行打印語句。

21、有以下程序:#includemain(){inti,j,m=l;for(i=l;i<3;i++){for(i=3;

j>0;j-----){if(i*j>3)break;m*=i*j;}}prinff("m=%d\n",m);}程序運(yùn)行后

的輸出結(jié)果是()。

A^m=4

B、m=2

C^m=6

D、m=5

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:第一次外循環(huán)i的值為1,第一次內(nèi)循環(huán)j的值為3,不滿足條件執(zhí)行

m*=i*j即m的值為3;第二次j的值為2,不滿足條件執(zhí)行即m的值為

6;第三次j的值為1,不滿足條件執(zhí)行即m的值仍為6。第二次外循環(huán)i

的值為2,j的值為3,滿足條件,執(zhí)行break語句,跳出循環(huán)。

22、有以下程序:#inckideintfun(intx,inty){if(x!=Y)retiiin((x+y)/2);else

rcturn(x);}main(){inta=4,b=5?e=6;printf("%d\n",fun(2*a?fun(b,

e)));))程序運(yùn)行后的輸出結(jié)果是()。

A、6

B、3

C、8

D、12

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:本題中第一次調(diào)用為。fun(8,fun(5,6)),閃為fun(5,6)返回值為

5,所以第二次調(diào)用為fun(8,5)=6o所以選擇A。

23、有以下程序:#includeintadd(intayintb){retum(a+b);}main(){intk,

(*f)(),a=5,b=10;f=add:...}則以下函數(shù)調(diào)用語句錯誤的是()。

A^k=f(a,b);

B、k=add(a,b);

C、k=(*f)(a,b);

D^k=*f(a,b);

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:D選項(xiàng)中旺(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即

該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量ko

24>有以下程序:#includemain(){intn,*p=NULL:*p=&n:prinfT(t4Input

n:");8eanfT%d”,&p);prinff(44outputn:");prinffT%d\n”,P);}該程序試

圖通過指針P為變量n讀人數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句正確的是

()o

A、intn,*p=NULL;

B、*p=&n;

C、scanf('、%d”,&p)

D、printfT'%d\n",P);

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:選項(xiàng)B的正確寫法應(yīng)為p=&n;選項(xiàng)C的正確寫法應(yīng)為scanf("%d”,

p);選項(xiàng)D的正確寫法應(yīng)為printf("%d\n",*p)<>

25、下列定義數(shù)組的語句中,正確的是()。

A、#defmcN10

B、intN=10;intx|N|;intx[N];

C、intx[0...10];

D>intx[];

標(biāo)準(zhǔn)答案:A

知識點(diǎn)》析:數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。B選項(xiàng)中

N是變量,不能用變量定義數(shù)組長度。C選項(xiàng)中數(shù)組長度是非法的一串?dāng)?shù)字。定義

數(shù)組時必須為其指明長度,D選項(xiàng)中數(shù)組長度為空,所以非法。

26、有以下程序:includemain(){inta[]={2,3,5,4),i;for(i=0:i<4;i++)

switch(i%2)(ease0:switch(a[i]%2){ease0:a[i]++;break;case1:a[i]?

—;)break;easeI:a[i]=0;)for(i:0;i<4;i+-)printf("%d",a|i]);prinfff'\

,,

n):)程序運(yùn)行后的輸出結(jié)果是()。

A、0304

B、2050

C、3344

D、3040

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:第一次循環(huán)i為0,i%2為0,執(zhí)行switch(a[0]%2)中的case。語句后

內(nèi)容即a[0]++,a[0]的值變成3;第二次循環(huán)i的值為1,i%2為1,執(zhí)行easel:

a[i]=0;所以a[l]的值變成0;第三次循環(huán)i的值為2,i%2為0,執(zhí)行

switch(a[2]%2)中的case1語句后的內(nèi)容a[2]—一,a[2]的值變成4;第四次循環(huán)i

的值為3,i%2為1,執(zhí)行easel:a[i]=0;所以a⑶的值變成0。

27、有以卜程序:#includemain(){intb[3][3]={0,22,0?22,O,1,2),

i,j,t=l;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];prinfff%d\

n",t);}程序運(yùn)行后的輸出結(jié)果是()。

A、3

B、4

C、1

D、9

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時

t=t+b[O][b[O][O]]=l+b[O][O]=l+O=l;第二次外循環(huán)時

t=t4-b[l][b[l][l]]=l+b[l][l]=l+l=2;第三次外循環(huán)時

t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4o

28、以下語句中存在語法錯誤的是()。

,,,,

A、charss[6][20];ss[l]=right?:

B、char8S()[20]={,,rightr};

C、char*ss[6];ss[l]=,,right?M;

D、char水ss(尸{“right?”}:

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:數(shù)組定義后,不可以對數(shù)組整體賦值,S是二維數(shù)組,因SS⑴是一維

字符數(shù)組,即字符串,字符串賦值可以使用s【rcpy(ss[l],“right");這樣的形式,

而選項(xiàng)A中對二維數(shù)組中的第“廣維(相當(dāng)于一個一維數(shù)組)賦值,是不可以的。選

項(xiàng)B和D是定義時對數(shù)組初始化,這是可以的。選項(xiàng)C中,將字符串在內(nèi)存中的

首地址賦給指針數(shù)組的一個元素,這是可以的。

29、以下不能將s所指字符串正確復(fù)制到t所指存儲空間的是()。

A、do{*t++=*s++;}while(*s);

R、for(i=0:t[i]=s[i]:i++):

C、while(*t=*s)(t++;s++;)

D、for(i=0,j=0;t[i++]=s[j++];);

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:do{*t++=|s++;)while(*s);不能因?yàn)楫?dāng)*s=,\O'時,while(os)跳出

循環(huán),這樣字符串結(jié)束標(biāo)志'\0'沒有復(fù)制給*3造成}I不完整。注意,*l++=*s++

是先執(zhí)行t=*s,然后才進(jìn)行t=t+Ls=s+l。B、C、D都能將,\O'復(fù)制過去。

30、有以下程序:#includevoidswap(char*x,ehar^y){chart;t=*x;*x=y;

*y=t;)main(){char*sl:uabeM,*s2="123";swap(sl,s2);prinfK"%s,%s\

n”,si,s2);}}程序執(zhí)行后的輸出結(jié)果是()。

A、321,cba

B、abe,123

C>123,abe

D、Ibc,a23

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:字符串是一個特殊的數(shù)組,所以按照數(shù)組的規(guī)則,si應(yīng)該指向的是

數(shù)組的首地址,即“abc”的第一個字符的地址。s2指向的是“123”的第一個字符的地

址。調(diào)用swap函數(shù)之后交換的是兩個字符串的第一個字符H和T的內(nèi)容,所以打

印輸出為D.

31、有以下函數(shù):intfun(char*x,char*y)(intn=0:while((*x==*y)&&rlcX!=t\

0'){x++;y++;n++;)return(I;}函數(shù)的功能是()。

A、將y所指字符串賦給x所指存儲空間

B、查找X和y所指字符串中是否有、\0,

C、統(tǒng)計X和y所指字符串中最前面連續(xù)相同的字符個數(shù)

D、統(tǒng)計x和y所指字符串中相同的字符個數(shù)

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:本題中由循環(huán)條件可知遇到'0'或x與y所指的字符的值不等中的

一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個

數(shù)。

32、有以下程序:#includeintfun(){staticintx=l:x*=2:returnx;)main(){int

i,s=l:for(i=l;i<=3;i++)s*=fun();printf("%d'n",s);}程序運(yùn)行后的輸出

結(jié)果是()。

A、10

B、30

C、0

D、64

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:本題目中靜態(tài)局部變量x,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整

個運(yùn)行期間都不釋放。所以第一次循環(huán)s的值為2,第二次循環(huán)中,返回的x的值

為4,所以*的值為X,第二次循環(huán),返心的x的值為X,所以*的值為64。

33、在一個C源程序文件中所定義的全局變量,其作用域?yàn)?)。

A、由具體定義位置和extern說明來決定范圍

B、所在程序的全部范圍

C、所在函數(shù)的全部范圍

D、所在文件的全部范圍

標(biāo)準(zhǔn)答案:A

知識之解析:全局變量的作用域是從聲明處到文件的結(jié)束。所以選擇A)。

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

A、可以通過typedef增加新的類型

B、可以用typedef將已存在的類型用一個新的名字來代表

C、用typedef定義新的類型名后,原有類型名仍有效

D、用typedef可以為各種類型起別名,但不能為變量起別名

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:關(guān)鍵字typedef的作用只是將C語言中的已有的數(shù)據(jù)類型作了置換,

并不是增加新的類型,所以A錯誤。

35、有以下程序:#includestructS{inta,b;}data[2]={10,100,20,200);

main()(structSP:data[l];primf("%d\n",++(P.a));}程序運(yùn)行后的輸出結(jié)

果是()。

A、10

B、11

C、20

D、21

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[0].b=100;

data|11.a=20;data)11.b=200o主函數(shù)中p=data[l];即pp.a=data|I].a;

p.b=data[l].b;執(zhí)行語句prin(("%d\n",++(p.a));"印輸出時p.a先增1再

打印。p.a=data[l].a=20,先增1等于21。

36、有以卜程序:#include#definePT3.5;#defineS(x)PT*x*x;main(){int

a=l,b=2;printf(“%4.lf\n”,S(a+b));}程序運(yùn)行后的輸出結(jié)果是().

A、7.5

B、31.5

C、程序有錯無輸出結(jié)果

D、14.0

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:宏定義不是C語句,末尾不需要有分號。所以語句printf("%4.If、

n”,S(a十b));展開后為prinif(“%4.lf\n”,3.5;*a+b*a+b;);所以程序會出

現(xiàn)語法錯誤。

37、有以下程序:#includemain(){unsignedchara=2,b=4,c=5,d:d=ab:

d&=c;printf("%d\n”,d;}程序運(yùn)行后的輸出結(jié)果是()。

A、3

B、4

C、5

D、6

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:&按位與,如果兩個相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為I,

否則為0。1按位或,兩個相應(yīng)的二進(jìn)制位中只要有一個為1,該位的結(jié)果值為1。

2的二進(jìn)制為00000010,4的二進(jìn)制為OOOOOloo,所以做或運(yùn)算結(jié)果為00000110,

該數(shù)與5即00000101做與操作結(jié)果為00000100,即4o

38、有以下程序:#include#includemain(){int*a>*b,*c;

a=b=c=(int*)malloc(sizeof(int));*aa=l:*b=2,*c=3;a=b;prinff("%d,%d,%

d\n",*a,*b,*c);)程序運(yùn)行后的輸出結(jié)果是O。

A、1,1,3

B、2,2,3

C>1,2,3

D、3,3,3

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:malloc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用

(ini:*c)強(qiáng)制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c

都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句*c=3的值保留在了該空間

內(nèi),因?yàn)閍、b、c三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3,

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

A、當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

B、打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C、在一個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能

讀到第1個數(shù)據(jù)

D、C語言中的文件是流式文件,囚此只能順序存取數(shù)據(jù)

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:B選項(xiàng)中打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全

部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。C選項(xiàng)中在一個程序中當(dāng)

對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可

以用fseek()函數(shù)進(jìn)行重新定位即可。D選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀

寫。

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

40、給定程序中,函數(shù)fun的作用是:不斷從終端讀人整數(shù),由變量a統(tǒng)計大于0

的個數(shù),用變量c來統(tǒng)計小于0的個數(shù),當(dāng)輸入0時結(jié)束輸人,并通過形參pa和

pb把統(tǒng)計的數(shù)據(jù)傳回主函數(shù)進(jìn)行輸出。請在程序的下畫線處填入正確的內(nèi)容并把

下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在BLANK】.C中。不

得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includevoidfun(int*px,

int*Py){/**********found**********/int[l]:scanfT'%d”,&k);/

while|2]{if(k>O)a+-;if(k<O)b++;

)*px=a;*Py=b;)main(){intx,y;

fun(&x,&y);printf(,,x=%dy=%d\n,,,x,y);}

標(biāo)準(zhǔn)答案:⑴a=0,b=0,k(2)(k!=0)(3)scanfT%d”,&k)

知識點(diǎn)解析:暫無解析

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

41、下列給定程序中函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取

出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為

87653142時,t中的數(shù)為7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:部分源程序在文件MODIC中,不得增行或刪行,也不得更改程序的結(jié)

構(gòu)!#includevoidfun(Iongs,long*t)(intd;longsl=l:/

**********found**********/t:0;while(S>0){d=s%10;

**********found**********/if(d%2:=0){*t=d*sl+*t;s1*—10:}S/—10:}}

main(){longs,t;prinff(4t\nPleaseenterS:");scanff'%ld”,&s);fun(S,&t);

prinff{€4Theresultis:%ld\rT,t);)

標(biāo)準(zhǔn)答案:(l)*t=0:⑵if(d%2!=0)或if(d%2==l)

知識點(diǎn)解析:暫無解析

四、程序設(shè)計題(本題共7題,每題7.0分,共7分0)

42、編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx所指數(shù)

組中,非素數(shù)的個數(shù)通過k返回。例如,若輸入17,則應(yīng)輸出:4689101214

1516o注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函

數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoid

fun(intm,int*k,intxx[]){}main(){intm,n,zz[100];voidNONO();prinfff'\

nPleaseenteranintegernumberbetween10and100:"):seanff'%d",&n);fun(n,

&m,ZZ);printf(t4\n\nThereare%dnon—primenumber8lessthan%d:”,in,

li);for(n=0;n

標(biāo)準(zhǔn)答案:voidfun(intin,int,*k,intxx[]){inti,j,n=0;for(i-4;i

知識點(diǎn)解析:暫無解析

國家二級(C語言)機(jī)試模擬試卷第2

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

1、以下關(guān)于c語言數(shù)值常量的選項(xiàng)中,合法的是()。

A、12.0Xa234.5e0

B、028.5e—3—0xf

C、.1774el.50abc

D、0x8A10,0003.e5

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:C語言中八進(jìn)制整型常量的開頭是數(shù)字0,十六進(jìn)制整型常量的數(shù)字

開頭是Ox;但八進(jìn)制不能有8或9,所以選項(xiàng)B錯,C選項(xiàng)中2el.2中e后面的

指數(shù)不是整數(shù),D選項(xiàng)中3.e5小數(shù)點(diǎn)后面缺少數(shù)字,另外。也不用用逗號作為千

分位分隔符。

2、若有定義:doubled=68:inti=0,k=21;,則以下選項(xiàng)中不符合C語言規(guī)定的

賦值語句是()。

A、i一(d+k)<=(i+k);

B、尸d%3;

C、d=(d++,i++);

D、i=(int)!d;

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:只有整數(shù)才能求余,d是雙精度型,所以不能求余,選項(xiàng)B不符合C

語言賦值規(guī)定。選項(xiàng)A和D將進(jìn)行強(qiáng)制數(shù)據(jù)轉(zhuǎn)換,選項(xiàng)C為變量自加,逗號運(yùn)算

符和賦值運(yùn)算符連用,都符合C語言規(guī)范。

3、若有代數(shù)式(其中?僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠

正確表示該代數(shù)式的C語言表達(dá)式是()。

A、sqrt(fabs(pow(n,x)+exp(x)))

B、sqrt(fabs(po\v(n,x)+pow(x,e)))

C^sqrt(abs(nAx+eAx))

D、sqrt(fabs(pow(x,n)+exp(x)))

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:B選項(xiàng)中函數(shù)pow(x,e)錯誤應(yīng)該直接使用cxp(x)函數(shù)。C選項(xiàng)中函

數(shù)absSAx+e^x)錯誤,應(yīng)該使用fabs()返回浮點(diǎn)數(shù)的絕對值。D選項(xiàng)中pow(x,n)參

數(shù)順序錯誤。

4、有關(guān)C語言標(biāo)識符,以下選項(xiàng)中不合法的是()。

A、&a

B、FOR

C^print

D、_00

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:C語言中標(biāo)識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下

劃線。另外,關(guān)鍵字不能作為標(biāo)識符。因?yàn)镃語言中區(qū)分大小寫,所以B選項(xiàng)中

的“FOR”可以作為標(biāo)識符來用。A)選項(xiàng)中含有非法字符&,所以選擇A。

5、有以下序:#includevoidmain(){intnuml,num2;inti=10:double

d=12.34:nunl=sizeof(i);num2=sizeof(d);pfintf(''%d,%d\n'',si,s2);}

在VC6.0平臺上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是()。

A、16,4

B、2,8

C、4,8

D>1,4

標(biāo)準(zhǔn)答案:c

知識點(diǎn)解析:sizeof()函數(shù)用來獲取數(shù)據(jù)類型的存儲空間大小(字節(jié)數(shù)),整型和雙精

度型在C語言中分別占用4個字節(jié)和8個字節(jié),所以選項(xiàng)C正確。

6、有以下程序:#ncludevoidmain(){chara,b,c,d;scanR"%c%c'',&a,

&b);c=getchar();d=gctchar();pfmtf(''%c%c%c%c\n'',a,b,c?d);)運(yùn)行

程序后輸入數(shù)據(jù)(代表回車符)3456則輸出結(jié)果是()。

A、34

B、3456

C、34

D、34

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:用格式符%<:輸入字符時,回車符是分隔符,不能被輸入,但

getchar。可以接收包括回車符在內(nèi)的字符,所以程序運(yùn)行時輸入的第一個回車符將

被字符變量c接收,字符變量d接收輸入的字符所以輸出的結(jié)果是3,4,回

車,5,選項(xiàng)D正確。

7、有以下程序:#nekidemain(){inta=0,b=0,C=0,d=0;if(a=l)b=l:c=2;

elsed=3;pfintf(''%d,%d,%d,%d\n'la,b,c,d);}程序運(yùn)行后的輸出

結(jié)果是()。

A、1,1,2,0

B、0,0,0,3

C、編譯書錯

D、0,I.2.0

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:if語句只執(zhí)行后面的一個語句或一個用大括號包括的程序段。本題中

if語句中的條件若為真,則只執(zhí)行b=l:這一條語句,后面的c=2是一個和if分支

結(jié)構(gòu)無關(guān)的語句,因此,再后面的else語句便成為一個獨(dú)立的語句,因?yàn)榍懊鏇]

有if分支與其對應(yīng),因比會在編譯過程中出錯。如果改成if(a=l){b=l;

c=2}elsed=3:則編譯正確。

8、有以下程序:#includemain(){intx=l,y=0,a=0,b=0;switch(x){case1:

switch(y){case0:a++;break:case1:b++;break;}case2:a++;b++;

break:case3:a++;b++;}printf(,,a=%d,b=%d\n",a,b);}程序運(yùn)行后的

輸出結(jié)果是()。

A、a=2,b=2

B、a=2,b=l

C、a=l,b=l

D、a=l,b=0

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:case常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在

執(zhí)行swiich語句時,根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從此

case子句執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)

層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case2語句的a++;

b++;a為2,b為I。所以結(jié)果為B。

9、以下程序段中的變量已正確定義:for(i=0;i<4:i++,i++)for(k=l;k<3;

k++);prints*,);程序段的輸出結(jié)果是()。

A、**

B、****

C、*

D********

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:由于內(nèi)層循環(huán)for(k=l;k<3;k++)后面直接跟了空語句“;”所以在

循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行打印語句,所以打印了一個“*二

選擇Co

10、有以下程序段:#ncludcinti,n;for(i=0;i<8;i++)(n=rand()%5;

switch(n){case1:case3:printf(''%d'n'',n);break;case2:case4:

primf(、'%d\n",n);continue:case0:exit(O);}pfintf(''%d\n",n);}以下

關(guān)于程序段執(zhí)行情況的敘述,正確的是()。

A、for循環(huán)語句固定執(zhí)行8次

B、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:case常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在

執(zhí)行switch語句時,根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從此

case子句執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。簡單地說,

break是結(jié)束整個循環(huán)體,而continue是結(jié)束單次循環(huán)。B選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)n

為4時,要執(zhí)行打印操作。C選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)為1和2時,分別執(zhí)行case3

與case4后面語句的內(nèi)容。由于存在break語句,所以for循環(huán)不是固定執(zhí)行8

次,執(zhí)行次數(shù)與產(chǎn)生的隨機(jī)數(shù)n有關(guān)系。

11、有以下程序:#includeintf(intx);main(){intn=l,m;m=f(f(f(n)));

printf(,,%d\n,\m);)intf(intx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是()。

A、8

B、2

C、4

D、1

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:第一次調(diào)用m=f(f(f(l))),第二次為m=f(f(2)),第三次為m=f(4),即

返回值為8o

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

A、可以給指針變量賦一個整數(shù)作為地址值

B、函數(shù)可以返回地址值

C、改變函數(shù)形參的值,不會改變對應(yīng)實(shí)參的值

D、當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:不能將一個整數(shù)直接賦給指針變量作為地址,所以A是錯誤的。函

數(shù)的返回值可以是地址。即指針。函數(shù)調(diào)用中行參的變化不會傳遞給實(shí)參。

13、設(shè)已有定義:floatK;,則以下對指針變量P進(jìn)行定義且賦初值的語句中正確

的是()。

A^int*p=(float)x;

B、float*p=&x;

C、floatp=&x;

D、float*p=1024:

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:指針是用來存放地址的變量,用(類型名*指針變量名)的形式定義。

賦值時應(yīng)將某個變量地址賦給指針變量,所以選擇B。

14、以下數(shù)組定義中錯誤的是()。

A、intx[2][3]={l,2,3,4,5,6);

B、intx[][3]={0};

C>intx[][3]={{l,2,3),{4,5,6)|;

D.intx[2][3]={{l,2},(3,4),{5,6}};

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:D選項(xiàng)中x[2]⑶定義的是一個兩行三列的二維數(shù)組,而在給數(shù)組元

素賦值時卻賦成了三行,所以錯誤。

15、有以下程序:#includevoidfun(inta[],intn){inti,t;for(i=0;i<n/2;

i++){t=a[i];a[i]=a[n-1一i];a[n—I—i]:t;))main(){intk[10]={1,2,3,

4,5,6,7,8,9,10),i;fun(k,5);for(i=2;i<8;i++)printff'%d'',k[i]);

',,,

printf(\n);}程序運(yùn)行后的輸出結(jié)果是()。

A、321678

B、876543

C、1098765

D、345678

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:本題中的函數(shù)fun()是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k

中的元素排列是5,4,3,2,1,6,7,8,9,10,所以打印輸出k⑵到k⑺元素

的值,即321678,所以選擇A。

16、有以卜程序:#include#defineN4voidfun(inta|||N],intb[]){inti;for(i=0;

i<N;i++)b[i]=a[i][i]-a[i][N-1—i];}main(){intx[N][N]={{1,2,3,4),

(5,6,7,8|,{9,10,11,12),(13,14,15,16}},y[N],i;fun(x,y);

,,

for(i=0;i<N;i++)printf(%d,",y[i]);printfC'n");}程序運(yùn)行后的輸出結(jié)

果是()。

A、-3,-1,1,3

—12,—3,0,0

C、0,1,2,3

D、-3,一3,一3,一3

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:本題中由firn函數(shù)可知,b[0]=a[0][0]-a[0][3]=l-4=-3,

b[l]=a[l][l]-[l][2]=6—7=-1,b[2]=a[2][2]-[2][l]=l1—10=1,b[3]=a[3][3]-

[3]|l]=16-13=30所以主函數(shù)中打印y數(shù)組元素的值為A選項(xiàng)。

17、設(shè)有定義:chars[81];inti=0:,以下不能將一行(不超過80個字符)帶有空格

的字符串正確讀入的語句或語句組是()。

A、gets(s);

while((s[i++]=getchar())!=,\n');s[i]=,\0\

C、scanf(,,%s,\s);

D、do{scanfT'%c'',&s|i]);}while(s[i++]!八if);s[i]=,\0,;

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:字符串的輸入不能使用scanfC%s",s);而應(yīng)該使用gets(s).

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

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

A、sizeof(p)

B、sizeof(char)

CNsizeof(*q)

D、sizeof(p|0])

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:根據(jù)題目中的定義可以知道sizeof(p),計算的是數(shù)組p中所有元素所

占用的字節(jié)數(shù),而不是char*型數(shù)據(jù)所占字節(jié)數(shù)。

19、有以下程序:#include#includemain(){char

str[][20]={,,Onc*World,1,,,One*Dream!*p=str[l];printf(''%d,L

strlen(p));printf(''%s\n'',p);}程序運(yùn)行后的輸出結(jié)果是()。

A、10,One*Dream!

B、9,One*Dream!

C、9,One*World

D、10,One*World

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:p是指向二維字符數(shù)組第二行One*Dream!的數(shù)組指針,所以長度是

10,打印輸出的也是該字符串。

20有以下程序:#ncludcmain。{chars[尸'012xy\08s34f4w2'';inti,n=0;

for(i=0;sfi]!=0;i++)if(s[i]>=,0,&&s[i]<=,9,)n++;printR''%d\n",n);}程

序運(yùn)行后的輸出結(jié)果是()。

A、0

B、3

C、7

D、8

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:本題中遇到“\0',字符循環(huán)結(jié)束,所以只統(tǒng)計之前的數(shù)字字

符,所以為3。

21、有以下程序:#includefun(intx,inty){staticintm=0,i=2;i+=m+l;

m=i+x+y:returnm:)main(){intj=l,m=l,k;k=fun(j,m);printf(''%d,",

k);k=fun(j,m);printf("%d\nLk);}程序執(zhí)行后的輸出結(jié)果是()。

A、5,11

B、5,5

C、11,11

D、11,5

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:聲明靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后,其占用的存儲單元不釋放,在

下次該函數(shù)調(diào)用時,該變量保留上一次函數(shù)調(diào)用結(jié)束時的值。本題子函數(shù)Fun中的

變量i和m均為靜態(tài)局部變量.所以第一次調(diào)用fun函數(shù),返I川m的值為5.第二

次再調(diào)用fun函數(shù)時,i的值為3,m的值已經(jīng)是5了,所以執(zhí)行if=m+1,i的值變

為9,m=i+x+y=9+1+1=11?

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

A、auto和static

B、extern和register

C>auto和register

D、static^0register

標(biāo)準(zhǔn)答案:c

知識點(diǎn)解析:auto:函數(shù)中的局部變量,動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動態(tài)存

儲區(qū)中,在調(diào)用該函數(shù)時系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結(jié)束時就自動釋

放這些存儲空間。regisler:為了提高效率,C語言允許將局部變量的值放在CPU

中的寄存器中,這種變量叫“寄存器變量”,只有局部自動變量和形式參數(shù)可以作為

寄存器變量。extern:外部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域

為從變量定義處開始,到本程序文件的末尾。如果外部變量不在文件的開頭定義,

其有效的作用范圍只限于定義處到文件終了。static:靜態(tài)局部變量屬于靜態(tài)存儲

類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。

23、下面結(jié)構(gòu)體的定義語句中,錯誤的是()。

A、structord{intx;inty;intz;(structorda;

B、structord{intx:inty;intz:|:structorda;

C、structord{intx;inty;intz;)a;

D、struct{imx;inty;intz;)a;

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:人選項(xiàng)0101303{足“;仙1丫;血2;jstructorda;錯誤,不能在定義

結(jié)構(gòu)體的同時,又用結(jié)閡體類型名定義變量。應(yīng)該寫成B選項(xiàng)或者D選項(xiàng)的格

式。

24、有以下程序:#ineludetypedefstruct)intb,p;)A;voidf(Ac)/*注意:C是

結(jié)構(gòu)變量名*/{intj;c.b+=l:c.p+=2;)main(){inti;Aa={l,2};f(a);

printf("%d,%d\n,\a.b,a.p);}程序運(yùn)行后的輸出結(jié)果是()。

A、2,4

B、1,2

C、1,4

D、2,3

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù)和返回值。作為函數(shù)的實(shí)參時,可以

實(shí)現(xiàn)函數(shù)的傳值調(diào)用。當(dāng)使用結(jié)構(gòu)體變量作為函數(shù)的形參時,實(shí)參也應(yīng)該是結(jié)構(gòu)體

變量名以實(shí)現(xiàn)傳值調(diào)用,實(shí)參將拷貝副本給形參,在被調(diào)用函數(shù)中改變形參值對于

調(diào)用函數(shù)中的實(shí)參沒有影響。所以選擇B。

25、讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,其中

buffer代表的是()。

A、一個內(nèi)存塊的字節(jié)數(shù)

B、一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C、一個文件指針,指向待讀取的文件

D、一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:fread(buffer,size,count,fp)功能是從一個文件流中讀數(shù)據(jù),讀取

count個元素,每個元素size字節(jié),如果而用成功返回count。buffer:用于接收數(shù)

據(jù)的內(nèi)存地址,大小至少是size*count字節(jié);size:單個元素的大小,單位是字

節(jié);count:元素的個數(shù),每個元素是size字節(jié);stream:輸入流。

26、有以下程序:#include#includeintfun(intn){int*p;

p=(int*)malloc(sizeof(int));*P=n;return*p;)main(){inta;a=fun(10);

printf("%d\nLa+fun(10)):}程序運(yùn)行后的輸出結(jié)果是()。

A、0

B、10

C、20

D、出錯

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:(int*)manoclsizeof(in。)的作用是開辟一個長度為sizeof(int)存儲空

間,并通過強(qiáng)制類型轉(zhuǎn)爽(ini*)將此存儲空間的地址賦給了一個整型的指針變量然

后執(zhí)行語句*p=n,使得*P的值為10,并通過return返回此值,即a的值為10。然

后在主函數(shù)中輸出a+fun(l0)=10+10=20o

27、有以F程序:#includemain(){unsignedchara=8,c;c=a>>3;printR"%d

\n-,c);}程序運(yùn)行后的輸出結(jié)果是()。

A、16

B、1

C、32

D、0

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:無符號整型變量a的值為8,二進(jìn)制表示為00001000,右移3位后為

00000001,即十進(jìn)制的1,所以輸出1。

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

A、在C語言中,預(yù)處理命令行都以“#"開頭

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

C、include必須放在C程序的開頭

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

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:預(yù)處理命令是以“#"開頭的命令,它們不是C語言的可執(zhí)行命令,這

些命令應(yīng)該在函數(shù)之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置

書寫,所以B、C錯誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯等功能,所以

D錯誤。

29、下面關(guān)于編譯預(yù)處理的命令行中,正確的是(),

A、#defineintINT

B、##defineeps0.001

C、##DEFINETRUE

D、#defineE2.88

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:選項(xiàng)A中,int是關(guān)鍵字,不能作為用戶標(biāo)識符,錯誤;選項(xiàng)B中,

兩個#號錯誤;選項(xiàng)C中兩個#號錯誤,另外DFINE大寫也是錯誤的;選項(xiàng)D正

確;本題答案為D。

30、有如下程序#includemain。{inti,data;sealIff4%&data)for(i=0;i<5;

i++){if((idata&&i%3==0))continue;printf(“%d,",i);}}程序運(yùn)行時,從鍵盤

輸入:13〈回車,后,程序輸出結(jié)果為()。

A、0,2,4,

B、1,3,5,

C、0,1,2,3,4,5,

D、0,1,2,3,

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:程序通過scanf()函數(shù),輸入data的值13,for循環(huán)中,i的值遍歷。?

4,對每個i的值執(zhí)行if語句判斷,其中:i>daia始終為假;所以表達(dá)式

i>data&&i%3==0始終為假:所以if語句的判斷條件需要看i

31、設(shè)變量n已正確定義并賦值,以下不能實(shí)現(xiàn)自然數(shù)1到n累加求和的程序段是

()。

A、intsum=l,i=0:while(i<=n){i++;sum+=i:}

B、intsum=0,i=l;whilc(i<=n){sum+=i;i++;}

C^int.sum=0,i=0:whi]e(i

D^int.sum=l:i=l:while(i

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:選項(xiàng)A中,sum初值為1,i初值為0;當(dāng)iv=n成立時,執(zhí)行while。

循環(huán),首先i自增1,此時1的值為1,然后sum累加i,此時sum的值為1+1=2,

所以選項(xiàng)A計算了2次1,不滿足題意,選項(xiàng)B、C、D都正確,本題答案為A

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論