2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第1頁
2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第2頁
2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第3頁
2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第4頁
2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021-2022年湖北省黃岡市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.當(dāng)變量c的值不為2、4、6時(shí),值為“真”的表達(dá)式是()。

A.(c>=2&&c<=6)&&(c%2!=1)

B.(c==2)||(c==4)||(c==6)

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

D.(c>=2&&c<=6)||(c!=3)||(c!=5)

2.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用直接選擇大值開始排序時(shí),第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

3.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(fnnc(x,y),z);printf("%d\n",r);}該程序的輸出結(jié)果是______。

A.12B.13C.14D.15

4.在下列語句中,其含義為“q是一個(gè)函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

5.關(guān)于地址和指針,以下敘述正確的是()。

A.可以通過強(qiáng)制類型轉(zhuǎn)換讓char型指針指向double型變量

B.函數(shù)指針P指向一個(gè)同類型的函數(shù)f時(shí),必須寫成“p=&f;”

C.指針P指向一個(gè)數(shù)組f時(shí),必須寫成“P=&f;”

D.—個(gè)指針變量P可以指向自身

6.二維數(shù)組A的每個(gè)元素是由6個(gè)字符組成的串,其行下標(biāo)i=0,1,…,8,列下標(biāo)j=1,2,…,10。若A按行先存儲(chǔ),元素A[8][5]的起始地址與當(dāng)A按列先存儲(chǔ)時(shí)的元素()的起始地址相同。設(shè)每個(gè)字符占一個(gè)字節(jié)。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

7.若有以下程序

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

A.3B.7C.6D.10

8.對(duì)稱數(shù)組A中,每個(gè)元素的長(zhǎng)度為4個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲(chǔ)在從首地址SA開始的存儲(chǔ)器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

9.

10.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序運(yùn)行結(jié)果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

11.若有以下定義,則對(duì)a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

12.

13.在深度為5的滿二叉樹葉中,葉子結(jié)點(diǎn)的個(gè)數(shù)為()。

A.32B.31C.16D.15

14.如果某圖的鄰接矩陣是對(duì)角線元素均為零的上三角矩陣,則此圖是_______

A.有向完全圖B.連通圖C.強(qiáng)連通圖D.有向無環(huán)圖

15.

16.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

17.二維數(shù)組A按行順序存儲(chǔ),其中每個(gè)元素占1個(gè)存儲(chǔ)單元。若A[1][1]的存儲(chǔ)地址為420,A[3][3]的存儲(chǔ)地址為446,則A[5][5]的存儲(chǔ)地址為_______

A.470B.471C.472D.473

18.設(shè)有以下語句

charchl,ch2;scanf("%c%C",&chl,&ch2);

若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應(yīng)該是()。

A.A和B之間用逗號(hào)間隔

B.A和B之間不能有任何間隔符

C.A和B之間可以用回車間隔

D.A和B之間用空格間隔

19.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

20.

二、2.填空題(20題)21.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的【】。

22.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。請(qǐng)?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

[8]

if(s[*k]<s[i])*k=i;

return[9];}

main()

{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

pfintf("%d,%d\n"

23.在程序設(shè)計(jì)階段應(yīng)該采取______和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計(jì)語言寫成程序。

24.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

25.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

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

26.已知a=1,b=2,則表達(dá)式(a&B)&b||b的結(jié)果為()。

27.設(shè)有宏定義:

#defineWIDTH80

#defineLENGTHWIDTH+40

則執(zhí)行賦值語句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。

28.若對(duì)長(zhǎng)度為90的線性表進(jìn)行分塊查找,其中每塊子表長(zhǎng)度為9。如果在索引表查找過程中進(jìn)行順序查找,那么平均查找長(zhǎng)度為【】。

29.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個(gè)。

30.下列程序的運(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");

}

31.在軟件測(cè)試中,動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試手段只能發(fā)現(xiàn)程序中的錯(cuò)誤,而不能證明程序中不存在錯(cuò)誤,只有【】證明才有可能證明程序的正確性。

32.以下程序調(diào)用隨機(jī)函數(shù)得到N個(gè)20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個(gè))所在下標(biāo)傳回主函數(shù)進(jìn)行輸出,并把最大值作為函數(shù)值返回,請(qǐng)?zhí)羁铡?/p>

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

printf("m=%d\n",m);

printf(”Theindex;\n");

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

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

for(i=0,j=0;i<N;i++)

if(w[i]==v)【】;

*k=【】;

return【】;

}

33.下面程序有兩個(gè)printf語句,如果第一個(gè)printf語句輸出的是194,則第二個(gè)printf語句的輸出結(jié)果是【】。

main()

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

p=a;

printf("%x\n",p);

printf("%x\",p+9);

}

34.下面程序的功能是根據(jù)公式e=1+1/1!+1/2!+1/3!+1/4!+...計(jì)算e的近似值,精度要求為10-5。請(qǐng)?zhí)羁铡?/p>

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

35.下面程序的功能是將一個(gè)字符串str的內(nèi)容倒序,請(qǐng)?zhí)羁铡?/p>

#inelude<stdio.h>

#include<strins.h>

main()

{inti,j,【】;

charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

printf("%s\n",str);

}

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

37.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

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

38.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請(qǐng)?jiān)谔羁諜趦?nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

39.深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為______。

40.棧中允許進(jìn)行插入和刪除的一端叫做______。

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main()FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=l;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,'%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);執(zhí)行后輸出結(jié)果是

A.12B.1230C.123D.00

42.有下列程序:

main()

{intt,a=1,b=5,C=-2;

while(a>b>C)

{t=a;a=b;b=t;c++;}

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

}

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

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

43.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序運(yùn)行后的輸出結(jié)果是

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

44.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

45.在下列語句中,正確的是()

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};str1=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

46.以下語句或語句組中,能正確進(jìn)行字符串賦值的是______。A.char*sp;*sp="right!";

B.chars[10];s="right!";

C.chars[10];*s="right!";

D.char*sp="right!";

47.下列敘述中錯(cuò)誤的是()。

A.測(cè)試是程序執(zhí)行的過程,目的在于發(fā)現(xiàn)錯(cuò)誤

B.一個(gè)好的測(cè)試在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤

C.一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤

D.上述說法都不對(duì)

48.有以下程序:streetSTU{charnum[10];floatscore[3];};main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s,inti;floatsum=0;for(i=0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum);}程序運(yùn)行后的輸出結(jié)果是()。

A.260B.270C.280D.285

49.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}

A.0B.2C.1D.3

50.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運(yùn)行后的輸出結(jié)果是______。

A.22111B.21021C.122D.12

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

main(){intk=17;printf("%d,%o,%x\n",k,k,k):}

A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11

52.有以下程序:#include<stdio.h>main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序運(yùn)行后的輸出結(jié)果是()。

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

53.若變量已正確說明為float型,要通過scanf("%f%f%f",&a,&b,&c);給a賦值10.0,b賦值22.0,c賦值33.0,下列不正確的輸入形式是()。

A.10<回車>22<回車>33<回車>

B.10.0,22.0,33.0<回車>

C.10.0<回車>22.033.0<回車>

D.1022<回車>33<回車>

54.以下程序的輸出結(jié)果是______。main(){union{chari[2];intk;}r;r.i[0]=2;r.i[1]=0;printf("%d\n"r.k);}

A.2B.1C.0D.不確定

55.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&y

B.x<=y

C.x‖y+z&&y-z

D.!((x<y)&&!z‖1)

56.以下程序十函數(shù)scmp的功能是返回形參指針s1和s2所指字符串中較小字符串的首地址:#include<stdio.h>#include<string.h>char*scrap(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*庫函數(shù)strcpy對(duì)寧符中進(jìn)行復(fù)制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若運(yùn)行時(shí)依次輸入:abcd、4bba和abc三個(gè)寧符市,則輸出結(jié)果為

A.abcdB.abbaC.abcD.abca

57.若有以下定義:intt[3][2];,能正確表示t數(shù)組元素地址的表達(dá)式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

58.若程序中已包含頭文件stdio.h,以下選項(xiàng)能正確運(yùn)用指針變量的程序段是()。

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c;*c=&t;

D.long*L;L='\0';

59.下列哪個(gè)是面向?qū)ο蟪绦蛟O(shè)計(jì)不同于其他語言的主要特點(diǎn)?

A.繼承性B.消息傳遞C.多態(tài)性D.靜態(tài)聯(lián)編

60.設(shè)有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進(jìn)制值是

A.10100B.11011C.11100D.11000

四、選擇題(20題)61.

有以下程序

#include<stdi0.h>

main

{FILE*fp;inta[0]一{1,2,3,0,0},i;

fp=fopen("d2.dat,"wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a.sizeof(int),10,fp);

fclose(fp);

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

}

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

A.1,2,3,0,0,o,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

62.下列程序的運(yùn)行結(jié)果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

A.2,3,2B.2,3,1C.1,3,3D.3,1,2

63.有以下程序:

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

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

64.

65.某二叉樹有5個(gè)度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)是A.10B.8C.6D.4

66.

67.下面的程序段運(yùn)行后,輸出結(jié)果是()。

A.9B.0C.不確定值D.18

68.

69.設(shè)有定義:

inta=1,b=2,C=3;

以下語句中執(zhí)行效果與其他三個(gè)不同的是()。

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;}

70.已有定義intx=3,y=4,z=5;則表達(dá)式“!(x+y)+z-1y+z/2”的值是________。

A.6B.0C.2D.1

71.

72.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

73.

74.下列哪個(gè)不屬于DOM元素結(jié)點(diǎn)類型?

A.元素結(jié)點(diǎn)B.文本結(jié)點(diǎn)C.屬性結(jié)點(diǎn)D.樣式結(jié)點(diǎn)

75.

76.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

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

A.1B.2C.4D.死循環(huán)

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

A.在switch語句中,不-定使用break語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對(duì)使用

D.break語句只能用于switch語句

79.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

編譯時(shí)編譯器提示錯(cuò)誤信息,你認(rèn)為出錯(cuò)的語句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

80.有如下嵌套的語句

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串str中的大寫字母都改為對(duì)應(yīng)的小寫字母,其他字符不變。例如,若輸入“abD,dFAD”,則輸出“abd,dfad”。請(qǐng)修改函數(shù)proc()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:132333431424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:

參考答案

1.D邏輯或運(yùn)算中只要有一個(gè)運(yùn)算量為真,結(jié)果就為真。當(dāng)“c>=2&&c<=6”條件不成立時(shí),c的值肯定不是2、3、4、5、6,“c!=3”與“c!=5”均成立,所以D選項(xiàng)的結(jié)果一定為真。故本題答案為D選項(xiàng)。

2.A

3.D

4.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)。“類型說明符”表示返回的指針值指向的數(shù)據(jù)類型。

5.A函數(shù)名代表函數(shù)的入口地址,函數(shù)指針P指向一個(gè)同類型的函數(shù)f時(shí),可以寫成“p=f;”,而不能寫成“P=&f;”,選項(xiàng)B錯(cuò)誤。指針p指向一個(gè)數(shù)組f時(shí),可以寫成“p=f;”,數(shù)組名f代表數(shù)組的首地址,選項(xiàng)C錯(cuò)誤。指針變量指向的是變量的地址,選項(xiàng)D錯(cuò)誤。char型根據(jù)轉(zhuǎn)化原則可以轉(zhuǎn)化為double類型。故本題答案為A選項(xiàng)。

6.A

7.D第—個(gè)if語句a!=1條件為假,所以執(zhí)行dse后的語句r=1。第二個(gè)if語句b==2條件成立,執(zhí)行r+=2,r的值變?yōu)?,第三個(gè)if語句c!=3條件為假,所以不做任何操作。執(zhí)行下面的r+=3操作,r的值變?yōu)?。判斷第四個(gè)訌條件,d==4條件成立,執(zhí)行r+=4操作,結(jié)果為10。

8.B

9.C

10.D

11.D本題考查如何引用數(shù)組元素的地址。選項(xiàng)A)中,p5引用的是af51的地址,而數(shù)組a只有5個(gè)元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯(cuò)誤;選項(xiàng)B)中,*a1指的是將數(shù)組a的第一個(gè)元素加1;選項(xiàng)C)中,這種引用方式錯(cuò)誤;選項(xiàng)D)中,&a[0]引用的是數(shù)組的首地址。

12.D

13.C根據(jù)二叉樹的性質(zhì)及定義,一棵深度為k且有2k-1個(gè)結(jié)點(diǎn)的二叉樹為滿二叉樹。滿二叉樹的葉子結(jié)點(diǎn)為最后一層的結(jié)點(diǎn)數(shù),又根據(jù)滿二叉樹的性質(zhì),在滿二叉樹的第i層上至多有2i-1個(gè)結(jié)點(diǎn)。因此深度為5的滿二叉樹的葉子結(jié)點(diǎn)數(shù)為25-1=16個(gè)。

14.D

15.C

16.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點(diǎn),然后按左右順序遍歷子結(jié)點(diǎn);②中序首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點(diǎn)。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對(duì)其進(jìn)行前序遍歷,正確答案選項(xiàng)為D。

17.C

18.B\nscanf輸入函數(shù)中,格式控制J必須嚴(yán)格按照函數(shù)中的要求進(jìn)行輸入,在scanf('%c%c',&chl,&ch2)的格式控制語句中沒有任何字符進(jìn)行間隔,所以在輸入時(shí)也不能使用任何字符進(jìn)行間隔,所以答案選擇B。

\n

19.C冒泡排序的基本思想是:將相鄰的兩個(gè)元素進(jìn)行比較,如果反序,則交換;對(duì)于一個(gè)待排序的序列,經(jīng)一趟排序后,最大值的元素移動(dòng)到最后的位置,其他值較大的元素也向最終位置移動(dòng),此過程稱為一趟冒泡。對(duì)于有n個(gè)數(shù)據(jù)的序列,共需n-1趟排序,第i趟對(duì)從l到n-i個(gè)數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項(xiàng)C。

20.A

21.實(shí)例將屬性、操作相似的對(duì)象歸為類,也就是說,類是具有共同屬性、共同方法的對(duì)象的集合。所以,類是對(duì)象的抽象,對(duì)象則是其對(duì)應(yīng)類的一個(gè)實(shí)例。

22.本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開始應(yīng)使*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

23.自頂向下自頂向下解析:在程序設(shè)計(jì)時(shí),應(yīng)先考慮總體,后考慮細(xì)節(jié),逐步使問題具體化,對(duì)復(fù)雜的問題,應(yīng)該設(shè)計(jì)一些子目標(biāo)作為過渡,上述方法概括為:自頂向下,逐步細(xì)化。

24.概念概念

25.QTHRGQTHRG解析:函數(shù)strcmp(t,s)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。函數(shù)strcpy(t,s)的功能是,把字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指存儲(chǔ)空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán),s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指存儲(chǔ)空間中,然后輸出字符數(shù)組t。

26.1

27.880

28.10.5

29.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個(gè)結(jié)點(diǎn)。第6層的結(jié)點(diǎn)數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點(diǎn)最多數(shù)”和“某一層的結(jié)點(diǎn)最多數(shù)”。前者的計(jì)算是深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn)。

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

31.程序正確性程序正確性

32.sd&km=id[j++]=ijv

33.1a61a6解析:對(duì)于指針變量的運(yùn)算,就是對(duì)地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動(dòng)9個(gè)位置也就是移動(dòng)18個(gè)字節(jié)。注意,本題是以十六進(jìn)制輸出的。

34.t>=le-5;t=t/n;

35.k-1k-1解析:第一處應(yīng)該是定義的某個(gè)變量,讀程序可知,變量k沒有定義,所以此處應(yīng)填入k。字符串的倒序,就是將首尾對(duì)應(yīng)的字符(數(shù)組元素)兩兩交換??捎脙蓚€(gè)游標(biāo)變量i和j分別代表前端元素的下標(biāo)和后端元素的下標(biāo),交換以這兩個(gè)變量值為下標(biāo)的元素str[i]和str[j]。開始時(shí),i的值為0,j的值為字符串末元素的下標(biāo)(字符串長(zhǎng)度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下標(biāo)是它的長(zhǎng)度減1,所以在第二處應(yīng)填入-1。

36.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

37.-4-4解析:if…else構(gòu)造了一種二路分支選擇,是一種最基本的選擇結(jié)構(gòu),if(條件)S1(if分結(jié)構(gòu))elseS2(else分結(jié)構(gòu)),它的工作過程是:先對(duì)條件表達(dá)式進(jìn)行判斷,若為真(成立,值為非零),就執(zhí)行if分結(jié)構(gòu)(S1);否則(不成立,值為0),就執(zhí)行else分結(jié)構(gòu)(S2)。本題中,n=0,可以判斷(!n)為真,執(zhí)行x=x-1=2-1=1;m=1,可以判斷(m)為真,執(zhí)行x=x-2=1-2=-1進(jìn)而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。

38.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個(gè)函數(shù)無返回值(同fun()函數(shù))。

39.1616解析:滿二叉樹的葉子結(jié)點(diǎn)都在最后一層,即第4層,且第4層的結(jié)點(diǎn)達(dá)到最大數(shù),即25-1=16。

40.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

41.B解析:函數(shù)fopen(coostchar*filename,constchar*mode)的功能,是以mode指定的模式打開filename指定的磁盤文件;fclose(FILE*fp)的功能是關(guān)閉文件指針印指向的文件;函數(shù)fscanf(FILE*fp,constchar*format[,address,--])的功能是根據(jù)format中的格式從fp指向的文件中讀取數(shù)據(jù),并存入到相應(yīng)的address指向的變量中。函數(shù)fprintf(FILE*fp,constchar*format[,argument,--])的功能是把a(bǔ)rgument列表中的表達(dá)式值寫到fP所指向的文件中;本題中首先定義了一個(gè)文件指針fp,然后通過函數(shù)fopen以“w”的方式打開文件“d1.dat”,直接通過一個(gè)for循環(huán),每循環(huán)一次調(diào)用函數(shù)fprintf將i的值寫進(jìn)fp所指的文件中,該循環(huán)共循環(huán)3次,循環(huán)完后fp所指文件的內(nèi)容為123,然后通過fclose函數(shù)關(guān)閉fp所指文件。接著通過fscanf函數(shù)將fp所指文件的內(nèi)容讀出并賦值給變量k和變量n,由于fp所指文件中只有123沒有分隔符,故只給k賦值為123,變量n的值依然為以前的值,故最后輸出k和n的值為123,所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

42.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。

43.C解析:本題考查“邏輯或”運(yùn)算的特例。本題中執(zhí)行語句k=(n=b>a)||(m=a<b)時(shí),首先計(jì)算表達(dá)式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表達(dá)式(n=b>a)||(m=a<b)的值為真,不再執(zhí)行表達(dá)式m=a<b,故執(zhí)行完表達(dá)式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

44.B解析:主函數(shù)中先定義了一個(gè)整型變量a,一個(gè)字符變量c并賦初值10,一個(gè)浮點(diǎn)型變量f并賦初值100.00和一個(gè)double型x,接著執(zhí)行a=f/=c*=(x=6.5),該語句從右向左計(jì)算,先把6.5賦值給x(該括號(hào)表達(dá)式的值也為6.5),此時(shí)x的值變?yōu)?.5,然后執(zhí)行c*=(x=6.5)相當(dāng)于執(zhí)行c=c*(x=6.5),此時(shí)c的值為65,接著向左執(zhí)行f/c*=(x=6.5),語句相當(dāng)于執(zhí)行f=f/c,所以f的值為100/65≈1.538。接著向最右邊執(zhí)行“a=f”,由于a是整型變量,所以a最后去f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值(f和x只保留小數(shù)點(diǎn)后面1位)分別為1、65、1.5、6.5。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

45.A

46.D解析:本題考查了考生對(duì)字符串常量的理解。字符串常量是一段以雙引號(hào)括起來的字符序列,它既可以出現(xiàn)在對(duì)字符數(shù)組的初始化中,也可以出現(xiàn)在表達(dá)式中。當(dāng)它用于對(duì)字符數(shù)組的初始化時(shí),應(yīng)注意系統(tǒng)自動(dòng)為其添加的結(jié)束標(biāo)志'\\0'。而當(dāng)它出現(xiàn)在表達(dá)式中時(shí),應(yīng)該將其看作一個(gè)constchar*類型的指針常量。在選項(xiàng)A中,首先定義了一個(gè)字符指針sp,然后將一個(gè)字符串賦給甲所指的地址,這是錯(cuò)誤的。因?yàn)閟p是一個(gè)未經(jīng)初始化的野指針,不知其指向哪兒,往一個(gè)不確定的地址中寫數(shù)據(jù)很容易讓程序出錯(cuò)。選項(xiàng)B首先定義了一個(gè)字符數(shù)組,然后將一個(gè)字符串賦給數(shù)組名,這是錯(cuò)誤的。因?yàn)閿?shù)組名是一個(gè)指針常量,不可以被改變。選項(xiàng)C首先定義了一個(gè)字符數(shù)組,然后將一個(gè)字符串賦給數(shù)組的第一個(gè)元素,這也是錯(cuò)誤的。因?yàn)樽址诒磉_(dá)式中相當(dāng)于一個(gè)常字符指針,將一個(gè)指針值賦給一個(gè)字符型變量是行不通的。選項(xiàng)D是定義一個(gè)字符指針sp,同時(shí)使其指向一個(gè)字符串常量,即將一個(gè)常字符型指針賦給sp。這是可行的。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

47.D解析:選項(xiàng)A、B、C中的說法都正確。測(cè)試的目的是設(shè)法暴露程序中的錯(cuò)誤和缺陷,它是程序執(zhí)行的過程,目的在于發(fā)現(xiàn)錯(cuò)誤;好的測(cè)試在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤。

48.B解析:程序中首先定義了一個(gè)結(jié)構(gòu)體,其成員為一字符數(shù)組和一浮點(diǎn)型數(shù)組。在main()首先定義了一個(gè)結(jié)構(gòu)體數(shù)組并初始化。接下來在for循環(huán)中遍歷了結(jié)構(gòu)體數(shù)組中的第一個(gè)元素中數(shù)組成員即{“20021”,90,95,85”}循環(huán)結(jié)果為90+95+85=270最后sum為270,又輸出格式為“%6.2f\\n”要求保留兩位小數(shù)故最后輸出為270.00。所以4個(gè)選項(xiàng)中B正確。

49.C解析:本題考查if語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a<b不成立,不再執(zhí)行下列的語句,直接執(zhí)行最后的printf輸出語句,然后結(jié)束程序,整個(gè)過程c的值沒有發(fā)生變化。

50.C解析:程序中for循環(huán)了三次,第一次i=0,執(zhí)行switch語句中case0:分支,直到遇到default語句,退出switch,這里共執(zhí)行了三個(gè)輸出語句分別輸出0,0,0,第二次循環(huán)i=1,switch語句中沒有匹配的分支,故只執(zhí)行default語句輸出1,退出switch語句;第三次循環(huán)i=2,從switch語句中的case2:開始執(zhí)行,共執(zhí)行了兩個(gè)輸出語句輸出2、2。最后輸出的結(jié)果為000122。

51.D

52.C解析:本題考查邏輯或運(yùn)算。因?yàn)閎>a為真,即n=1,則m不需再計(jì)算,保持原值,因此k值為1,m值仍為0。

53.B解析:在scanf('%f%f%f,&a,&b,&c);中,格式描述為'%f%f%f,當(dāng)輸入數(shù)據(jù)時(shí),數(shù)據(jù)之間可用空格、制表符和回車符作為間隔符,而逗號(hào)不是合法的間隔符。

54.A解析:根據(jù)共用體的定義可知:共用體r的成員k和成員i[2]是共用同—段內(nèi)存空間,所以,當(dāng)程序給r.i[0]賦值后,實(shí)際上,共用體成員k的值也確定了,為2。所以打印輸出的結(jié)果應(yīng)當(dāng)為2。

55.D解析:本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對(duì)象都是邏輯1時(shí),表達(dá)式才返回值是1;當(dāng)“‖”的兩個(gè)運(yùn)算對(duì)象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值是1。選項(xiàng)A)中,x和y都是邏輯1。所以返回值是1:選項(xiàng)B)中,x=4<=y=6為邏輯1,所以返回值是1;選項(xiàng)C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達(dá)式4‖14&&-2的值不為0;選項(xiàng)D)中,x<y為1,!z為0,1&&0為1,0‖1為1,因此,!1為0。

56.A解析:字符串比較大小的標(biāo)準(zhǔn)是從第一個(gè)字符開始依次向右比較,遇到某一個(gè)字符ASCII碼值較大時(shí),該字符所在的字符串就是較大的字符串。主函數(shù)中調(diào)用了函數(shù)scmp(),分析不難知道該函數(shù)的作用是返回參加比較的兩個(gè)字符串中的較小的字符串,它的主函數(shù)中定義了一個(gè)二維字符數(shù)組來存放三個(gè)字符串.接著通過for循環(huán)給每個(gè)字符串賦值,賦值后三個(gè)字符串分別為“abcd”、“abba”、“abc”,接著比較str[0]和str[1]的大小,根據(jù)字符串大小比較標(biāo)準(zhǔn)可知str[0]較小,然后通過函數(shù)strcpy()把str[0]中的字符串,拷貝到string中,然后比較string和str[2]的大小,比較結(jié)果是string較小,最后輸出string的值為“abcd”,所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

57.C解析:選項(xiàng)A和B兩個(gè)表達(dá)式都越界了;選項(xiàng)D中,*t[2]是目標(biāo)變量,即—個(gè)整型值,而不是地址值。

58.D解析:本題考查指針變量的運(yùn)用。選項(xiàng)A)、B)的指針定義錯(cuò)誤,空指針NULL是對(duì)指針變量賦。值而得到的。例如:

#defineNULL0

int*p=NULL;

對(duì)指針變量賦。值和不賦值的時(shí)候意義是不同的:指針變量未賦值時(shí),它是指向任意不確定的存儲(chǔ)單元,不能使用,否則將造成意外錯(cuò)誤;而指針變量賦0值后,則可以使用,只是它不指向具體的變量而已。選項(xiàng)C)中的*c=&t;錯(cuò)誤,因?yàn)?t是地址,而*c是值。選項(xiàng)D)是讓指針L指向字符串的末尾,即字符串的結(jié)束符。

59.A解析:繼承是一個(gè)子類直接使用父類的所有屬性和方法。它可以減少相似的類的重復(fù)說明,從而體現(xiàn)出一般性與特殊性的

溫馨提示

  • 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)論