2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第1頁
2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第2頁
2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第3頁
2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第4頁
2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.若變量已經(jīng)定義且正確賦值,則針對(duì)程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對(duì)于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個(gè)分號(hào)改成逗號(hào),后面一個(gè)不變,則不能實(shí)現(xiàn)a和b值的交換

2.

3.下列關(guān)于字符串的說法中錯(cuò)誤的是

A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符'\0'作為字符串結(jié)束標(biāo)志

B.'\0'作為標(biāo)志占用存儲(chǔ)空間,計(jì)入串的實(shí)際長度

C.在表示字符串常量的時(shí)候不需要人為在其末尾加入'\0'

D.在C語言中,字符串常量隱含處理成以'\0'結(jié)尾

4.以下程序執(zhí)行后的輸出結(jié)果是()。

A.5,5

B.5,11

C.11,11

D.11,5

5.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

6.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。A.AaB.AbC.abD.Ba

7.有以下程序:

程序執(zhí)行后的輸出結(jié)果是()。

A.357B.753C.369D.751

8.下面函數(shù)的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串y中D.將字符串x連接到字符串y后面

9.以下定義語句中正確的是()。

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

10.

11.

12.下列代碼的復(fù)雜度是多少?如果多于1個(gè)答案正確,選擇最小的那個(gè)。()A.O(n*m*m)B.O(n*log(m)*m)C.O(n+m+m)D.O(n*m)

13.帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表L為空的條件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

14.下列不可用于C語言用戶標(biāo)識(shí)符的是A.A.j2_KEY

B.char

C._g_

D.Double

15.程序流程圖中有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

16.判斷一包含n個(gè)整數(shù)的數(shù)組a[]中是否存在i、j、k滿足a[i]+a[j]+a[k]=0的時(shí)間復(fù)雜度需要()

A.O(n^2)B.O(n^2logn)C.O(n^3)D.O(nlogn)

17.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的運(yùn)行結(jié)果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

18.同一個(gè)關(guān)系模型的任意兩個(gè)元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對(duì)

19.棧和隊(duì)列的共同點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

20.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

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

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

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

D.檢查a和b所指字符串中是否有‘\0’

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

22.若有語句doublex=17;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;之后y的值為()。

23.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個(gè)字符開始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

24.下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+321;

sub(s,7,SIZE-1);

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

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t1)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

voidfun()

{

staticinta=0;

a+=2;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<4,cc++)fun();

printf("\n");

}

26.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

27.面向?qū)ο蟮哪P椭校罨镜母拍钍菍?duì)象和______。

28.以下程序輸出的最后一個(gè)值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

29.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

30.棧和隊(duì)列通常采用的存儲(chǔ)結(jié)構(gòu)是【】。

31.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

32.以下程序的輸出結(jié)果是【】。

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{

inta=5,b=2;c=3,d=3,t;

t+MAX(a+,b,c+D)*10;

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

}

33.棧的3種基本運(yùn)算是:入棧、退棧和______。

34.已有定義如下:

structnode

{intdata;

structnode*next;

}*p;

以下語句調(diào)用malloc函數(shù),使指針p指向一個(gè)具有structnode類型的動(dòng)態(tài)存儲(chǔ)空間。請(qǐng)?zhí)羁铡?/p>

p=(structnode*)malloc(【】);

35.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

36.下面程序執(zhí)行后k的值為【】。

inta=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

37.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

38.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

39.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4};

inti;

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

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

printf"\n");

}

40.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=-a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

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

}

三、1.選擇題(20題)41.以下數(shù)組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

42.函數(shù)ftell(fp)的作用是()。

A.得到fp所指向文件的當(dāng)前讀寫位置B.初始化流式文件的位置指針C.移動(dòng)流式文件的位置指針D.以上答案均正確

43.fwrite函數(shù)的一般調(diào)用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

44.關(guān)于字符常量,以下敘述正確的是()。

A.空格不是一個(gè)字符常量

B.字符常量能包含大于一個(gè)的字符

C.單引號(hào)中的大寫字母和小寫字母代表的是相同的字符常量

D.所有的字符常量都可以作為整型量來處理

45.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。

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

46.有以下程序main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是______。

A.3B.4C.5D.6

47.若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為()。

A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+1

48.若fp是指向某文件的指針,且已讀到此文件的末尾,則函數(shù)feof(fp)的返回值是_______。

A.EOFB.0C.非零值D.NULL

49.以下程序輸出的結(jié)果為______。main(){char*dlpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char*p;inti;p=alpha;for(i=0;i<4;iff)printf("%s",p[i])}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

50.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

51.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

52.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后的輸出結(jié)果是

A.70B.07C.11D.430

53.表達(dá)式~0x11的值是()。

A.OxFFEEB.0x71C.0x0071D.0xFFE1

54.對(duì)長度為n的線性表進(jìn)行順序查找,在最壞的情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

55.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A.2B.3C.5D.4

56.若要說明一個(gè)類型名STP,使得定義語句STPs;等價(jià)于char*s;,以下選項(xiàng)中正確的是A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

57.模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

58.以下正確的程序段是

A.cgarstr[20];scanf("%s",&str);

B.char*p;scanf("%s",p);

C.charstr[20];scanf("%s",&str[2])

D.charstr[20],*p=str;scanf("%s",p[2]);

59.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

60.若有如下程序段:main(){intn=0;while(printf("*")){n++;if(n<3)break;}}則下列描述正確的是()

A.其中循環(huán)控制表達(dá)式與0等價(jià)B.其中循環(huán)控制表達(dá)式與'0'等價(jià)C.其中循環(huán)控制表達(dá)式是不合法的D.以上說法都不對(duì)

四、選擇題(20題)61.以下選項(xiàng)中關(guān)于C語言常量的敘述錯(cuò)誤的是()。

A.經(jīng)常被使用的變量可以定義成常量

B.常量分為整型常量、實(shí)型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值型常量.

D.所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量

62.以下選項(xiàng)中,不能作為合法常量的是

A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0

63.有下列程序:

fun(intx,inty)

{staticintm=0,i=2;

i+=++rn;m=ixy;returnm;

}

main

{intj=l,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j.m);printf(”%d\n”,k);

}

執(zhí)行后的輸出結(jié)果是()。

A.5.5B.5,11C.11,11D.11,5

64.有下列函數(shù)定義:intfun(doublea,doubleb){returna*b;}若下列選項(xiàng)中所用變量都已經(jīng)正確定義并賦值,錯(cuò)誤的函數(shù)調(diào)用是()。A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(X,y)x,y);

D.fun(x,y);

65.在關(guān)系數(shù)據(jù)庫系統(tǒng)中,當(dāng)關(guān)系的模型改變時(shí),用戶程序可以不變,這是

A.?dāng)?shù)據(jù)的物理獨(dú)立性B.?dāng)?shù)據(jù)的邏輯獨(dú)立性C.?dāng)?shù)據(jù)的位置獨(dú)立性D.?dāng)?shù)據(jù)的存儲(chǔ)獨(dú)立性

66.若有如下定義,則__________是對(duì)數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

67.有以下程序:

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

A.1,0B.0,1C.0,0D.1,1

68.

69.

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

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

70.有以下程序:

若運(yùn)行時(shí)輸入:246<;回車>;,則輸出結(jié)果為()。

A.204B.200C.240D.246

71.

72.在ASP.NET中采用CodeBehind代碼隱藏技術(shù)分離HTML顯示代碼和業(yè)務(wù)邏輯代碼,在PHP中采用的技術(shù)是()。

A.模板技術(shù)B.靜態(tài)緩存技術(shù)C.PHP引擎技術(shù)D.后臺(tái)編譯技術(shù)

73.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個(gè)數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

74.下列敘述中不正確的是()。

A.在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動(dòng)變量實(shí)質(zhì)上是一個(gè)函數(shù)內(nèi)部的局部變量

75.

76.

77.

78.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如下圖所示的結(jié)點(diǎn):

則以下選項(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);

79.有以下程序:

當(dāng)執(zhí)行程序時(shí)從鍵盤上輸入HelloBeijing<;回車>;,則程序運(yùn)行后的輸出結(jié)果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

80.(16)數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名不屬于數(shù)據(jù)流圖合法圖符的是_____。

A.控制流

B.加工

C.數(shù)據(jù)存儲(chǔ)

D.源和潭

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是計(jì)算并輸出h以內(nèi)的素?cái)?shù)之和。h由主函數(shù)傳給proc()函數(shù)。若h的值為80,則函數(shù)的值為791。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個(gè)位數(shù)依次放在c的個(gè)位和百位上,b中的十位數(shù)和個(gè)位數(shù)依次放在c的十位和千位上。例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后c=2514。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.BC語言允許將多條語句寫在一行,選項(xiàng)A錯(cuò)誤;題干中的語句是從左至右依次執(zhí)行的,選項(xiàng)B正確,選項(xiàng)C錯(cuò)誤。題干中的程序前兩個(gè)分號(hào)改成逗號(hào),就構(gòu)成了逗號(hào)表達(dá)式。逗號(hào)表達(dá)式會(huì)依次從左到右計(jì)算各個(gè)表達(dá)式,整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以此例也可以實(shí)現(xiàn)a和b值的交換,選項(xiàng)D錯(cuò)誤。故本題答案為B選項(xiàng)。

2.A

3.B解析:'\\0'作為標(biāo)志占用存儲(chǔ)空間,但是不計(jì)入串的實(shí)際長度。當(dāng)給一個(gè)字符型指針賦值時(shí),賦給這個(gè)指針的是這個(gè)字符串的地址。

4.Bmain函數(shù)中的局部變量m與fun函數(shù)中的靜態(tài)局部變量m同名,因此main訪問的是其局部變量m,所以main中的兩次函數(shù)調(diào)用,實(shí)際上都是調(diào)用fun(1,1)。

第一次調(diào)用時(shí),i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。

第二次調(diào)用時(shí),i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。

所以程序輸出5,11。

5.B本題考查for循環(huán)的使用。對(duì)于第1個(gè)for循環(huán),任何一個(gè)i,內(nèi)層j的循環(huán)都要使j~0到3,j=4時(shí)不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時(shí)退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。

6.B函數(shù)fun將形參b賦給形參a,使得a和b都指向原b所指向的地址,然后對(duì)該地址的值執(zhí)行自增1;main函數(shù)中p1指向ch1,p2指向ch2。通過fun函數(shù)的調(diào)用,將ch2的值完成自增1,字符’a’自增1后變成字符’b’,所以程序輸出:Ab。本題答案為B選項(xiàng)。

7.A本題考查的是for循環(huán)與二維數(shù)組的定義和引用。當(dāng)定義二維數(shù)組的初始化列表只使用一重花括號(hào)時(shí),其中的每個(gè)值依次代表從第l行的第1個(gè)元素起,直到第l行滿,接著代表第2行、第3行……的每一個(gè)元素。程序中的循環(huán)將循環(huán)3次,循環(huán)變量i的值分別是0、1、2,所以3次循環(huán)中輸出的數(shù)分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結(jié)果為357。故應(yīng)該選擇A)。

8.A

9.BA選項(xiàng)中的變量b沒有定義,不能直接給變量a賦值。C選項(xiàng)中,*b、*c表示的是一個(gè)實(shí)型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項(xiàng)中,“a=0.0”后面應(yīng)該為逗號(hào),不能是分號(hào)。故本題答案為B選項(xiàng)。

10.A

11.B

12.D

13.D

14.B本題主要考查標(biāo)識(shí)符的命名規(guī)則。選項(xiàng)A是合法的用戶標(biāo)識(shí)符,它符合命名的規(guī)則;選項(xiàng)B不是一個(gè)合法的用戶標(biāo)識(shí)符,因?yàn)樗窍到y(tǒng)中定義了的關(guān)鍵字;選項(xiàng)C是一個(gè)合法的標(biāo)識(shí)符;選項(xiàng)D可能也會(huì)有很多人認(rèn)為它不是一個(gè)合法的標(biāo)識(shí)符,認(rèn)為它是關(guān)鍵字,但事實(shí)上它不是一個(gè)關(guān)鍵字,因?yàn)镃語言中嚴(yán)格區(qū)分大小寫,因此,它不是雙精度關(guān)鍵字“double”,所以它是一個(gè)合法的用戶標(biāo)識(shí)符。

15.C解析:程序流程圖是軟件過程設(shè)計(jì)中常用的圖形描述工具之一。構(gòu)成程序流程圖的最基本符號(hào)有:→或↓,表示控制流;□表示加工步驟;

表示邏輯條件。

16.A

17.A程序首先使用typedef定義一種新的類型名PER,它包含3種數(shù)據(jù)成員:整數(shù)num,字符數(shù)組name,整數(shù)score。main函數(shù)使用PER定義結(jié)構(gòu)體數(shù)組s,s包含兩個(gè)PER類型的元素。然后調(diào)用函數(shù)fun將數(shù)組s傳入。fun函數(shù)的功能是比較形參數(shù)組x的兩個(gè)元素的score值的大小。若第1個(gè)元素的score值大于第2個(gè)元素的score值,就使用臨時(shí)變量t將兩個(gè)元素的score值交換。由于621大于585且x等價(jià)于實(shí)參s的指針,因此實(shí)參s的兩個(gè)元素的score也會(huì)進(jìn)行交換,執(zhí)行完fun函數(shù)之后,for循環(huán)將兩個(gè)元素輸出。故本題答案為A選項(xiàng)。

18.B關(guān)系具有以下7個(gè)性質(zhì)。①元組個(gè)數(shù)有限性:二維表中元組的個(gè)數(shù)是有限的。②元組的唯一性:二維表中任意兩個(gè)元組不能完全相同。③元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項(xiàng)。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個(gè)性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為關(guān)系模型。本題答案為B選項(xiàng)。

19.C解析:棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種“后進(jìn)先出”(或“先進(jìn)后出”)的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端:進(jìn)行刪除操作,是一種“先進(jìn)先出”(或“后進(jìn)后出”)的線性表。因此棧和隊(duì)列的共同點(diǎn)是只允許在端點(diǎn)處插入和刪除元素。

20.A題目的fun函數(shù)內(nèi),while循環(huán)條件為“(*b=*a)!=‘\\0’”,執(zhí)行時(shí)先把指針a所指向的字符賦給指針b所在的內(nèi)存單元。如果該字符不是結(jié)束標(biāo)識(shí)‘\\0’,執(zhí)行循環(huán)體“a++;b++;”,指針a、b分別指向下一個(gè)字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在的內(nèi)存單元,直到遇到結(jié)束標(biāo)識(shí)為止。故本題答案為A選項(xiàng)。

21.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。

22.11解析:(int)(x/5)=3,3%2=1。

23.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到笫i+n或最后—個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。

24.abcdefglkjihabcdefglkjih解析:本題主要考查了字符變量可參與的運(yùn)算。因?yàn)樽址谟?jì)算機(jī)中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運(yùn)算等,某字符的大寫字母的ASCII碼值比它對(duì)應(yīng)的小寫字母ASCII碼值小32。

25.246246解析:static聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個(gè)變量的作用有:①對(duì)局部變量用static聲明,則為該變量分配的空間在整個(gè)程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。

26.8168,16解析:float(*p1)(float)是定義p1為指向函數(shù)的float型的指針變量。因此p1=f1;p2=f2;表示p1指向函數(shù)f1,p2指向函數(shù)f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面將p1與p2互換,y2=f1(f2(2.0))=16。

27.類類

28.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)方式,它具有以下特點(diǎn):

①靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類別,在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元。在程序整個(gè)運(yùn)行期間都不釋放。

②對(duì)靜態(tài)局部變量是在編譯時(shí)賦初值的,即只賦初值—次,在程序運(yùn)行時(shí)它已有初值。以后每次調(diào)用函數(shù)時(shí)不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。

③如在定義局部變量時(shí)不賦初值的話,則對(duì)靜態(tài)局部變量來說,編譯時(shí)自動(dòng)賦初值0(對(duì)數(shù)值型變量)或空字符(對(duì)字符變量)。(注意:C語言中的非靜態(tài)變量在定義時(shí),系統(tǒng)并不會(huì)自動(dòng)給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。

本題中函數(shù)的功能是:與for語句一起求一個(gè)整數(shù)的階乘。

29.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前療遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時(shí),仍然先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

30.鏈?zhǔn)酱鎯?chǔ)和順序存儲(chǔ)鏈?zhǔn)酱鎯?chǔ)和順序存儲(chǔ)

31.77解析:在程序執(zhí)行時(shí),static變量僅初始化一次,下次使用時(shí)將使用上次保存的值。

32.77解析:宏替換后,表達(dá)式t=MAX(a+b,c+d)*10即變?yōu)椋簍=(a+b)>(c+d)?(a+b):(c+d)*10;由于(a+b)>(c+d)為真,所以t=(a+b),即為7。

33.讀棧頂元素讀棧頂元素解析:棧的基本運(yùn)算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個(gè)新的元素;退棧是指取出棧頂元素并賦值給一個(gè)變量;讀棧頂元素是將棧頂元素賦值給一個(gè)指定的變量,不刪除棧頂元素。

34.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是開辟一個(gè)長度為sizeof(struetnode)的內(nèi)存區(qū)。(structnode*)的作用是使malloc返回的指針轉(zhuǎn)換為指向structnode類型數(shù)據(jù)的指針。

35.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:

36.44解析:本題首先判斷a>b的真假,結(jié)果是1>2為假,所以表達(dá)式“a>b?a:c>d?c:d”的值為子表達(dá)式“c>d?c:d”的值。再判斷c>d的真假,結(jié)果是3>4為假,所以最終k被賦的值為d的值,故應(yīng)該填4。

37.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時(shí),調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時(shí),調(diào)用PRINT(2),P(2)輸出2:第3次循環(huán),i=3時(shí),調(diào)用PRINT(3),P(3)輸出3:第4次循環(huán),i=4時(shí),調(diào)用PRINT(4),P(4)輸出4,theend。

38.00解析:函數(shù)getchar()是從鍵盤得到用戶輸入的一個(gè)字符。用戶輸入的第1個(gè)字符是a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個(gè)循環(huán)不會(huì)被執(zhí)行。

39.24682,4,6,8解析:子函數(shù)fun()的功能是將數(shù)組a中的元素都自加一遍,然后仍然將結(jié)果存在原數(shù)組中,其實(shí)就是將數(shù)組a的每個(gè)元素都變?yōu)樵瓉淼?倍,然后輸出。在主程序中首先通過intfun()定義了子函數(shù)fun(),然后再調(diào)用fun()。

40.45994599解析:if語句只對(duì)緊跟其后的一條語句或語句塊產(chǎn)生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=-a;,執(zhí)行a=c;c=t,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面3條語句都被執(zhí)行,這3條語句構(gòu)成一次a和b的內(nèi)容交換。所以最后輸出的結(jié)果是:4599。

41.D解析:一維數(shù)組的定義方式為:

類型說明符數(shù)組名[常量表達(dá)式];

選項(xiàng)A符合此定義形式,正確;C語言中多維數(shù)組賦初值時(shí)可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項(xiàng)C正確;另外,如果對(duì)全部數(shù)組元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長度可以不指定,但第二維的長度不能省,所以選項(xiàng)B正確,而選項(xiàng)D是錯(cuò)誤的。

42.A解析:位置指針當(dāng)前值函數(shù)ftell()的基本調(diào)用格式為:ftell(fp)。

ftell()函數(shù)的參數(shù)說明:“fp”是指向文件的文件型指針。

ftell函數(shù)的功能:得到fp所指向文件的當(dāng)前讀寫位置,即位置指針的當(dāng)前值,如果函數(shù)的返回值為-1L,表示出錯(cuò)。

43.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準(zhǔn)備輸出的數(shù)據(jù)塊的起始地址,size表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù),count用來指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。

44.D解析:本題考查字符常量的4個(gè)知識(shí)點(diǎn):①空格是一個(gè)字符常量,而且單引號(hào)中的空格不可以省略:②字符常量只能包含一個(gè)字符:⑨單引號(hào)中的大寫字母和小寫字母代表的是不相同的字符常量:④所有的字符常量部作為整型量來處理,在計(jì)算機(jī)內(nèi)部,其對(duì)應(yīng)的整數(shù)值就是ASCII碼值。

45.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(zhuǎn)換成關(guān)系。

46.B解析:本題是考查手工模擬執(zhí)行程序的能力。a初值是1,循環(huán)開始時(shí)b值為1,由于a>=8為假,不執(zhí)行break,但a%2==1為真,執(zhí)行a+=5,a值變?yōu)?,再執(zhí)行continue跳過不執(zhí)行a-=3語句,而立即開始下一次循環(huán)。這時(shí)b值為2,由于a值為6,a>=8仍為假,不執(zhí)行break,但a%2==1為假,不執(zhí)行復(fù)合語句“{a+=5;continue;}”而執(zhí)行a-=3,a值變?yōu)?。再開始下一次循環(huán),這時(shí)b值為3。由于a值為3,a>=8仍為假,不執(zhí)行break,但a%2==1為真,執(zhí)行a+=5,a值變?yōu)?,再執(zhí)行continue跳過不執(zhí)行a-=3語句,而立即開始下一次循環(huán)。這時(shí)b值為4。由于a值為8,a>=8為真,執(zhí)行break,停止for循環(huán)。此時(shí)輸出的b值應(yīng)為4。

47.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個(gè)元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個(gè)元素,所以共有i*m+j個(gè)元素。

48.C解析:函數(shù)feof是用來判斷文件是否已讀到末尾,如果已讀到末尾則返回非零值,否則返回0。

49.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個(gè)字符串。

50.A解析:“%”是求余運(yùn)算符或模運(yùn)算符,“%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項(xiàng)A)中的x是double型數(shù)據(jù)。

51.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號(hào)字符;“\\\\”格式符表示輸出反斜線字符。

52.A解析:本題考核的知識(shí)點(diǎn)是位運(yùn)算。在位與運(yùn)算符“&”中參加運(yùn)算的兩位都為1時(shí),其結(jié)果為1,否則結(jié)果為0,位與運(yùn)算符“|”中參加運(yùn)算的兩位只要有一個(gè)為1,則結(jié)果為1,只有當(dāng)相應(yīng)的兩位都為。結(jié)果才為0。所以最后輸出a和b的值為7和0。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

53.A解析:本題主要考查按位求反運(yùn)算和整型常量的表示:①十六進(jìn)制整型常量的形式是以數(shù)字0x或OX開頭的十六進(jìn)制字符串;②按位求反運(yùn)算的規(guī)則是:將二進(jìn)制表示的運(yùn)算對(duì)象按位取反,即將1變0,將0變I?!癘xll”即0000000000010001,進(jìn)行按位求反運(yùn)算“~Ox11”后為1111111111101110,即0xFFEE。

54.C解析:對(duì)線性表進(jìn)行順序查找時(shí),從表中的第一個(gè)元素開始,將給定的值與表中逐個(gè)元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查到所要找的元素為止。在最壞的情況下,要查找的元素是表的最后一個(gè)元素或查找失敗,這兩種情況都將與表中所有元素進(jìn)行比較,因此比較次數(shù)為n。

55.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時(shí),其值等于表達(dá)式b的值;當(dāng)a為假時(shí),其值等于表達(dá)式c的值。

表達(dá)式運(yùn)算過程:第1個(gè)表達(dá)式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個(gè)表達(dá)式:m=2<z=5為真,所以返回m的值,即m=2;第3個(gè)表達(dá)式:w=2<y=4為真,所以返回m的值,即m=2。

56.D解析:指針類型的自定義的形式如下:typedef類型說明符*用戶類型名。不難看出只有選項(xiàng)D是正確的定義形式。所以,D選項(xiàng)為所選。

57.D解析:內(nèi)聚性是—個(gè)模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強(qiáng)排列順序?yàn)椋号既粌?nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

58.C解析:scanf輸入字符串有一點(diǎn)要注意的是,格式控制串必須用%s。注意:gets函數(shù)和puts函數(shù)的作用。

59.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實(shí)施對(duì)數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護(hù)工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

60.B

61.AC語言中,常量是指在程序運(yùn)行過程中其值不能被改變的量,變量是指運(yùn)行過程中其值可以改變的量,二者不能混淆,所以A選項(xiàng)錯(cuò)誤。

62.B本題考查實(shí)型數(shù)據(jù)的表示形式。

實(shí)型數(shù)據(jù)有十進(jìn)制小數(shù)形式和指數(shù)形式兩種表示方法,指數(shù)形式中e后面的指數(shù)必須為整數(shù)。選項(xiàng)B中e后面的指數(shù)為0.3,不符合實(shí)型數(shù)據(jù)的表示方式。

63.B

\n變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用fun函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次調(diào)用結(jié)束時(shí),它們的值不變,第2次調(diào)用時(shí),m和i的初始值分別為5和3,在執(zhí)行“i+=m+1”后,i的值為9,因此,最終m的值為11。

64.C本題考查函數(shù)在函數(shù)調(diào)用時(shí)參數(shù)的傳遞形式,形參與實(shí)參參數(shù)個(gè)數(shù)類型要一致。

65.B數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫系統(tǒng)的一個(gè)最重要的目標(biāo)之一。它能使數(shù)據(jù)獨(dú)立于應(yīng)用程序。數(shù)據(jù)庫的數(shù)據(jù)獨(dú)立性主要包括數(shù)據(jù)的物理獨(dú)立性和邏輯獨(dú)立性。

物理獨(dú)立性是指用戶的應(yīng)用程序與存儲(chǔ)在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨(dú)立的,即數(shù)據(jù)在磁盤上怎樣存儲(chǔ)由DBMS管理,用戶程序不需要了解,應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu)。這樣,當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變了,應(yīng)用程序不用改變。

邏輯獨(dú)立性是指用戶的應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨(dú)立的,即當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),用戶程序也可以不變。

本題中說的關(guān)系的模型改變時(shí),用戶程序可以不變正是數(shù)據(jù)的邏輯獨(dú)立性。

66.D

67.An=b>a,n=1,判斷到此,邏輯或?yàn)檎妫竺娴腏=a<b不再執(zhí)行。因此i=1,j=0。

68.D

69.B

\n本題考查帶參數(shù)的宏的定義:“#defineADD(x)x+x”中X代表m+n,故s寫成s=m+n+m+n*k=1+2+1+2*3=10。

\n

70.A本題中輸入的3個(gè)數(shù)據(jù)2,4,6分別賦值給了x[0[0],x[1][0],x[2][0]。x[o][1]仍為初始時(shí)的0,所以打印輸出時(shí)的結(jié)果為A選項(xiàng)。

71.A

72.A

73.AP=8;后,指針P指向s的首地址,*P=s[0],因此選項(xiàng)A)是正確的;p是字符串指針,所指向的字符串為”beijing”,其長度為7,而數(shù)組s中元素的個(gè)數(shù)為20,因此選項(xiàng)B)和D)是錯(cuò)誤的;s是數(shù)組,不是指針變量,所以選項(xiàng)C)也是錯(cuò)誤的。

74.B解析:編譯時(shí),編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時(shí),編譯系統(tǒng)根據(jù)需要要臨時(shí)分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

75.C

76.B

77.B

78.D題目中有兩個(gè)分別指向結(jié)點(diǎn)的指針p和q,其中p->next=q,q->next->data=C。要將q結(jié)點(diǎn)從鏈表中刪除,只要將指針p所指結(jié)點(diǎn)的next域指向q指針?biāo)附Y(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),即令p->next=q->next,也可以表示為(*p).next=(*q).next。操作完成后,便將q指針?biāo)附Y(jié)點(diǎn)從鏈表中刪除,隨后將該結(jié)點(diǎn)釋放即可。

79.C主程序讀取整個(gè)字符串存于s中,調(diào)用fun函數(shù)。字符指針c指向數(shù)組S。函數(shù)fun的功能是把指針C所指向的字符數(shù)組中的所有小寫字符轉(zhuǎn)換為大寫。囂cts函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結(jié)束。如果·c為小寫字符,則}C={C一32(轉(zhuǎn)大寫)。因此C選項(xiàng)正確。

80.A

81.(1)錯(cuò)誤:ifh%j==0

正確:if(h%i==0)

(2)錯(cuò)誤:if(yes==0)

正確:if(yes)

【解析】由C語言語法規(guī)則可知,if語句的條件必須用括號(hào)括起來,因此,“ifh%j==0”應(yīng)改為“if(h%j==0)”;當(dāng)變量yes=0時(shí),說明整數(shù)h為非素?cái)?shù),不計(jì)入和當(dāng)中,因此,“if(yes==0)”應(yīng)改為“if(yes)”。

82.voidfun(inta,intb,long*c){/*b%10獲取b的個(gè)位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個(gè)位數(shù),b/10獲取b的十位數(shù)*/ *c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;}本題主要考如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對(duì)它們除以10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。將得到的數(shù)對(duì)應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個(gè)位數(shù)。注意使用c時(shí)要進(jìn)行指針運(yùn)算。2022年黑龍江省雞西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.若變量已經(jīng)定義且正確賦值,則針對(duì)程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對(duì)于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個(gè)分號(hào)改成逗號(hào),后面一個(gè)不變,則不能實(shí)現(xiàn)a和b值的交換

2.

3.下列關(guān)于字符串的說法中錯(cuò)誤的是

A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符'\0'作為字符串結(jié)束標(biāo)志

B.'\0'作為標(biāo)志占用存儲(chǔ)空間,計(jì)入串的實(shí)際長度

C.在表示字符串常量的時(shí)候不需要人為在其末尾加入'\0'

D.在C語言中,字符串常量隱含處理成以'\0'結(jié)尾

4.以下程序執(zhí)行后的輸出結(jié)果是()。

A.5,5

B.5,11

C.11,11

D.11,5

5.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

6.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。A.AaB.AbC.abD.Ba

7.有以下程序:

程序執(zhí)行后的輸出結(jié)果是()。

A.357B.753C.369D.751

8.下面函數(shù)的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串y中D.將字符串x連接到字符串y后面

9.以下定義語句中正確的是()。

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

10.

11.

12.下列代碼的復(fù)雜度是多少?如果多于1個(gè)答案正確,選擇最小的那個(gè)。()A.O(n*m*m)B.O(n*log(m)*m)C.O(n+m+m)D.O(n*m)

13.帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表L為空的條件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

14.下列不可用于C語言用戶標(biāo)識(shí)符的是A.A.j2_KEY

B.char

C._g_

D.Double

15.程序流程圖中有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

16.判斷一包含n個(gè)整數(shù)的數(shù)組a[]中是否存在i、j、k滿足a[i]+a[j]+a[k]=0的時(shí)間復(fù)雜度需要()

A.O(n^2)B.O(n^2logn)C.O(n^3)D.O(nlogn)

17.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的運(yùn)行結(jié)果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

18.同一個(gè)關(guān)系模型的任意兩個(gè)元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對(duì)

19.棧和隊(duì)列的共同點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

20.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

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

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

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

D.檢查a和b所指字符串中是否有‘\0’

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

22.若有語句doublex=17;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;之后y的值為()。

23.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個(gè)字符開始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

24.下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+321;

sub(s,7,SIZE-1);

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

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t1)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

voidfun()

{

staticinta=0;

a+=2;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<4,cc++)fun();

printf("\n");

}

26.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

27.面向?qū)ο蟮哪P椭校罨镜母拍钍菍?duì)象和______。

28.以下程序輸出的最后一個(gè)值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

29.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

30.棧和隊(duì)列通常采用的存儲(chǔ)結(jié)構(gòu)是【】。

31.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

32.以下程序的輸出結(jié)果是【】。

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{

inta=5,b=2;c=3,d=3,t;

t+MAX(a+,b,c+D)*10;

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

}

33.棧的3種基本運(yùn)算是:入棧、退棧和______。

34.已有定義如下:

structnode

{intdata;

structnode*next;

}*p;

以下語句調(diào)用malloc函數(shù),使指針p指向一個(gè)具有structnode類型的動(dòng)態(tài)存儲(chǔ)空間。請(qǐng)?zhí)羁铡?/p>

p=(structnode*)malloc(【】);

35.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

36.下面程序執(zhí)行后k的值為【】。

inta=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

37.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

38.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

39.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4};

inti;

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

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

printf"\n");

}

40.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=-a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

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

}

三、1.選擇題(20題)41.以下數(shù)組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

42.函數(shù)ftell(fp)的作用是()。

A.得到fp所指向文件的當(dāng)前讀寫位置B.初始化流式文件的位置指針C.移動(dòng)流式文件的位置指針D.以上答案均正確

43.fwrite函數(shù)的一般調(diào)用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

44.關(guān)于字符常量,以下敘述正確的是()。

A.空格不是一個(gè)字符常量

B.字符常量能包含大于一個(gè)的字符

C.單引號(hào)中的大寫字母和小寫字母代表的是相同的字符常量

D.所有的字符常量都可以作為整型量來處理

45.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。

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

46.有以下程序main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是______。

A.3B.4C.5D.6

47.若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為()。

A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+1

48.若fp是指向某文件的指針,且已讀到此文件的末尾,則函數(shù)feof(fp)的返回值是_______。

A.EOFB.0C.非零值D.NULL

49.以下程序輸出的結(jié)果為______。main(){char*dlpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char*p;inti;p=alpha;for(i=0;i<4;iff)printf("%s",p[i])}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

50.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

51.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

52.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后的輸出結(jié)果是

A.70B.07C.11D.430

53.表達(dá)式~0x11的值是()。

A.OxFFEEB.0x71C.0x0071D.0xFFE1

54.對(duì)長度為n的線性表進(jìn)行順序查找,在最壞的情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

55.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A.2B.3C.5D.4

56.若要說明一個(gè)類型名STP,使得定義語句STPs;等價(jià)于char*s;,以下選項(xiàng)中正確的是A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

57.模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

58.以下正確的程序段是

A.cgarstr[20];scanf("%s",&str);

B.char*p;scanf("%s",p);

C.charstr[20];scanf("%s",&str[2])

D.charstr[20],*p=str;scanf("%s",p[2]);

59.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

60.若有如下程序段:main(){intn=0;while(printf("*")){n++;if(n<3)break;}}則下列描述正確的是()

A.其中循環(huán)控制表達(dá)式與0等價(jià)B.其中循環(huán)控制表達(dá)式與'0'等價(jià)C.其中循環(huán)控制表達(dá)式是不合法的D.以上說法都不對(duì)

四、選擇題(20題)61.以下選項(xiàng)中關(guān)于C語言常量的敘述錯(cuò)誤的是()。

A.經(jīng)常被使用的變量可以定義成常量

B.常量分為整型常量、實(shí)型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值型常量.

D.所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量

62.以下選項(xiàng)中,不能作為合法常量的是

A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0

63.有下列程序:

fun(intx,inty)

{staticintm=0,i=2;

i+=++rn;m=ixy;returnm;

}

main

{intj=l,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j.m);printf(”%d\n”,k);

}

執(zhí)行后的輸出結(jié)果是()。

A.5.5B.5,11C.11,11D.11,5

64.有下列函數(shù)定義:intfun(doublea,doubleb){returna*b;}若下列選項(xiàng)中所用變量都已經(jīng)正確定義并賦值,錯(cuò)誤的函數(shù)調(diào)用是()。A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(X,y)x,y);

D.fun(x,y);

65.在關(guān)系數(shù)據(jù)庫系統(tǒng)中,當(dāng)關(guān)系的模型改變時(shí),用戶程序可以不變,這是

A.?dāng)?shù)據(jù)的物理獨(dú)立性B.?dāng)?shù)據(jù)的邏輯獨(dú)立性C.?dāng)?shù)據(jù)的位置獨(dú)立性D.?dāng)?shù)據(jù)的存儲(chǔ)獨(dú)立性

66.若有如下定義,則__________是對(duì)數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

67.有以下程序:

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

A.1,0B.0,1C.0,0D.1,1

68.

69.

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

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

70.有以下程序:

若運(yùn)行時(shí)輸入:246<;回車>;,則輸出結(jié)果為()。

A.204B.200C.240D.246

71.

72.在ASP.NET中采用CodeBehind代碼隱藏技術(shù)分離HTML顯示代碼和業(yè)務(wù)邏輯代碼,在PHP中采用的技術(shù)是()。

A.模板技術(shù)B.靜態(tài)緩存技術(shù)C.PHP引擎技術(shù)D.后臺(tái)編譯技術(shù)

73.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論