2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)_第1頁
2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)_第2頁
2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)_第3頁
2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)_第4頁
2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年陜西省寶雞市全國計算機(jī)等級考試C語言程序設(shè)計真題二卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.一個有7個頂點(diǎn)的完全三部圖,至少有存在幾條邊()

A.10B.11C.15D.16

2.有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",'f',95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的運(yùn)行結(jié)果是()。A.A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

3.在一個C源程序文件中所定義的全局變量,其作用域?yàn)?)。A.由具體定義位置和extern說明來訣定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍

4.

5.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

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

B.char

C._g_

D.Double

7.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序運(yùn)行后的輸出結(jié)果是()。

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

8.

9.定義根節(jié)點(diǎn)深度為1,有n個元素的完全二叉樹的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

10.有下列程序:

intfun(intn)

{if(n==1))returnl;

else

return(n+fun(n-1)):

}

main()

{intx;

seanf("%d",&x);x=fun(x);printf("%d\n",x);

}

執(zhí)行程序時,給變量x輸入l0,程序的輸出結(jié)果是()。

A.55

B.54

C.65

D.45

11.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)

12.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()。

A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計

13.if語句基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

14.下列程序的輸出的結(jié)果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

15.以下說法錯誤的是A.A.高級語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式

B.計算機(jī)只能處理由0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)

C.C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.EXE的二進(jìn)制文件

D.每一種高級語言都有它對應(yīng)的編譯程序

16.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.研究算法中的輸入和輸出的關(guān)系C.分析算法的效率以求改進(jìn)D.分析算法的易懂性和文檔性

17.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

18.若變量已正確定義,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。

A.a<>b+cB.ch=getchar()C.a==b+cD.a++

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

A.對長度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為n

B.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為n/2

C.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為log2n

D.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為nlog2n

20.設(shè)有如下定義structss{charname[10];intage;charsex;}std[3],*p=std;下列各輸入語句中錯誤的是_______。

A.scanf("%d",&(*p).age);

B.scanf("%s",&);

C.scanf("%c",&std[0].sex);

D.scanf("%c",&(p->sex));

二、2.填空題(20題)21.下列執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0

for(i=0;i<10;i++)atr[i]=i

for(i=1,i<4;i++)k+=arr[i]+i;

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

}

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

#include<stdio,h>

main()

charc1,c2;

for(el='0',c2='9';e1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

23.下列程序的運(yùn)行結(jié)果為【】。

main()

{inta[3]C4}={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("maxvalueis%d\n",maxvalue(3,4,a));

}

maxvalue(m,n,array)

intm,n,array[][4];

{inti,j,max;

max=array[0][0];

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

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

if(max<array[i][j])max=array[i][j];

return(max);

}

24.一個項(xiàng)目具有一個項(xiàng)目主管,一個項(xiàng)目主管可管理多個項(xiàng)目,則實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于______的聯(lián)系。

25.有以下定義和語句,則sizeof(a.share)的值是()。

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

26.軟件生命周期包括8個階段。為使各時期的任務(wù)更明確,又可以分為以下3個時期:軟件定義期、軟件開發(fā)期、軟件維護(hù)期。編碼和測試屬于【】期。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

28.實(shí)現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

29.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊(duì)列屬于______結(jié)構(gòu)。

30.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

31.設(shè)a、b、c為整形數(shù),且a=2,b=3,c=4則執(zhí)行完以下語句后,a的值是【】。

a*=16+(b++)-(++c);

32.以下程序輸出矩陣中值為。的元素的行下標(biāo)和列下標(biāo)。行下標(biāo)和列下標(biāo)分別放在同一下標(biāo)的r和c數(shù)組元素中。程序通過調(diào)用隨機(jī)函數(shù)給矩陣賦值。

#defineN5

#include<stdlib.h>

main()

{inta[N][N],i,j,c[N*N],r[N*N],n;

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

for(j=0;j<N;j++)a[i][j]=rand()%5;

n=gindex(【】);

printf("\n\nTheresult:\nn=%d\n",n);

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

}

intgindex(int(*p)[N],int*c,int*r)

{inti,j,k;

【】;

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

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

if(【】==0)

{r[k]=i;c[k]=j;【】;}

return【】;

}

33.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

34.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

35.當(dāng)執(zhí)行以下程序時,輸入1234567890<回車>,則其中while循環(huán)體將執(zhí)行()次。

#include<stdio.h>

main()

{charch;

while((ch=getchar())=='0')printf("#");

}

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

#include<stdio.h>

fun(intx)

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

printf("%d",x);

}

main()

{fun(6);}

37.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

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

doublesub(doublex,doubley,doublez)

{y-=1.0;

z=z+x;

returnz;

}

main()

{doublea=2.5,b=9.0;

printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));

}

39.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。

st=(char*)【】;

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

#defineMAL(a,b)(a>b?a:b)+1

main()

{inti=6,j=8;

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

}

三、1.選擇題(20題)41.下列程序的運(yùn)行結(jié)果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

42.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是

A.PER是結(jié)構(gòu)體變量名

B.PER是結(jié)構(gòu)體類型名

C.typedefstruct是結(jié)構(gòu)體類型

D.struct是結(jié)構(gòu)體類型名

43.下列說法正確的是()。

A.在C語言中,可以使用動態(tài)內(nèi)存分配技術(shù),定義元素個數(shù)可變的數(shù)組

B.在C語言中,數(shù)組元素的個數(shù)可以不確定,允許隨機(jī)變動

C.在C語言中,數(shù)組元素的數(shù)據(jù)類型可以不一致

D.在C語言中,定義了一個數(shù)組后,就確定了它所容納的元素的個數(shù)

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

main

{

doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

printf("%d\n",d*y);

}

A.3B.3.2C.0D.3.07

45.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

46.對于長度為n的線性表,在最壞的情況下,下列各排序法所對應(yīng)的比較次數(shù)中三確的是

A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2

47.指針變量p的基類型為int,并已指向一連續(xù)存儲區(qū),若p中當(dāng)前的地址值為1234,則執(zhí)行p++后,p中的值為()

A.1234B.1235C.1236D.1237

48.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

49.軟件是指()。A.程序B.程序和文檔C.算法加數(shù)據(jù)結(jié)構(gòu)D.程序、數(shù)據(jù)與相關(guān)文檔的完整集合

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

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

51.設(shè)有定義:Structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯誤的是()。

A.data2={data1.rea1,data1.unrea1};

B.data2=(2,6);

C.data2.rea1=data1->rea1;

D.data2->rea1=data1.unrea1;

52.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。

A.10B.11C.12D.語法錯誤

53.以下程序的輸出結(jié)果是______。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf("%d",a);}

A.0B.29C.31D.無定值

54.若函數(shù)調(diào)用時的實(shí)參為變量時,以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。

A.函數(shù)的實(shí)參和其對應(yīng)的形參共占同一存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實(shí)參和形參占同一存儲單元

D.函數(shù)的形參和實(shí)參分別占用不同的存儲單元

55.有以下程序:

#inClude<stdlib.h>

structNODE{

intnum;

structNODE*next;

};

main()

{StructN00E*p,*q,*r;

intsum;0;

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

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(Sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;sum+=p->num;

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

}

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

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

56.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結(jié)果為______。

A.10B.5C.6D.編譯錯誤

57.若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

58.以下變量x,y,z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子x÷y÷z的C語言表達(dá)式是

A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z

59.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗(yàn)證軟件的正確性

60.有以下程序,程序運(yùn)行后的輸出結(jié)果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+==b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}

A.22B.11C.18D.16

四、選擇題(20題)61.下列敘述中正確的是()。

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對

62.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

63.在單鏈表中,增加頭結(jié)點(diǎn)的目的是()。A.A.方便運(yùn)算的實(shí)現(xiàn)B.使單鏈表至少有一個結(jié)點(diǎn)

C.標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置

D.說明單鏈表是線性的鏈?zhǔn)酱鎯?shí)現(xiàn)

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

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

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

C.在循環(huán)隊(duì)列中,隊(duì)頭指針一定大于隊(duì)尾指針

D.在循環(huán)隊(duì)列中,隊(duì)頭指針一定小于隊(duì)尾指針

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

66.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

67.

68.

69.若有以下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為6的表達(dá)式是_______。

A.*p+6B.*(p+6)C.*p+=5D.p+5

70.設(shè)a=l,b=2,c=3,d=4,則表達(dá)式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.A.4B.3C.2D.1

71.

72.有以下程序:

#include<stdio.h>

voidmain()

{fILE*fp;inti,a[4]={1,2,3,4},b;

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

for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);

fclose(fp)

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

fseek(fp,-2L*sizeof(int),1,fp);/*文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/

fclose(fp);

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

}

程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是()。

A.使位置指針從文件末尾向前移2*sizeof(int)字節(jié)

B.使位置指針從文件末尾向前移2字節(jié)

C.使位置指針向文件末尾向前移懂2*sizeof(int)字節(jié)

D.使位置指針向文件末尾移動2字節(jié)

73.(30)關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括()

A.排序、索引、統(tǒng)計

B.選擇、投影、連接

C.關(guān)聯(lián)、更新、排序

D.顯示、打印、制表

74.設(shè)有如下函數(shù)定義:

若執(zhí)行調(diào)用語句“l(fā)l=fm(3);”,則函數(shù)tim總共被調(diào)用的次數(shù)是()。

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

75.有以下程序

76.

77.有如下說明

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

則數(shù)值為5的表達(dá)式是

A.*p+4B.*(p+4)C.*p+=4D.p+4

78.

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

main

{intx=f;printf("%c\n",A+(x-a+1));}

A.GB.HC.ID.J

79.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是()。

A.55B.54C.65D.45

80.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是()。

A.順序結(jié)構(gòu)B.分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.重復(fù)結(jié)構(gòu)

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fIm和funx的功能是:用二分法求方程的一個根,并要求絕對誤差不超過0.001。

.例如,若給m輸入一100,n輸入90,則函數(shù)求得的二個根為2.000。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。

例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。

請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

注意:m的值要大于2但不大于100。部分源程序給出如下。

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intm)

{}

voidmain

{

intm;

doubles;

FILE*out:

printf("\n\nInputm:");

scanf("%d",&m);

s=fun(m);

printf("\n\ns=%f\n\n",s);

ut=fopen("outfile.dat","w");

for(m=0;m<10;m++)

fprintf(out,"%f\n",fun(m+80));

felose(out);

}

參考答案

1.B

2.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進(jìn)行賦值后,然后返回變量a。

3.A[解析]全局變量的作用域是從聲明處到文件的結(jié)束。所以選擇A)

4.D

5.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求先序遍歷遍歷順序應(yīng)該為:訪問根結(jié)點(diǎn)->先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF。

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

7.AC語言中的轉(zhuǎn)義字符也是一個字符。字符串“0\\t\\n\\0C011\\1”,共有字符‘0’、‘\\t’、‘\\n’3個字符。strlen遇到‘\\0’字符計數(shù)結(jié)束,因此計數(shù)為3。故本題答案為A選項(xiàng)。

8.C

9.B

10.A\n本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時,當(dāng)輸入10賦給變量X時,遞歸調(diào)用的過程為

\nfun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)

\n=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)

\n=10+9++8+7+6+5+fun(4)

\n=10+9++8+7+6+5+4+fun(3)

\n=10+9++8+7+6+5+4+3+fun(2)

\n=10+9++8+7+6+5+4+3+2+fun(1)

\n=10+9++8+7+6+5+4+3+2=55

\n

11.D解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。

選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤。因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。

選項(xiàng)C錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。

所以,本題的正確答案為D。

12.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機(jī)系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進(jìn)行設(shè)計,從而實(shí)現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實(shí)體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。

13.D考查if循環(huán)語句。if(表達(dá)式),其中表達(dá)式是一個條件,條件中可以是任意的合法的數(shù)值。

14.C根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量l.2轉(zhuǎn)換為int型,因?yàn)閤的類型是int,則X的值為1;執(zhí)行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉(zhuǎn)換為double型1.0,然后3.8相加得4.8,進(jìn)行除法運(yùn)算4.8/5.0結(jié)果為0.即變量y的值為0,d*Y的值也為0,故選C選項(xiàng)。

15.C本題主要考查我們對C語言一些基礎(chǔ)知識的掌握情況。下面分別分析本題的四個選項(xiàng)。

由于高級程序設(shè)計語言具有可讀寫、可理解性好等特點(diǎn),這就要求高級程序設(shè)計語言用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式,選項(xiàng)A的說法正確。

在計算機(jī)中,機(jī)器可以接受和處理的只能是由0和1組成的二進(jìn)制代碼,用高級語言編寫的程序都需要經(jīng)過編譯和連接,使其轉(zhuǎn)化為二進(jìn)制代碼才能被機(jī)器執(zhí)行。因此,選項(xiàng)B的說法正確。

C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。因此,選項(xiàng)C的說法不正確。

由于高級語言編寫的程序都需要經(jīng)過編譯和連接,才能被計算機(jī)執(zhí)行,因此,每一種高級語言都有它對應(yīng)的編譯程序,D選項(xiàng)的說法正確。

16.C

17.A程序定義整型變量a和i,其中a的初值為7。for循環(huán)中,循環(huán)變量i的取值為1,2,3。循環(huán)體中判斷a的取值,當(dāng)a>14時,執(zhí)行break跳出循環(huán);當(dāng)a取值為奇數(shù)時,a%2==1,a自增3,執(zhí)行continue繼續(xù)執(zhí)行循環(huán)體;當(dāng)a取值為偶數(shù)時,a%2==0,a自增4,輸出i和a的值。i取值為1時,a取值為7,自增3后a的值為10,執(zhí)行下一個循環(huán)。i取值為2時,a取值為10,自增4后a的值為14,輸出2,14。i取值為3時,a取值為14,自增4后a的值為18,輸出3,18。i取值為4時,a取值為18,循環(huán)終止,輸出4,18。綜上,程序輸出:2,14,3,18,4,18。本題答案為A選項(xiàng)。

18.A選項(xiàng)A是非法的表達(dá)式,C語言中沒有“<>”運(yùn)算符。故本題答案為A選項(xiàng)。

19.C\n\tC。【解析】二分法查找只適用于順序存儲的有序表,對于長度為n的有序線性表,最壞情況只需比較log2n次。

20.B解析:在C語言中,結(jié)構(gòu)體變量的引用有三種等價方式:

1、結(jié)構(gòu)體變量成員名;2、(*p).成員名;3、p->成員名。

因?yàn)閟td.name是字符數(shù)組名,本身代表地址,其前面不應(yīng)該使用“&”符號,所以選項(xiàng)B錯誤。

21.1212解析:本題的第—個for循環(huán)用于始數(shù)組arr賦初值,第二個for循環(huán)用于求和運(yùn)算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

22.918273645918273645解析:程序通過for循環(huán)將字符'0'~'9'從前向后,同時從后向前依次輸出,所以輸出結(jié)果為:0918273645。

23.maxvalueis34

24.1對多(或1:N)1對多(或1:N)

25.4

26.軟件開發(fā)。軟件開發(fā)。解析:通常,軟件生命周期包括8個階段:問題定義、可行性研究、需求分析、系統(tǒng)設(shè)計、詳細(xì)設(shè)計、編碼、測試、運(yùn)行維護(hù)。還分為3個時期,軟件定義期:包括問題定義、可行性研究和需求分析3個階段;軟件開發(fā)期:包括系統(tǒng)設(shè)計、詳細(xì)設(shè)計、編碼和測試4個階段;軟件維護(hù)期:即運(yùn)行維護(hù)階段。

27.66解析:條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

28.3!feof(f1)3\r\n!feof(f1)解析:要實(shí)現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。

29.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊(duì)列,就是將隊(duì)列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊(duì)列循環(huán)使用??芍h(huán)隊(duì)列應(yīng)當(dāng)是物理結(jié)構(gòu)。

30.babcdbabcd解析:c語言中\(zhòng)\0表示字符串的結(jié)束。程序?qū)指針指向字符串“AbabCDcd”的首地址,循環(huán)開始后,若指針當(dāng)前不是指向字符串結(jié)束標(biāo)志位,則進(jìn)入循環(huán)體。循環(huán)中每次檢驗(yàn)字符串中字母是否在a與z之間,若滿足則將當(dāng)前值賦于數(shù)組a,最后給數(shù)組添加字符結(jié)束標(biāo)志。此程序可以篩選出字符串中的小寫字母。

31.28

32.acrk=0p[i][j]k++k

33.本程序的功能是求a的b次方本程序的功能是求a的b次方

34.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個。

35.00解析:“ch=getchat()”的功能是從終端讀入一個字符賦給變量ch,由于getchar()只能接收一個字符,所以輸入的字符1被賦給ch,即“'1'!='0'”,循環(huán)體不執(zhí)行,直接退出while循環(huán),所以循環(huán)體執(zhí)行的次數(shù)為0。

36.136136解析:程序中定義了一個遞歸調(diào)用函數(shù)fun。程序運(yùn)行時,先把實(shí)參6傳給形參。if語句中6/2>0成立,執(zhí)行fun(x/2),即fun(3),同時輸出x的值6;再判斷if條件,3/2>0成立,再執(zhí)行fun(x/2),即fun(1),同時輸出x的值3;此時1/2>0不再成立,輸出1。而遞歸調(diào)用的輸出順序是相反的,故輸出結(jié)果為136。

37.調(diào)試調(diào)試

38.functionrunningresultis:9.0

39.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:該題主要考查malloc函數(shù)的使用。一個字符在內(nèi)存中占一個字節(jié),因此malloc的參數(shù)為11。也可按指向字符指針的大小來分配。

40.99解析:用i和j替換宏MAL(a,b)小的參數(shù)a和b,(a>b?a:b)+1等價于(i>j?i:j)+1。因?yàn)?>8為假,則關(guān)系表達(dá)式i>j?i:j的值就是j的值,j=8,8+1=9,最后輸出9。

41.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算:(x)>(y)?(x):(y)是x>y時輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

42.B解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結(jié)構(gòu)體類型,此時,也可以用PER來定義變量。

43.D解析:本題考查數(shù)組的兩個知識點(diǎn):①在C語言中,數(shù)組元素的個數(shù)是確定的,不允許隨機(jī)變動,數(shù)組定義好之后,它所能容納的元素的個數(shù)也就確定了;②同一個數(shù)組中所有元素的類型是一樣的。

44.C解析:本題中,程序先執(zhí)行語句x=1.2;,根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量1.2轉(zhuǎn)換為int型,即取整為1,然后將1賦值給變量x。接下來執(zhí)行語句y=(x+3.8)/5.0;根據(jù)運(yùn)算符的優(yōu)先級,先計算小括號內(nèi),再計算除法,最后執(zhí)行賦值運(yùn)算。小括號內(nèi)的運(yùn)算過程:先將整型變量x的值1轉(zhuǎn)換為double型1.0,然后與3.8進(jìn)行加法運(yùn)算,得到中間結(jié)果4.8。接著進(jìn)行除法運(yùn)算4.8/5.0,其結(jié)果小于1.0,這里沒有必要計算出精確值,因?yàn)榻又M(jìn)行賦值運(yùn)算,賦值號左邊的變量y的類型為整型,于是對這個小于1.0的中間結(jié)果進(jìn)行取整,結(jié)果為0,于是變量y的值為0,d*y的值也為0。注意:格式輸出語句printf的使用。

45.B解析:C語言中字符串是以'0'字符結(jié)束的,且strlen()函數(shù)計算的是'0'字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有投有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。

46.D解析:冒泡排序法在最壞的情況下需要比較的次數(shù)為n(n-1)/2,快速排序法在最壞的情況下需要比較的次數(shù)也為n(n-1)/2。

47.C

48.D

49.D軟件是計算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計語言描述的、適合計算機(jī)執(zhí)行的指令(語句)序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料。因此本題的正確答案是D。

50.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實(shí)施對數(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ù)庫的完整性和安全性。

51.B

52.D解析:C語言中有基本的算術(shù)運(yùn)算符(+、-、*、/)還包括自增自減運(yùn)算符(++、-),在C語言解析表達(dá)式時,它總是進(jìn)行貪婪咀嚼,這佯,該表達(dá)式就被解析為i+++++i,顯然該表達(dá)式不合C語言語法。

53.C解析:函數(shù)fun的形參是簡單變量,main函數(shù)中調(diào)用fun時只是把實(shí)參的值傳遞給形參,形參的改變不影響實(shí)參,所以調(diào)用完函數(shù)fun后a的值不發(fā)生變化,即a=31。

54.D解析:在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡稱形參),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧中的參數(shù)(可以是一個表達(dá)式)稱為“實(shí)際參數(shù)”(簡稱實(shí)參)。C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。故本題應(yīng)該選擇D。

55.B解析:本題中定義了一個結(jié)點(diǎn)structNODE,在主函數(shù)中定義了三個結(jié)點(diǎn)變量指針p、q和r,接著通過malloc函數(shù)分配了三個結(jié)點(diǎn)并讓p、q和r分別指向他們,再接著給p、q和r所指向的結(jié)點(diǎn)的hum域賦值為1、2、3,然后讓結(jié)點(diǎn)p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結(jié)點(diǎn)的num域的值為3,p->num的值為指針p所指向結(jié)點(diǎn)的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項(xiàng)中選項(xiàng)B符合題意。

56.B解析:在C語言中,宏定義是直接替換的,所以在c+a>b?a:b這個條件表達(dá)式中,c+a>b為真,所以用a的值作為整個表達(dá)式的值,而a的值為5,所以整個表達(dá)式的值為5。

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

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

58.A解析:本題中,“()”的優(yōu)先級是最高的,“*”和“/”的優(yōu)先級別相同,運(yùn)算方向是從左向右。

59.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機(jī)的、不可重復(fù)的過程,它用于隔離和確認(rèn)問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復(fù)的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項(xiàng)\u3000B。

60.D解析:本題通過函數(shù)調(diào)用對數(shù)組[0][0]、a[1][1]、a[2][2]、對a[0][3]進(jìn)行求和,然后用return語句返回s的值。

61.D算法是指解題方案的準(zhǔn)確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運(yùn)算和操作,還要考慮算法的控制結(jié)構(gòu)。故答案為D選項(xiàng)。

62.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。

63.A根據(jù)單位鏈表(包含頭結(jié)點(diǎn))的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點(diǎn)的目的是為了便于運(yùn)算的實(shí)現(xiàn)。

64.A\n

溫馨提示

  • 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

提交評論