全國計(jì)算機(jī)二級c語言歷年真題及答案_第1頁
全國計(jì)算機(jī)二級c語言歷年真題及答案_第2頁
全國計(jì)算機(jī)二級c語言歷年真題及答案_第3頁
全國計(jì)算機(jī)二級c語言歷年真題及答案_第4頁
全國計(jì)算機(jī)二級c語言歷年真題及答案_第5頁
已閱讀5頁,還剩210頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計(jì)

(考試時間90分鐘,滿分100分)

一、選擇題((1)—(10)、(21)—(40)每題2分,(11)

—(20)每題1分,共70分)

(1)下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是

A)循環(huán)隊(duì)列

B)帶鏈隊(duì)列

0二叉樹

D)帶鏈棧

(2)下列數(shù)據(jù)結(jié)果中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是

A)循環(huán)隊(duì)列

B)棧

0隊(duì)列

D)二叉樹

(3)對于循環(huán)隊(duì)列,下列敘述中正確的是

A)隊(duì)頭指針是固定不變的

B)隊(duì)頭指專i定大于隊(duì)尾指針

C)隊(duì)頭指針一定小于隊(duì)尾指針

D)隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針

(4)算法的空間復(fù)雜度是指

A)算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲空間

B)算法所處理的數(shù)據(jù)量

C)算法程序中的語句或指令條數(shù)

D)算法在執(zhí)行過程中所需要的臨時工作單元數(shù)

(5)軟件設(shè)計(jì)中劃分模塊的一個準(zhǔn)則是

A)低內(nèi)聚低耦合

B)高內(nèi)聚低耦合

0低內(nèi)聚高耦合

D)高內(nèi)聚高耦合

(6)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是

A)可封裝

D)自頂向下

0模塊化

D)逐步求精

(7)軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如下:

該圖是

A)N-S圖

B)PAD圖

0程序流程圖

D)E-R圖

(8)數(shù)據(jù)庫管理系統(tǒng)是

A)操作系統(tǒng)的一部分

B)在操作系統(tǒng)支持下的系統(tǒng)軟件

0一種編譯系統(tǒng)

D)一種操作系統(tǒng)

(9)在E-R圖中,用來表示實(shí)體聯(lián)系的圖形是

A)橢圓圖

B)矩形

0菱形

D)三角形

(10)有三個關(guān)系R,S和T如下:

A)選擇

B)投影

O交

D)并

(11)以下敘述中正確的是

A)程序設(shè)計(jì)的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試

B)程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)

C)程序設(shè)計(jì)的任務(wù)就是確定所用算法

D)以上三種說法都不完整

(12)以下選項(xiàng)中,能用作用戶標(biāo)識符的是

A)void

B)8_8

C)0_

D)unsigned

(13)閱讀以下程序

ttinclude

main()

{intcase;floatprintF;

printf(“請輸入2個數(shù):”);

scanf(u%d,&case,&pjrintF);

printf(u%d%f\nw,case,printF);

}

該程序編譯時產(chǎn)生錯誤,其出錯原因是

A)定義語句出錯,case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符

B)定義語句出錯,printF不能用作用戶自定義標(biāo)識符

O定義語句無錯,scanf不能作為輸入函數(shù)使用

D)定義語句無錯,printf不能輸出case的值

(14)表達(dá)式:(int)((double)9/2)-(9)%2的值是

A)0

B)3

C)4

D)5

(15)若有定義語句:intx=10;,則表達(dá)式x-=x+x的值為

A)-20

B)-10

C)0

D)10

(16)有以下程序

ttinclude

main()

{inta=l,b=0;

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

printf("%d\n",a=2*b);

}

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

A)0,0

B)1,0

C)3,2

D)1,2

17)設(shè)有定義:inta=l,b=2,c=3;,以F語句中執(zhí)行效果與其它

三個不同的是

A)if(a>b)c=a,a=b,b=c;

B)if(a>b){c=a,a=b,b=c;}

C)if(a>b)c=a;a=b;b=c;

D)if(a>b){c=a;a=b;b=c;}

(18)有以下程序

ttinclude

main()

{intc=0,k;

for(k=l;k<3;k++)

switch(k)

{default:c+=k

case2:c++;break;

case4:c+=2;break;

)

printf(“%d\n”,c);

)

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

A)3

B)5

C)7

D)9

(19)以下程序段中,與語句:k=a>b?(b>c?l:O):O;功能相同的

A)if((a>b)&&(b>c))k=l;

elsek=0;

B)if((a>b)||(b>c)k=l;

elsek=0;

C)if(a<=b)k=0;

elseif(b<=c)k=l;

D)if(a>b)k=l;

elseif(b>c)k=l;

elsek=0;

20)有以下程序

ttinclude

main()

{chars[]={"012xy"};inti,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>=,a'&&s[i]<=,z')n++;

printf("%d\n”,n);

)

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

A)0

B)2

C)3

D)5

(21)有以下程序

ttinclude

main()

{intn=2,k=0;

while(k++&&n++>2);

printf(u%d%d\n”,k,n);

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

A)02

B)13

057

D)12

(22)有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是

A)chara='a';

B)chara='\n';

C)chara='aa';

D)chara='\x2cT;

(23)有以下程序

ttinclude

main()

{charcl,c2;

cl=,A'+,8,-⑷;

c2='A'+'8'-'5';

printf("%c,%d\n”,cl,c2);

)

已知字母A的ASCH碼為65,程序運(yùn)行后的輸出結(jié)果是

A)E,68

B)D,69

C)E,D

D)輸出無定值

(24)有以下程序

ttinclude

voidfun(intp)

{intd=2;

p=d++;printf("%d",p);}

main()

{inta=l;

fun(a);printf("%d\n",a);}

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

A)32

B)12

C)21

D)22

(25)以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)

值返回,但程序中有錯導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能

ttdefineMIN-2147483647

intfindmax(intx[],intn)

{inti,max;

for(i=0;i<N;1++)<p=〃〃/>

{max=MIN;

if(max

returnmax;

}

造成錯誤的原因是

A)定義語句inti,max;中max未賦初值

B)賦值語句max=MIN;中,不應(yīng)給max賦MIN值

C)語句if(max

D)賦值語句max=MIN;放錯了位置

(26)有以下程序

ttinclude

main()

{intm=l,n=2,*q=&n,*r;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n”,m,n,*p,*q);

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

A)1,2,1,2

B)1,2,2,1

C)2,1,2,1

D)2,1,1,2

(27)若有定義語句:inta[4][10],*p,*q[4];且0Wi<4,則錯

誤的賦值是

A)p=a

B)q[i]=a[i]

C)p=a[i]

D)p=&a[2][l]

(28)有以下程序

ttinclude

ttinclude

main()

{charstr[][20]={"0ne*World",

“0ne*Dream!”},*p=str[l];

printf("%d,”,strlen(p));printf("%s\n",p);

)

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

A)9,One*World

B)9,One*Dream

C)10,One*Dream

D)10,One*World

(29)有以下程序

ttinclude

main()

{inta[]={2,3,5,4},i;

for(i=0;i<4;i++)

switch(i%2)

{case0:switch(a[i]%2)

{case0:a[i]++;break;

case1:a[i]一;

}break;

case1:a[i[=0;

)

for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");

)

A)3344

B)2050

03040

D)0304

(30)有以下程序

ttinclude

ttinclude

main()

{chara[10]="abed";

printf("%d,%d\n”,strlen(a),sizeof(a));

)

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

A)7,4

B)4,10

C)8,8

D)10,10

(31)下面是有關(guān)C語言字符數(shù)組的描述,其中錯誤的是

A)不可以用賦值語句給字符數(shù)組名賦字符串

B)可以用輸入語句把字符串整體輸入給字符數(shù)組

C)字符數(shù)組中的內(nèi)容不一定是字符串

D)字符數(shù)組只能存放字符串

(32)下列函數(shù)的功能是

fun(char*a,char*b)

{while((*b=*a)!=,\0,){a++,b++;}}

A)將a所指字符串賦給b所指空間

B)使指針b指向a所指字符串

O將a所指字符串和b所指字符串進(jìn)行比較

D)檢查a和b所指字符串中是否有'\(T

(33)設(shè)有以下函數(shù)

voidfun(intn,char*s){....}

則下面對函數(shù)指針的定義和賦值均是正確的是

A)void(*pf)();pf=fun;

B)viod*pf();pf=fun;

C)void*pf();*pf=fun;

D)void(*pf)(int,char);pf=&fun;

(34)有以下程序

ttinclude

intf(intn);

main()

{inta=3,s;

s=f(a);s=s+f(a);printf("%d\n",s);

}

intf(intn)

{staticinta=l;

n+=a++;

returnn;

)

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

A)7

B)8

C)9

D)10

(35)有以下程序

ttinclude

#definef(x)x*x*x

main()

{inta=3,s,t;

s=f(a+1);t=f((a+1));

printf(u%d,%d\n,,s,t);

}

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

A)10,64

B)10,10

C)64,10

D)64,64

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

A)structord{intx;inty;intz;};structorda;

B)structord{intx;inty;intz;}structorda;

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

D)struct{intx;inty;intz;}a;

(37)設(shè)有定義:char*c;,以下選項(xiàng)中能夠使字符型指針c正

確指向一個字符串的是

A)charstr[]="string”;c=str;

B)scanf("%s",c);

C)c=getchar();

D)*c="string";

(38)有以下程序

ttinclude

#include

structA

{inta;charb[10];doublec;};

structAf(structAt);

main()

{structAa={1001,"ZhangDa”,1098.0};

a=f(a);jprintf("%d,%s,%6.lf\n”,a.a,a.b,a.c);

)

structAf(structAt)

(t.a=1002;strcpy(t.b,ChangRong");t.c=1202.0;return

t;)

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

A)1001,ZhangDa,1098.0

B)1001,ZhangDa,1202.0

C)1001,ChangRong,1098.0

D)1001,ChangRong,1202.0

(39)若有以下程序段

intr=8;

printf("%d\n",r>>l);

輸出結(jié)果是

A)16

B)8

C)4

D)2

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

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

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

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

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

二、填空題(每空2分,共30分)

(1)某二叉樹有5個度為2的結(jié)點(diǎn)以及3個度為1的結(jié)點(diǎn),則該

二叉樹中共有【1】個結(jié)點(diǎn)。

(2)程序流程圖中的菱形框表示的是【2】o

(3)軟件開發(fā)過程主要分為需求分析、設(shè)計(jì)、編碼與測試四個階

段,其中【3】階段產(chǎn)生“軟件需求規(guī)格說明書。

(4)在數(shù)據(jù)庫技術(shù)中,實(shí)體集之間的聯(lián)系可以是一對一或一對多

或多對多的,那么“學(xué)生”和“可選課程”的聯(lián)系為【4】o

(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。

其中可以作為主關(guān)鍵字的是【5】o

(6)若有定義語句:inta=5;,則表達(dá)式:a++的值是【6】。

(7)若有語句doublex=17;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;

之后y的值為【7】o

(8)以下程序運(yùn)行后的輸出結(jié)果是[8】o

#include

main()

{intx=20;

printf(a%dw,0<X<20);<p=""/>

printf("%d\n”,O〈X&&X<="〃/>

(9)以下程序運(yùn)行后的輸出結(jié)果是[9】o

ttinclude

main()

{inta=l,b=7;

do{

b=b/2;a+=b;

}while(b>l);

printf("%d\n",a);}

(10)有以下程序

ttinclude

main()

{intf,fl,f2,i;

fl=0;f2=l;

printf(u%d%d”,fl,f2);

for(i=3;i<=5;i++)

{f=fl+f2;printf(“%d”,f);

fl=f2;f2=f;

}

printf("\n");

)

程序運(yùn)行后的輸出結(jié)果是[10]o

(11)有以下程序

ttinclude

inta=5;

voidfun(intb)

{inta=10;

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

main()

{intc=20;

fun(c);a+=c;printf("%d\n",a);

程序運(yùn)行后的輸出結(jié)果是[11]O

(12)設(shè)有定義:

structperson

{intID;charname[12];}p;

請將scanf(“%d”,[12]);語句補(bǔ)充完整,使其能夠?yàn)榻Y(jié)構(gòu)

體變量P的成員ID正確讀入數(shù)據(jù)。

(13)有以下程序

#include

main()

{chara[20]="Howareyou?",b[20];

scanf("%s”,b);printf("%s%s\n”,a,b);

)

程序運(yùn)行時從鍵盤輸入:Howareyou?〈回車》

則輸出結(jié)果為[13]o

(14)有以下程序

ttinclude

typedefstruct

{intnum;doubles}REC;

voidfunl(RECx){x.num=23;x.s=88.5;}

main()

{RECa={16,90.0};

funl(a);

printf("%d\n”,a.num);

程序運(yùn)行后的輸出結(jié)果是[14]o

(15)有以下程序

ttinclude

fun(intx)

{if(x/2>0)run(x/2);

printf("%d”,x);

}

main()

{fun(6);printf(a\nw);}

程序運(yùn)行后的輸出結(jié)果是[15]o

2009年9月全國計(jì)算機(jī)等級考試二級C語言筆試參考答案

選擇題

(C(B(D(A(B

1)2)3)4)5)

(A(C(B(C(D

6)7)8)9)10)

(D(C(A(B(B

11)12)13)14)15)

(D(C(A(A(B

16)17)18)19)20)

(D(C(A(C(D

21)22)23)24)25)

(B(A(C(C(B

26)27)28)29)30)

(D(A(A(c(A

31)32)33)34)35)

(B(A(D(c(C

36)37)38)39)40)

*答案僅供參考

(10)01123

(9)5

(8)10

(7)1

(6)5

(5)身份證號

(4)多對多

(3)需求分析

(2)邏輯條件

(1)14

二、填空題

2009年3月二級C語言筆試真題及答案

((1)—(10)每小題2分,(11)—(50)每題1分,共60分)

下列各題A)、B)、C)、D)四個選項(xiàng)中,只有一個選項(xiàng)是正確的,請

將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。

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

A)棧是“先進(jìn)先出”的線性表

B)隊(duì)列是“先進(jìn)先出”的線性表

C)循環(huán)隊(duì)列是非線性結(jié)構(gòu)

D)有序性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)

(2)支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是

A)棧B)樹C)隊(duì)列D)二叉樹

(3)某二叉樹有5個度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)是

A)10B)8C)6D)4

(4)下列排序方法中,最壞情況下比較次數(shù)最少的是

A)冒泡排序

B)簡單選擇排序

C)直接插入排序

D)堆排序

(5)軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工

具軟件)。下面屬于應(yīng)用軟件的是

A)編譯軟件

B)操作系統(tǒng)

C)教務(wù)管理系統(tǒng)

D)匯編程序

(6)下面敘述中錯誤的是

A)軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B)對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟

C)程序調(diào)試通常也稱為Debug

D)軟件測試應(yīng)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性

(7)耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中

正確的是

A)提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性

B)降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性

C)耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度

D)內(nèi)聚性是指模塊間互相連接的緊密程度

(8)數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是

A)數(shù)據(jù)庫設(shè)計(jì)

B)數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)

C)數(shù)據(jù)庫維護(hù)

D)數(shù)據(jù)庫管理員培訓(xùn)

(9)有兩個關(guān)系R,S如下:

R

ABC

a32

b01

c21

S

AB

a3

b0

c2

由關(guān)系R通過運(yùn)算得到關(guān)系S,則所使用的運(yùn)算為

A)選擇B)投影C)插入D)連接

(10)將E-R圖轉(zhuǎn)換為關(guān)系模式時,實(shí)體和聯(lián)系都可以表示為

A)屬性B)鍵C)關(guān)系D)域

(11)以下選項(xiàng)中合法的標(biāo)識符是

A)1-1B)1—1C)-11D)1—

(12)若函數(shù)中有定義語句:intk;,則

A)系統(tǒng)將自動給k賦初值0

B)這時k中值無定義

C)系統(tǒng)將自動給k賦初值-1

D)這時k中無任何值

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

A)0115B)0118C)1.5el.5D)115L

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

A)x*=x+l

B)x++,2*x

C)x*=(1+x)

D)2*x,x+=2

(15)程序段:intx=12;

doubley=3.141593;printf("%d%8.6f”,x,y);的輸出結(jié)果是

A)123.141593

B)12

3.141593

C)12,3.141593

D)123.141593

(16)若有定義語句:doublex,y,*px,*py,執(zhí)行了px=&x,py=&y;

之后,正確的輸入語句是

A)scanf(,x,y);

B)scanf(“%f%f”,&x,&y);

C)scanf(,px,py);

D)scanf(”,x,y);

(17)以下是if語句的基本形式:

if(表達(dá)式)

語句

其中“表達(dá)式”

A)必須是邏輯表達(dá)式

B)必須是關(guān)系表達(dá)式

C)必須是邏輯表達(dá)式或關(guān)系表達(dá)式

D)可以是任意合法的表達(dá)式

(18)有以下程序

ftinclude<stdio.h>

main()

{intx;

scanf("%d",&x);

if(x<=3);else

if(x!=10)

printf("%d\n”,x);

}

程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果

A)不等于10的整數(shù)

B)大于3且不等于10的整數(shù)

C)

大于3或等于10的整數(shù)

D)小于3的整數(shù)

(19)有以下程序

#include<stdio.h>

Main()

(

inta=l,b=2,c=3,d=0;

if(a==1&&b++==2)

if(b!=2||c—>=3)

printf("%d,%d,%d\n”,a,b,c);

elseprintf("%d,%d,%d\n",a,b,c);

elseprintf("%d,%d,%d\n”,a,b,c);

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

A)1,2,3

B)1,3,2

C)1,3,3

D)3,2,1

(20)以下程序中的變量已正確定義

for(i=0;i<4;i++,i++

for(k=l;k<3;k++);printf(*");

程序段的輸出結(jié)果是

A)********

B)****

C)**

D)*

(21)有以下程序

#include<stdio.h>

main()

{char

*s=(“ABC);

do

{printf("%d”,*s%10);s++;

}whi1e(*s);

}

注意,字母A的ASCH碼值為65。程序運(yùn)行后的輸出結(jié)果是

A)5670

B)656667

C)567

D)ABC

(22)設(shè)變量已正確定義,以下不能統(tǒng)計(jì)出一行中輸入字符個數(shù)(不

包含回車符)的程序段是

A)n=0;while((ch=getchar())!='\n')n++;

B)n=0;while(getchar()!='\n')n++;

C)for(n=0;getchar()!='\n';n++);

D)n=0;for(ch=getchar();ch!=,\n,;n++);

(23)有以下程序

#include<stdio.h>

main()

{intal,a2;charcl,c2;

scanf(“%d%c%d%c”,&al,&cl,&a2,&c2);

printf("%d,%c,%d,%c”,&1,cl,a2,c2);

若想通過鍵盤輸入,使得al的值為12,a2的是為34,cl的值為字符

a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b,則正確的輸入格式

是(以下

代表空格,<CR>代表回車)

A)12a34b<CR>

B)12

a

34

b<CR>

C)12,a,34,b<CR>

D)12

a34

b<CR>

(24)有以下程序

#include<stdio.h>

intf(intx,inty)

{return()y-x)*x);}

main()

{inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf("%d\n”,d);

}

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

A)10

B)9

C)8

D)7

(25)有以下程序

#include<stdio.h>

voidfun(char

*s)

{while(*s)

{if(*s%2==0)

printf("%c",*s);

s++;

}

}

main()

{char

a[]={"good”};

fun(a)jprintf("\n”);

注意:字母a的ASCH碼值為97,程序運(yùn)行后的輸出結(jié)果是

A)d

B)go

C)god

D)good

(26)有以下程序

ftinclude<stdio.h>

voidfun(int*a,int*b)

{int*c;

c=a;a=b;b=c;

}

main()

{intx=3,y-5,*P=&x,*q=&y;

fun(p,q);printf("%d,%d,",*p,*q);

fun(&x,&y);printf("%d,%d\n”,*p,*q);

}

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

A)3,5,5,3

B)3,5,3,5

C)5,3,3,5

D)5,3,5,3

(27)有以下程序

ftinclude<stdio.h>

viodf(int*p,int*q);

main()

{intm=l,n=2,*r=&m;

f(r,&n);printf("%d,%d”,m,n);

}

voidf(int*p,int*q)

{p=p+l;*q=*q+l;}

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

A)1,3

B)2,3

C)1,4

D)1,2

(28)以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù)

voidfun(int*w,intn)

{inti;

for(i=0;i<n;i++)

printf("%d",w);

printf("\n");

}

下劃線處應(yīng)填入的語句是

A)if(i/8==0)print("\n");

B)if(i/8==0)continue;

C)if(i%8==0)print(“\n");

D)if(i%8==0)continue;

(29)若有以下定義

intx[10],*pt=x;

則對x數(shù)組元素的正確應(yīng)用是

A)*&x[10]

B)*(x+3)

C)*(pt+10)

D)pt+3

(30)設(shè)有定義:chars[81];inti=10;,以下不能將一行(不超過

80個字符)帶有空格的字符串真確讀入的語句或語句組是

A

gets(s)

B)while((s[i++]=getchar())!=”\n";s="\0";

C)scanf(“%s”,s);

D)do{scanf("%c",&s);}while(s[i++]!="\n");s="\0";

(31)有以下程序

ftinclude<stdio.h>

main()

{char*a[]={"abed",“ef“,“gh",“ijk”);intI;

for(i=0;i<4;i++)

printf("%c",*a);

}

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

A)aegi

B)dfhk

C)abed

D)abedefghijk

(32)以下選項(xiàng)中正確的語句組是

A)chars口;s="BOOK!”;

B)char*s;s={"BOOK!”};

C)chars[10];s=>,BOOK!”;

D)char*s;s="BOOK!”;

(33)有以下程序

ftinclude<stdio.h>

intfun{intx,inty}

{if(x==y)return(x);

elsereturen((x+y)/2)

}

main()

{inta=4,b=5,c=6;

printf("%d\n”,fun(2*a,fun(b,c)))

)

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

A)3

B)6

C)8

D)12

(34)設(shè)函數(shù)中有整型變量n,為保證其在未賦值的情況下初值為0,

應(yīng)選擇的存儲類別是

A)auto

B)register

C)static

D)auto或register

(35)有以下程序

ftinclude<stdio.h>

intb=2;

intfun(int*k)

{b=*k+b;return(b);}

main()

{inta[10]={l,2,3,4,5,6,7,8},I;

for(i=2;i<4;i++){b=fun(&a)+b;printf("%d",b);)

printf("\n");

)

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

A)10

12

B)8

10

C)10

28

D)10

16

(36)有以下程序

ftinclude<stdio.h>

ftdefinePT3.5;

ftdefineS(x)PT*x*x;

mian()

{inta=l,b=2;printf("%4.lf\n”,S(a+b));}

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

A)14.0

B)31.5

C)7.5

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

(37)有以下程序

ttinclude<stdio.h>

structord

{intx,y;}dt[2]={l,2,3,4};

main()

{structord*p=dt;

printf("%d,”,++p->x);printf(u%d\nv,++p->y);

程序的運(yùn)行結(jié)果是

A)1,2

B)2,3

C)3,4

D)4,1

(38)設(shè)有宏定義:ttinclude

IsDIV(k,n)((k%n==l)?l:0且變量m已正確定義并賦值,則宏

調(diào)用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達(dá)的是

A)判斷m是否能被5或者7整除

B)判斷m是否能被5和7整除

C)判斷m被5或者7整除是否余1

D)判斷m被5和7整除是否余1

(39)有以下程序

ttinclude<stdio.h>

main()

{inta=5,b=l,t;

t=(a<<2b);printf("%d\n",t)

}

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

A)21

B)11

C)6

D)1

(40)有以下程序

ftinclude<stdio.h>

main()

{EILE*f;

f=fopen("filea.txt","w");

fprintf(f,"abc");

fclose(f);

)

若文本文件filea.txt中原有內(nèi)容為:hello,則運(yùn)行以上程序后,

文件filea.txt中的內(nèi)容為

A)helloabc

B)abclo

C)abc

D)abchello

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,

答在試卷上不得分。

(1)假設(shè)一個長度為50的數(shù)組(數(shù)組元素的下標(biāo)從0到49)作為棧的

存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂

元素,如果bottom=49,top=30(數(shù)組下標(biāo)),則棧中具有【1】個

元素。

(2)軟件測試可分為白盒測試和黑盒測試?;韭窂綔y試屬于【2】

測試。

(3)符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

[3]o

(4)數(shù)據(jù)庫系統(tǒng)的核心是【4】

(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實(shí)

體聯(lián)系的是

[5]框。

(6)表達(dá)式(int)((double)(5/2)+2.5)的值是【6】

(7)若變量x、y已定義為int類型且x的值為99,y的值為9,請

將輸出語句printf([7],x/y);補(bǔ)充完整,使其輸出的計(jì)算結(jié)果

形式為:x/y=ll

⑻有以下程序

ftinclude<stdio.h>

main()

charcl,c2;

scanf("&c",&cl);

while(cl<65||cl>90)

scanf("&c",&cl);

c2=cl+32;

printf(u&c,&c\n”,cl,c2);

}

程序運(yùn)行輸入65回車后,能否輸出結(jié)果、結(jié)束運(yùn)行(請回答能或不能)

[8]

O

(9)以下程序運(yùn)行后的輸出結(jié)果是[9】

ttinclude<stdio.h>

main()

{intk=l,s=0;

do{

if{((k&2)!=0)continue;

s+=k;k++;

}while(k)10);

printf("s=&d/n”,s);

}

(10)下列程序運(yùn)行時,若輸入labcedl2df〈回車》輸出結(jié)果為[10]

ttinclude<stdio.h>

main()

{char

a=0,ch;

while((ch=getchar())!=,\n')

{if(a&2!=0&&(ch>>a'&&ch<=,z'))ch=ch-匕'+'A';

a++;putchar(ch);

)

printf("\n");

)

(11)有以下程序,程序執(zhí)行后,輸出結(jié)果是【11】

ttinclude<stdio.h>

voidfun(int*a)

{a[0=a[l];]}

main()

{inta[10]={10,9,8,7,6,5,4,3,2,1},i;

for(i=2;i>=0;i一一)fun{&a};

for(i=0;i<10;i++)printf("&d",a);

printf("\n");

}

(12)請將以下程序中的函數(shù)聲明語句補(bǔ)充完整

ftinclude<stdio.h>

int[12]

main()

{intx,y,(*p)();

p=max;

printf("&d\n",&x,&y);

)

Intmax(inta,intb)

{return(a>b/a:b);)

(13)以下程序用來判斷指定文件是否能正常打開,請?zhí)羁?/p>

ttinclude<stdio.h>

main()

{FILE*fp;

if(((fp=fopen("test,txt","r"))==[13]))

printf("未能打開文件!\n");

else

printf("文件打開成功!\n");

(14)下列程序的運(yùn)行結(jié)果為[14]

ftinclude<stdio.h>

ftinclude<string.h>

structA

{inta;charb[10];double

c;};

void

f(struct

A

*t);

main()

{structAa=(1001,"ZhangDa”,1098,0);

f(&a);printf("&d,&s,&6,if\n”,a.a,a.b,a.c);

}

voidf(struct

A

*t)

{strcpy(t->b,nChangRong");

(15)以下程序把三個NODETYPE型的變量鏈接成一個簡單的鏈表,并

在while循環(huán)中輸出鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù),請?zhí)羁?/p>

ftinclude<stdio.h>

structnode

{intdata;structnode*next;};

typedefstructnodeNODETYPE;

main()

{NODETYPEa,b,c,*h,*p;

a.

data=10;b.data=20;c.data=30;h=&a;

b.

next=&b;b.next=&c;c.next=,\0,;

P=h;

while(p){printf("&d”,p->data);[15];}

)

答案:

選擇題:

riO:DACDCABABC1T20:CBDDACDBCB2「30:CDABABACBC31?40:

ADBCCCBDAC

填空題:

(1)19(2)白盒(3)順序結(jié)構(gòu)(4)數(shù)據(jù)庫管理系統(tǒng)(DBMS)(5)

菱形

(6)4(7)"x/y=%d"(8)能(9)s=0(10)lAbCeDf2dF

(11)7777654321(12)max(inta,intb)(13)NULL

(14)1001,ChangRong,1098.0(15)p=p一>next

2008年9月二級C語言筆試真題及答案

(考試時間:120分鐘,滿分100分)

一、選擇題((1)?(10)、(21)?(40)每題2分,(11)?(20)

每題1分,70分)

下列各題A)、B)、C)、D)四個選項(xiàng)中,只有一個選項(xiàng)是正確的,請

將正確選項(xiàng)填涂在

答題卡相應(yīng)位置上,答在試卷上不得分。

(1)一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、

E依次入棧,然后

再依次出棧,則元素出棧的順序是()o

A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA

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

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

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

情況

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

情況

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

(3)在長度為〃的有序線性表中進(jìn)行二分查找,最壞情況下需要比

較的次數(shù)是()o

A)0(/2)B)0(/72)C)0(log2/7)D)0(/?log2/?)

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

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é)省存儲空間

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

A)控制流B)事件驅(qū)動C)模塊調(diào)用D)數(shù)據(jù)流

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

A)N-S圖B)DFD圖C)PAD圖D)程序流程圖

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

A)一致性B)分類性C)多態(tài)性D)標(biāo)識唯一性

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

A)一對一B)一對多C)多對一D)多對多

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

A)人工管理階段B)文件系統(tǒng)階段C)數(shù)據(jù)庫系統(tǒng)階段D)三個階

段相同

(10)有三個關(guān)系R、S和T如下:

RST

ABBCABC

m113m13

n235

由關(guān)系R和S通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()0

A)笛卡爾積B)交C)并D)自然連接

(11)以下敘述中正確的是()o

A)C程序的基本組成單位是語句B)C程序中的每一行只能寫一條

語句

二級C語言程序設(shè)計(jì)試卷第2頁(共9頁)

C)簡單C語句必須以分號結(jié)束D)C語句必須在一行內(nèi)寫完

(12)計(jì)算機(jī)能直接執(zhí)行的程序是()0

A)源程序B)目標(biāo)程序C)匯編程序D)可執(zhí)行程序

(13)以下選項(xiàng)中不能作為C語言合法常量的是()。

A)'cd'B)0.le+6C)”\a〃D)'\011'

(14)以下選項(xiàng)中正確的定義語句是()。

A)doublea;b;B)doublea=b=7;C)doublea=7,b=7;D)double,

a,b;

(15)以下不能正確表示代數(shù)式2勖

cd

的C語言表達(dá)式是()。

A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2D)2*a*b/c*d

(16)C源程序中不能表示的數(shù)制是()。

A)二進(jìn)制B)八進(jìn)制C)十進(jìn)制D)十六進(jìn)制

(17)若有表達(dá)式(w)?(—x):(++y),則其中與w等價(jià)的表達(dá)式是()。

A)w==lB)w==0C)w!=lD)w!=0

(18)執(zhí)行以下程序段后,w的值為()。

intw='A',x=14,y=15;

w=((x||y)&&(w<'a));

A)-1B)NULLC)1D)0

(19)若變量已正確定義為int型,要通過語句scanf(級d,%d,%d〃,

&a,&b,&c);給a賦值

1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(d代表一

個空格符)()o

A)ddd1,2,3〈回車〉B)1d2d3〈回車》

C)l,ddd2,6dd3〈回車>D)1,2,3〈回車》

(20)有以下程序段

inta,b,c;

a=10;b=50;c=30;

if(a>b)a=b,b=c;c=a;

printf(,,a=%db=%dc=%d\nv,a,b,c);

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

A)a=10b=50c=10B)a=10b=50c=30C)a=10b=30c=10D)a=50

b=30c=50

(21)若有定義語句:intm[]={5,4,3,2,1},i=4;,則下面對m數(shù)

組元素的引用中錯誤的是

()o

A)m[一i]B)m[2*2]C)m[m[0]]D)]

(22)下面的函數(shù)調(diào)用語句中func函數(shù)的實(shí)參個數(shù)是()0

func(f2(vl,v2),(v3,v4,v5),(v6,max(v7,v8)));

A)3B)4C)5D)8

(23)若有定義語句:doublex[5]={l.0,2.0,3.0,4.0,5.0},*p=x;

則錯誤引用x數(shù)組元素的是

()o

A)*pB)x[5]C)*(p+l)D)*x

(24)若有定義語句:chars[10]="1234567\0\0";,則strlen(s)

的值是()。

A)7B)8C)9D)10

(25)以下敘述中錯誤的是()o

A)用戶定義的函數(shù)中可以沒有return語句

B)用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次

返回多個函數(shù)值

C)用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void

類型

二級C語言程序設(shè)計(jì)試卷第3頁(共9頁)

D)函數(shù)的return語句中可以沒有表達(dá)式

(26)以下關(guān)于宏的敘述中正確的是()0

A)宏名必須用大寫字母表示

B)宏定義必須位于源程序中所有語句之前

C)宏替換沒有數(shù)據(jù)類型限制

D)宏調(diào)用比函數(shù)調(diào)用耗費(fèi)時間

(27)有以下程序

#include<stdio.h>

main()

{inti,j;

for(i=3;i>=l;i一)

{for(j=l;j<=2;j++)printfi+j);

printf(〃\n〃);

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

A)234B)432

345543

C)23D)45

3434

4523

(28)有以下程序

ftinclude<stdio.h>

main()

{intx=l,y=2,z=3;

if(x>y)

if(y<z)printf("%d”,++z);

elseprintf("%d”,++y);

printf("%d\n”,x++);

)

程序的運(yùn)行結(jié)果是()o

A)331B)41C)2D)1

(29)有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3=l)

if(i%5==2)

{printf('*%d",i);break;}

i++;

}while(i!=0);

printf;

}

二級C語言程序設(shè)計(jì)試卷第4頁(共9頁)

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

A)*7B)*3*5C)*5D)*2*6

(30)有以下程序

ttinclude<stdio.h>

intfun(inta,intb)

{if(b==0)returna;

elsereturn(fun(一a,一b));

)

main()

{printf("%d\n”,fun(4,2));}

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

A)1B)2C)3D)4

(31)有以下程序

ftinclude<stdio.h>

ftinclude<stdlib.h>

intfun(intn)

{int*p;

p=(int*)malloc(sizeof(int));

*p=n;return*p;

)

main()

{inta;

a=fun(10);printf(,/%d\n,/,a+fun(10));

)

程序的運(yùn)行結(jié)果是()o

A)0B)10C)20D)出錯

(32)有以下程序

ftinclude<stdio.h>

voidfun(inta,intb)

{intt;

t=a;a=b;b=t;

}

main()

{intc[10]={l,2,3,4,5,6,7,8,9,0),i;

for(i=0;i<10;i+=2)fun(c[i],c[i+l]);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf('\n");

程序的運(yùn)行結(jié)果是()o

A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)

0,9,8,7,6,5,4,3,2,1,D)

0,1,2,3,4,5,6,7,8,9,

(33)有以下程序

ftinclude<stdio.h>

structst

二級C語言程序設(shè)計(jì)試卷第5頁(共9頁)

{intx,y;)data[2]={l,10,2,20};

main()

{structst*p=data;

printf("%d,”,p->y);printf("%d\n”,(++p)->x);

)

程序的運(yùn)行結(jié)果是()o

A)10,1B)20,1C)10,2D)20,2

(34)有以下程序

ttinclude<stdio.h>

voidfun(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-l-i];a[n-l-i]=t;}

main()

{intk[10]={l,2,3,4,5,6,7,8,9,10},i;

fun(k,5);

for(i=2;i<8;i++)printf("%d",k[i]);

printf;

}

程序的運(yùn)行結(jié)果是()o

A)345678B)876543C)1098765D)321678

(35)有以下程序

ftinclude<stdio.h>

ttdefineN4

voidfun(inta[][N],intb[])

{inti;

for(i=0;i<N;i++)b[i]=a[i][i];

)

main()

{intx[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);

printf;

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

A)1,2,3,4,B)1,0,7,0,C)1,4,5,9,D)3,4,8,10,

(36)有以下程序

ftinclude<stdio.h>

intfun(int(*s)[4],intn,intk)

{intm,i;

m=s[0][k];

for(i=l;i<n;i++)if(s[i][k]>m)m=s[i][k];

returnm;

)

二級C語言程序設(shè)計(jì)試卷第6頁(共9頁)

main()

{int

a[4][4]={{1,2,3,4),{11,12,13,14},{21,22,23,24},{31,32,33,34

});

printf("%d\n”,fun(a,4,0));

}

程序的運(yùn)行結(jié)果是()o

A)4B)34C)31D)32

(37)有以下程序

#include<stdio.h>

main()

{structSTU{charname[9];charsex;doublescore[2];};

structSTUa={"Zhao",'m,,85.0,90.0),

b={〃Qian〃,'f',95.0,92.0);

b=a;

printf("%s,%c,%2.Of,%2.Of\n”,b,name,b.sex,b.score[0],b.scor

e⑴);

}

程序的運(yùn)行結(jié)果是()o

A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90

(38)假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的

結(jié)點(diǎn):

headabc

datanext

tPtq

則以下選項(xiàng)中可將q所指結(jié)點(diǎn)從鏈表中刪除并釋放該結(jié)點(diǎn)的語句組

是()。

A)(*p).next=(*q).next;free(p);B)p=q->next;free(q);

C)p=q;free(q);D)p->next=q->next;free(q);

(39)有以下程序

ttinclude<stdio.h>

main()

{chara=4;

printf("%d\n",a=a?l);

程序的運(yùn)行結(jié)果是()o

A)40B)16C)8D)4

(40)有以下程序

ftinclude<stdio.h>

main()

{FILE*pf;

char*sl="China",*s2="Beijing”;

pf=fopen(z,abc.dat","wb+”);

fwrite(s2,7,1,pf);

rewind(pf);

fwrite(si,5,1,pf);

fclose(pf);

)

以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。

B)ChinaB)ChinangC)ChinaBeijingD)BeijingChina

二級C語言程序設(shè)計(jì)試卷第7頁(共9頁)

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,

答在試卷上不得分。

(1)對下列二叉樹進(jìn)行中序遍歷的結(jié)果IIIO

A

BC

DEF

XYZ

(2)按照軟件測試的一般步驟,集成測試應(yīng)在【2】測試之后進(jìn)行。

(3)軟件工程三要素包括方法、工具和過程

溫馨提示

  • 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

提交評論