2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)_第1頁
2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)_第2頁
2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)_第3頁
2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)_第4頁
2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021-2022年陜西省西安市全國計算機等級考試C語言程序設計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義語句:“charsE10]="1234567\0\0";”,則strlen(s)的值是()。

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

2.下面程序的輸出結果是()。

#include<stdio.h>

main()

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

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

執(zhí)行后輸出結果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不確定

3.若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

4.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b='b';

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

D.doublea=0.0;b=1.1;

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

A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失

B.打開一個已存在的文件并進行寫操作后,原有文件中的全部數據必定被覆蓋

C.在一個程序中對文件進行寫操作后,必須先關閉該文件然后再打開才能讀到第1個數據

D.C語言中的文件是流式文件,因此只能順序存取數據

6.

7.

8.若有定義語句:"inta[4][10],*P,*q[4];"且0≤i<4,則錯誤的賦值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

9.若有定義“intb[8],*p=b;”,則p+6表示()。

A.數組元素b[6]的值B.數組元素b[6]的地址C.數組元素b[7]的地址D.數組元素b[0]的值加上6

10.若用一個大小為6的數值來實現循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

11.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運行后的輸出結果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

12.下面關于求關鍵路徑的說法不正確的是()。

A.求關鍵路徑是以拓撲排序為基礎的

B.一個事件的最早開始時間同以該事件為尾的弧的活動最早開始時間相同

C.一個事件的最遲開始時間為以該事件為尾的弧的活動最遲開始時間與該活動的持續(xù)時間的差

D.關鍵活動一定位于關鍵路徑上

13.設有定義“intk=0;”,以下選項的4個表達式中與其他3個表達式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

14.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序運行后的輸出結果是A.運行后報錯B.66C.611D.510

15.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函數的功能是將a所指數組元素從大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序運行的結果是()。A.1,2,3,4,5,6,7,8,9,0,

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

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

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

16.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

17.用不帶頭結點的單鏈表存儲隊列時,其隊頭指針指向隊頭結點,其隊尾指針指向隊尾結點,則在進行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

18.

19.可以用帶表頭結點的鏈表表示線性表,也可用不帶表頭結點的鏈表表示線性表,前者最主要的好處是()。

A.可以加快對表的遍歷B.使空表和非空表的處理統(tǒng)一C.節(jié)省存儲空間D.可以提高存取表元素的速度

20.以下不能將s所指字符串正確復制到所指存儲空間的是()A.do{*t++=*s++;}while(*s);.

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++}

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

二、2.填空題(20題)21.注釋一般分為序言性注釋和______注釋。

22.以下程序的功能是建立—個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct

23.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現程序中的錯誤。

24.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

25.設有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

26.以下函數rotate的功能是:將a所指N行N列的二維數組中的最后一行放到b所指二維數組的第0列中,把a所指二維數組中的第0行放到b所指二維數組的最后一列中,b所指二維數組中其他數據不變。

#defineN4

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

{intI,j;

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

{b[I][N-1]=【】;【】=a[N-1][I];}}

27.下面程序的運行結果是【】。

#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,inttl,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

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

*(a+t2)=ch;

t1++;t2--;}}

28.數據的安全性是指保護數據以防止【】用戶的使用造成的數據泄密和破壞。

29.下列程序的輸出結果是______。

main()

{inta[]={31,27,20,12,6,1),*p=a;

p++;

printf("%d\n",*(p+2));

}

30.下列程序運行后的輸出結果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運行程序,輸入HOWAREYOU。

31.對于一棵具有n個結點的樹,則該樹中所有結點的度之和為【】。

32.寫出下列程序的輸出結果______。

main()

{int=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

33.以下函數把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

34.對下列二叉樹進行中序遍歷的結果為【】。

35.【】是一種信息隱蔽技術,目的在于將對象的使用者和對象的設計者分開。

36.以下程序的功能是:將輸入的正整數按逆序輸出。例如:若輸入135,則輸出531,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);();}

while(n!=0);

printf("\n");

}

37.fseek函數的正確調用形式是【】。

38.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。

39.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯系屬于【】的聯系。

40.以下程序的運行結果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

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

inti;

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

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

printf("\n");}

三、1.選擇題(20題)41.在下列字符序列中,合法的標識符是()

A.P12&.aB.stud_100C.$water.12D.88sum

42.數據庫管理系統(tǒng)中用來定義模式、內模式和外模式的語言為()。

A.CB.BasicC.DDLD.DML

43.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=-1,three};

C.enuma={one","two","three"};

D.enuma{"one","two","three"};

44.以下程序運行后,輸出結果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45.0

45.若有如下程序段:intn=1O;while(1)n--;printf("%d";n);則while循環(huán)執(zhí)行的次數是()。

A.0B.1C.10D.無數

46.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結果是______。

A.運行后報錯B.66C.611D.510

47.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

48.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是_______。

A.p+1B.a+1C.a++D.++p

49.以下程序輸出的結果是

#include<stdio.h>

#include<string.h>

main()

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGIJMC.EFGJK0D.FGHKL

50.以下只有在使用時才為該類型變量分配內存的存儲類說明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

51.下面程序輸出的結果是

main()

{inti;

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

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

printf("%d",a[2-i][i]);}

A.159B.753C.357D.591

52.電子數字計算機最主要的工作特點是()

A.高速度B.高精度C.存儲程序與自動控制D.記憶力強

53.在C語言中,函數調用時()。

A.實參和形參各占獨立的存儲單元

B.實參和形參共用存儲單元

C.由系統(tǒng)自動確定實參和形參是否共用存儲單元

D.由用戶指定實參和形參是否共用存儲單元

54.對于下面的程序#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti:charstring[20],sb[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));strcpy(string,scmp(string,str[21));printf("%s\n",string);}若運行時依次輸入abcd、abba和abc三個字符串,則輸出結果為______。

A.abcdB.abbaC.abcD.abca

55.具有3個結點的二叉樹有

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

56.下列程序段選擇項,使i的運行結果為3的程序段是()。

A.inti=0,j=O;(i=2,(j++)+i);

B.inti=1,j=0;j=i=((i=3)*2);

C.inti=0,j=1;(j=1)?(i=1):(i=3);

D.inti=1,j=1;i+=j+=1;

57.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達式的值為()。(float)(a+B)/2+(int)x%(int)y

A.5.5B.55C.5.5D.55

58.一個C程序中______。

A.main函數必須出現在所有函數之前

B.main函數可以在任何地方出現

C.main函數必須出現在所有函數之后

D.main函數必須出現在固定位置

59.有以下程序:inta=2;intf(intn){staticinta=3;intt=0;if(n%2)(staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}matin(){ints=a,i;for(i=0;i<3;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結果是______。

A.26B.28C.29D.24

60.有以下程序:main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序運行后的輸出結果是()。

A.75310246B.1234567C.76310462D.13570246

四、選擇題(20題)61.

62.以下定義數組的語句中錯誤的是()。

63.交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。

A.&B.^C.D.E.F.~

64.有以下程序:

運行后的輸出結果是()。

A.MtemoonB.AftemoonC.MorningD.orning

65.

66.有以下程序:

程序運行后的輸出結果是()。

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

67.設已有定義:floatx;則以下對指針變量p進行定義且賦初值的語句中正確的是()。A.float*p=&x;B.int*p-(float)x;C.floatp=&x;D.float*p=1024;

68.以下敘述中正確的是()。

A.用C語言編寫的程序只能放在一個程序文件中

B.C程序書寫格式嚴格,要求一行內只能寫一個語句

C.C程序中的注釋只能出現在程序的開始位置和語句的后面

D.C程序書寫格式自由,一個語句可以寫在多行上

69.下列變量聲明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

70.(75)下列不屬于結構化分析的常用工具的是()

A.數據流圖

B.數據字典

C.判定樹

D.PAD圖

71.

72.程序中已構成如下圖所示的不帶頭結點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表結點,指針變量s總是作為指針指向鏈表的第一個結點。

若有以下程序段:

該程序段實現的功能是()。

A.刪除尾結點B.尾結點成為首結點C.刪除首結點D.首結點成為尾結點

73.有三個關系R,S和T如下:

其中關系T由關系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并

74.(14)結構化程序設計主要強調的是()

A.程序的規(guī)模

B.程序的易讀性

C.程序的執(zhí)行效率

D.程序的可移植性

75.

76.

77.

78.有以下程序:

程序運行后的輸出結果是()。

A.4321098765B.5678901234C.0987654321D.0987651234

79.若有以下語句:typedefstructS{int9;charh;}T;以下敘述中正確的是()。

A.可用s定義結構體變量B.可用T定義結構體變量C.S是struct類型的變量D.T是structS類型的變量

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:從低位開始取出長整型變量s中奇數位上的數,依次構成一個新數放在t中。例如,當s中的數為l23456789時,t中的數為l3579。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫函數proc,該函數的功能是:將放在字符串數組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串數組中的M個字符串為:ABCDBCDEFGCDEFGHI則合并后的字符串內容應該是ABCDBCDEFGCDEFGHl。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b){}voidmain{charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;chararr[100]={"##################"};printf(”Thestrin9:kn”);for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str,arr);printf("TheAstring:\n");printf("%S",arr);printf("\n\n");}

參考答案

1.A"\0"表示空字符,strlen函數求得的是不包括字符串結束符\0的長度。故選A。

2.Bn=9,i=n/5=1;j=9-1*5-1=3,輸出為a[1][3]=-3

3.B解析:本題考核的知識點是for循環(huán)次數的計算.本程序中for循環(huán)的次數為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c.而最開始s的值為a,故4個選項中選項B符合題意.

4.B解析:本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數據,不能指向指針變量b,故選項C)錯誤。

5.AB選項中,打開一個已存在的文件并進行寫操作后,原有文件中的全部數據不一定被覆蓋,也可以對源文件進行追加操作等。C選項中,在一個程序中對文件進行寫操作后,不是先關閉該文件然后再打開才能讀到第1個數據,用fseek函數進行重新定位即可。D選項中,C語言中的文件可以進行隨機讀寫。故本題答案為A選項。

6.A

7.C

8.A數組名是一個存放一個數組首地址的值,是一個地址常量。而p=a不是合法的,因為p和a的基本類型不同。

9.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。

10.B

11.C本題輸出兩個結果,第一個是求字符串的長度。第二個是輸出的字符串,數組的下標是從0開始的,所以當str取1的時候,應為“One*Dream!”。

12.C

13.C表達式“++k”是先使得k的值自增1后再使用。表達式“k++”是先取得k的值再將k的值自增1。所以C選項中表達式的值為0,而其他3個選項中表達式的值均為1。故本題答案為C選項。

14.C解析:本題中第一行代碼對指針P進行了初始化,其指向數組a的第6個元素,在其后的操作中p的值也沒有改變過,所以最后輸出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代碼中對q指向的值進行賦值,等價于*q=a[10]=11,所以輸出結果*q為11。

15.Dfun函數的功能是對數組a[]的元素從大到小進行排序。

16.B當用指數形式表示浮點數據時,E的前后都要有數據,并且E的后面數要為整數。

17.D

18.B

19.B

20.Ado{*t++=*s++;}while(*s);不能因為當*s=‘\\0'時,while(*s)跳出循環(huán),這樣字符串結束標志’0\\沒有復制給*t,造成*t不完整。注意,*t++=*s++是先執(zhí)行t=*s,然后才進行t=t+1,s=s+1。B),C),D)三項都能將“\\0’復制過去。

21.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

22.解析:本題考查的是鏈表這一數據結構對結構體變量中數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,另一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。

23.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現程序中的錯誤。

24.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

25.88解析:本題考查帶參數的宏定義及相關運算.運算過程為:t=B*2=A+3*2=2+3*2=8。

26.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]實現把a所指二維數組中的第0行放到b所指二維數組的最后一列中,\ue008b[I][0]=a[N-1][I]實現將a所指N行N列的二維數組中的最后一行放到b所指二維數組中的第0列。

27.abcdefglkjihabcdefglkjih解析:本題主要考查了字符變量可參與的運算。因為字符在計算機中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術運算等,某字符的大寫字母的ASCII碼值比它對應的小寫字母ASCII碼值小32。

28.(非法)不合法(非法)不合法

29.1212解析:本題考查如何用指針引用數組元素。分析程序,首先定義了一個指向數組a的指針p,p指向數組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3]的值12。

30.HOWHOW解析:在scanf()函數中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數,所以本題中輸入空格就返回了'\\0\\,s數組也就確定了,后面的輸入就不再讀入數組s中。

31.n-1

32.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做;n++是先取n的當前值和I做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=0<=1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3。退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當前值3,然后再將n加1,即程序結束后得到n=4,但輸出的是3。

33.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

34.ACBDFEHGPACBDFEHGP解析:中序遍歷方法的遞歸定義;當二叉樹的根不為空時,依次執(zhí)行如下3個操作:①按中序遍歷左子樹。②訪問根結點。③技中序遍歷右子樹。根據遍歷規(guī)則來遍歷本題中的二叉樹。首先遍歷F的左子樹,同樣按中序遍歷。先遍歷C的左子樹,即結點A,然后訪問C,接著訪問C的右子樹,同樣按中序遍歷C的右子樹,先訪問結點B,然后訪問結點D,因為結點D沒有右子樹,因此遍歷完C的右子樹,以上就遍歷完根結點F的左子樹。然后訪問根結點F,接下來遍歷F的右子樹,同樣按中序遍歷。首先訪問E的左子樹,E的左子樹為空,則訪問結點E,然后訪問結點E的右子樹,同樣按中序遍歷。首先訪問G的左子樹,即H,然后訪問結點G,最后訪問G的右子樹P。以上就把整個二叉樹遍歷一遍,中序遍歷的結果為ACBDFEHGP。因此,劃線處應填入“ACBDFEHGP”。

35.封裝封裝解析:面向對象技術中包括以下幾個基本概念,即對象、類、方法、消息、繼承和封裝,其中封裝是一種信息隱蔽技術,目的在于將對象的使用者對象的和設計者分開。

36.n/=10n/=10解析:正整數按逆序輸出,即從低位到高位順序取出該正整數個數位的值輸出?!皊=n%10”為除10取余,第一次循環(huán)取出該正整數小數位,為順序移位,該空應為n/=10。

37.fseek(文件指針位移量起始點)fseek(文件指針,位移量,起始點)解析:本題考查函數fseek的用法。fseek函數的調用形式為:

fseek(文件指針,位移量,起始點)

“起始點”用0,1或2代替,其中,0代表“文件開始”;1為“當前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c”為基點,向前移動的字節(jié)數。ANSIC和大多數C版本要求位移量是long型數據,這樣當文件的長度大于64k時不致出現問題。ANSIC標準規(guī)定在數字的末尾加一個字母L,就表示long型。

38.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。

39.一對多(或1∶N)一對多(或1∶N)解析:兩個實體集間的聯系實際上是實體集間的函數關系,這種函數關系可以有3種,即一對一(1∶1)的聯系、一對多(1∶N)或多對一(N∶1)的聯系和多對多(N∶N)的聯系。

40.0240480,2,4\r\n0,4,8解析:本題主要考查for循環(huán)語句的使用以及靜態(tài)局部變量的特點。

41.B

42.C解析:選項A),B)顯然不合題意。數據定義語言(DataDefinitionLanguage,簡稱DDL)負責數據的模式定義與數據的物理存取構建;數據操縱語言(DataManipulationLanguage,簡稱DML)負責數據的操縱,包括增、刪、改等操作。

43.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數不能直接賦給一個枚舉變量。

44.A

45.D解析:本題的while循環(huán)條件為1恒為真,所以是一個無限循環(huán)。應該選擇答案D。

46.A解析:本題考核的知識點是通過指針引用數組的元素的方法.本題中首先定義了一個一維數組a并初始化,由于定義該數組的時候省略了長度,因此該數組的長度為初始化時候賦初值的個數即為12。數組名a代表數組的首地址,所以*p=a+5語句使得p指向數組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。

47.A解析:以下幾種算法的時間復雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數為0,只是順序掃描數據而已,所以其效率是最高的。

48.C解析:數組名是指針常量,是個固定的指針,不能對數組名賦予一個新的地址值,也不能使這個指針常駐量“移動”,指向數組的其他元素。

49.D解析:考查二維數組的定義及其元素引用的方法。當k=1時,引用的是二維數組元素w[1][1],值為字符串'FGH';當k=2時,引用的是數組元素w[2][2],即字符串'KL';當k=3時,結束程序的執(zhí)行。

50.B解析:extern、register、static、auto分別是定義外部變量、寄存器變量、靜態(tài)變量、自動變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調用時臨時分配單元而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程序運行時都存在。

51.B解析:本題用循環(huán)的方法考查對數組概念的掌握。首先,當i=0時,數組中的位置是a[2][0]=7,當然,如果用排除法,就不用考慮后面的循環(huán),因為在4個選項中,第1個數為7的選項只有B)。本題執(zhí)行第2次循環(huán)時,i的值為1,則pfintf函數中的數組指向為a[1][1]=5,依次循環(huán),可求出答案。

52.B解析:通常所說的計算機應是電子數字計算機的簡稱。電子數字計算機是一種能快速、自動進行數值計算和信息處理的計算工具。其主要特點是:(1)計算機能快速計算;(2)計算機是具有通用性的計算工具;(3)計算機具有高準確度;(4)計算機具有邏輯判斷能力。

53.A解析:本題考查函數調用時的參數傳遞。函數的形參是函數定義時由用戶定義的形式上的變量,實參是函數調用時,主調函數為被調函數提供的原始數據。

在函數調用時,實參和其所對應的形參分別占用不同的存儲單元,彼此之間不影響。

54.B解析:本題自定義函數scrnp()的作用是比較字符串s1和s2的大小,如果s1<s2,函數返回s1的值,否則返回s2的值。若運行時依次輸入abcd、abba和abc三個字符串,執(zhí)打strcpy(string,scmp(str[0],str[1]));后,string的值為abba,再執(zhí)行strcpy(string,scmp(string,str[2]));,由于scmp(string,str[2])返回string的值abba,再拷貝到字符串數組string中,所以本題輸出abba。

55.D解析:因為二叉樹有左、右子樹之分,所以有3個結點的二叉樹具有5種不同的形態(tài)。

56.D

57.C解析:在計算(float)(a+b)/2時,由于通過強制類型轉換將(a+b)轉換成了float型,所以應先將2轉換成float型,再進行計算,得4.500000。

在計算(int)x%(int)y時,先將x和y通過強制類型轉換成int型,再進行求余運算,得1。

又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。

注意:類型轉換的一般規(guī)則是:低級類型服從高級類型,并進行相應的轉換。數據類型的級別由低到高的排序表示為:char→int→unsigned→long→float→double。

58.B解析:本題主要考查main函數的基本知識。main函數可以出現在C程序的任何地方。

59.C解析:在某一函數中當全局變量與局部變量同名時,則在該函數中,全局變量被屏蔽,訪問的是局部變量。因此,t+a++中的a用的是staticinta=3的這個a。if語句的執(zhí)行是當n是偶數時,執(zhí)行else的部分,否則執(zhí)行其后的部分。因此,當i=0時,t=5,s=2+8=10;i=1時,t=4,s=10+8=18;當i=2時,t=6,s=18+11=29。

6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論