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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.以下有關(guān)宏替換的敘述不正確的是()。

A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示

2.執(zhí)行以下程序后,a,b的值分別為main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

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

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

4.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

5.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

6.

7.棧這種數(shù)據(jù)結(jié)構(gòu)一般應用在()。

A.遞歸調(diào)用B.子程序調(diào)用C.表達式求值D.A,B,C

8.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

9.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/

{intt,i,j;

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

for(j=i+1;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");

}

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

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,

10.軟件設計中劃分模塊的一個準則是()。A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合

11.下列敘述中錯誤的是()。

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

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

C.用戶定義的函數(shù)中若沒有return語句,則應當定義函數(shù)為void類型

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

12.下列定義數(shù)組的語句中,正確的是()。A.#defineN10?intx[N];

B.intN=10;int[N];

C.intx0..10];

D.Intx[];.

13.從堆中刪除一個元素的時間復雜以為____。

A.O(1)B.O(log2n)C.O(n)D.O(nlog2n)

14.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運行后的輸出結(jié)果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1

15.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為abcdefghi

B.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

16.一個隊列的入隊序列是a,b,c,d,則出隊序列是()。

A.a,b,c,dB.a,c,b,dC.d,c,b,aD.a,c,b,d

17.寫出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波蘭表達式()。

A.a(b-c*d)*+e-(f/g(h+i*j-k)*)

B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)

C.a(bcd*-)*+e-(fg/hij*+k-*)

D.abcd*-*e+fg/hij*+k-*-

18.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序運行后的輸出結(jié)果是()。A.1313B.2234C.3234D.1234

19.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

20.對包含N個元素的散列表進行檢索,平均檢索長度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

二、2.填空題(20題)21.表示條件;10<x<100或x<0的C語言表達式是【】。

22.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

23.下面的程序?qū)崿F(xiàn)字符串的復制。

voidcopy_string(from,to)

【】;

{for(;*from;from++,to++)

*to=*from;

【】;

}

main()

{char*a="Iamwang",*b="youareLi";

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

【】;

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

}

24."printf("%d\n",strlen("\t\"'\023\xABC\n"));"語句的輸出結(jié)果是______。

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

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

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

main()

{char*p[]={"BOOL","OPK","H","SP:,};

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

27.語句printf("%f\n",13.0*(1/5));的輸出結(jié)果為【】。

28.設有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

29.下面程序的功能是:計算1~10之間的奇數(shù)之和與偶數(shù)之和,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數(shù)之和=%d\n",a);

printf("奇數(shù)之和=%d\n",c-11);}

30.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)—管理與控制。

31.下列程序的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符1,則輸出3,請?zhí)羁铡?include<conio.h>#include<stdio.h>#defineM81intfun(char*ss,charC){inti=0;for(;();ss++)if(*ss==C)i++;returni;}main(){chara[M],ch;printf("\nPleaseenterastring:");gets(A);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));}

32.以下程序的運行結(jié)果是()。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

33.閱讀程序,填空補充程序。

#define【】30

main()

{【】;

num=10;

total=num*PRICE;

printf("total=%d,num=%d\n",【】);

}

34.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。

35.設有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

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

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

#include<string.h>

main()

{chara[]={'\1','\2','\3','\4','\0'};

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

}

38.在面向?qū)ο蠓椒ㄖ?,屬性與操作相似的一組對象稱為【】。

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

40.對數(shù)組中的元素值進行排序。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;

for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>【】)

{j=a[i];

a[i]=【】;

【】=j;}

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

printf("%4d",a[i]);

printf("\n");

}

三、1.選擇題(20題)41.設有以下說明語句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)體類型名

42.若有如下說明,則______的敘述是正確的。structst{inta;intb[2];}a;

A.結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是非法的

B.程序只在執(zhí)行到該定義時才為結(jié)構(gòu)體st分配存儲單元

C.程序運行時為結(jié)構(gòu)體st分配6個字節(jié)存儲單元

D.類型名structst可以通過extern關(guān)鍵字提前引用(即引用在前,說明在后)

43.有以下程序:#include<stdio,h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[1];a[i]=a[j];a[j]=t;}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa+2,5);for(i=0;i<10;i++)prinff("%d,",aa[i]);prinff("\n");程序運行后的輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

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

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

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

44.已知二叉樹BT的后后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍序列是______。

A.cedbaB.acbedC.decabD.deabc

45.有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=p[5];則b的值是

A.5B.6C.9D.8

46.關(guān)于結(jié)構(gòu)化程序設計原則和方法描述錯誤的是()。

A.選用的結(jié)構(gòu)只準許有一個入口和一個出口

B.復雜結(jié)構(gòu)應該用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)

C.不允許使用GOTO語句

D.語言中所沒有的控制結(jié)構(gòu),應該采用前后一致的方法來模擬

47.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(0<=i<4,0<=j<10)

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

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

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

49.從一個長度為n的順序表中刪除第i個元素(1≤i≤n)時,需向前移動______個元素。

A.n-iB.n-i+1C.n-i-1D.i

50.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

51.若有以下函數(shù)首部intfun(doublex[10],int*n)則下面針對此函數(shù)的函數(shù)聲明語句中正確的是______。A.intfun(doublex,int*n);

B.intfun(double,int);

C.intfun(double*x,intn);

D.intfun(double*,int*);

52.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ

53.下列4個關(guān)于C語言的結(jié)論中錯誤的是()。

A.可以用do…while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

B.可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

C.可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)

D.do…while語句與while語句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同

54.以下敘述中錯誤的是A.C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序

B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件

C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

D.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

55.下面程序輸出的結(jié)果是()。#include<stdio.h>main(){char*a="1234";fun(a);printf("\n");}fun(char*s){chart;if(*s){t=*S++;fun(s);}elsereturn;if(t!='\0')putchar(t);}

A.1234B.4321C.1324D.4231

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

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

57.下列選項可以正確表示字符型常量的是

A.′\r′B.aC.\897D.296

58.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

59.若要求從鍵盤讀入含有空格字符的字符串,應使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()

60.有以下程序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);}程序運行后的輸出結(jié)果是______。

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

四、選擇題(20題)61.設有二元關(guān)系R和三元關(guān)系s,下列運算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

62.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

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

A.5359B.5953

C.3595D.9535

63.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表

64.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0

65.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

66.

67.以下程序的輸出結(jié)果是()。main{inta=7,b=8,*P,*q,*r;p=&a;q=&b;r=P;P=q;q=r;printf("%d,%d,%d,%a\n",*P,*q,a,b);}A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

68.

69.有以下程序:

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

A.02356B.0235C.235D.2356

70.對于一個正常運行的C程序,以下敘述中正確的是()。

A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.

C.程序的執(zhí)行總是從main函數(shù)開始、

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

71.有以下程序程序運行后的輸出結(jié)果是()。

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

72.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

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

A.在不同的函數(shù)中可以使用相同名字的變量

B.函數(shù)中的形式參數(shù)是局部變量

C.在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

D.在一個函數(shù)內(nèi)的復合語句中定義的變量在本函數(shù)范圍內(nèi)有效

74.以下選項中可用作C程序合法實數(shù)的是()。A..1eOB.3.0e0.2C.E9D.9.12E

75.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

76.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是

main()

{intk=8;

switch(k)

{case8:k+=1;

case10:k+=1;

case11:k+=1;break;

default:k+=1;

}

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

}

A.12B.11

C.10D.9

77.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設計說明書D.集成測試計劃

78.C語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是()。

A.DoubleB.shortC.integerD.Char

79.

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

#include<stdio.h>

main

{chara[]={a,b,C,d,e,f,\0).

inti,j;

i=sizeof(a);

j=strlen(a);

printf("%d,%d",i,j);

}

A.7,7B.7,6C.6,6D.6,7

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.請編寫一個函數(shù)voidproc(intm,intk,intxxE3),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入206,則應輸出232931374143。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

2.C解析:inta,b,k=4,m=6,*p1=&k,*p2=&m;聲明整型變量a,b,k,m和指針p1,p2,并分別將4和6賦給k和m,將k和m的地址賦給P1和p2;a=p1==&m;等價于a=(p1==&m);將p1是否等于地址m的值(0)賦給變量a,b=(*p1)/(*p2)+7;該句的含義是將后面表達式的的值7賦給變量b。

3.D

4.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。

5.C解析:本題考核的知識點是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項B和選項D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項B和選項D不正確。因為在C語言中,字符常量在存儲時,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應的ASCII代碼放到存儲單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項C正確.而選項A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項A不正確,所以,4個選項中選項C符合題意。

6.D

7.D

8.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()?!邦愋蜆俗R符”為函數(shù)返回值的類型。

9.D解析:在本題中,主函數(shù)在調(diào)用fun()函數(shù)進行排序時,傳遞的參數(shù)是c+4和6,fun()函數(shù)實現(xiàn)的功能是將數(shù)組c的第5個元素開始的6個元素依次進行從大到小的順序排列。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。

10.B一般較優(yōu)秀的軟件設計,應盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。

11.B函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。函數(shù)中允許有多個return語句,但每次只能調(diào)用一個return語句,因此只能返回一個函數(shù)值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為void。故本題答案為B選項。

12.A數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達式]。B)中N是變量,不能用變量定義數(shù)組長度。C)選項中數(shù)組長度是非法的一串數(shù)字。定義數(shù)組時必須為其指明長度,D)選項中數(shù)組長度為空,所以非法。

13.B

14.C整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號表達式中的第二個表達式的值,為1。因此本題的答案為選項C。

15.Dstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串的末尾,要保證s1有足夠的空間容納下連接后的字符串。

16.A

17.D

18.C本題考查了宏定義與局部變量的區(qū)別,宏定義的作用范圍為整個程序,而變量的作用范圍只在定義它的函數(shù)體的部分,因此,主函數(shù)中定義的i與fun中的i互不相干。

19.B解析:第1個循環(huán)對數(shù)組a進行賦值:第2個循環(huán)對數(shù)組p進行賦值;第3個循環(huán)對k進行累加,k的初值等于5,第1次循環(huán),k=k+p[0]*2=5+0*2=5,第2次循環(huán),k=k+p[1]*2=5+2*2=9,第3次循環(huán),k=k+p[2]*2=9+6*2=21并輸出。

20.C

21.(x>10&&x<100)||x<0

22.22解析:'\\13':表示八進制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標志“'\\0'”,所以共有2個字節(jié)。

23.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函數(shù)copy_string()用到了形參from,to是指針變量,實參a、b是字符串指針,第一個空格應填形參說明語句“char*from,*to”。當from所指的字符串全部復制給to所指的字符串時,有可能to所指原字符串長度大于from所指字符串長度,即可能to所指串的后面字符仍留在復制后的to所指串中。為避免這種情況,必須在from所指串復制完后,馬上給to所指串加上串結(jié)束符。因此,第二個空格應填*to='\\0'。main()函數(shù)應調(diào)用copy_string()函數(shù),第三個空格應填copy_string(a,b)。

24.66解析:strlen()函數(shù)的作用是計算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標志\'\\0\'。

\'\\t\'是轉(zhuǎn)義字符,代表橫向跳若干格:\'\\\''是轉(zhuǎn)義字符,代表雙引號:\'\\023\'只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個字符;\'\\xAB\'是以兩位十六進制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。

5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

25.43344334解析:程序?qū)⒆兞縜,b的值傳給函數(shù)swap的形參x,y,并在函數(shù)中對x,y的值進行交換,所以在函數(shù)swap中輸出x,y的值4,3,由于c程序的函數(shù)是僧傳遞,實參a,b的值不會隨形參x,y的改變而改變,所以在主函數(shù)中輸出的a,b的值為3,4。

26.

27.00解析:/表示整除,1/5為0,0乘以任何數(shù)都得零,但是與浮點型相乘,要轉(zhuǎn)化為浮點型,所以結(jié)果為0.000000。注意:在一個運算符的兩邊如果一個是字符型,一個是整型,則把字符型轉(zhuǎn)換為整型之后再進行運算。

28.6060解析:程序中定義a是一個3行2列的二維數(shù)組,p是指向兩個元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

29.b=i+1b=i+1解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數(shù)之后;b的值是1~11之間的奇數(shù)和,但在輸出b值時c去掉多加的11,即為1~10之間的奇數(shù)之和。

30.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)—管理與控制。

31.*ss!='\0'*ss!='\\0'解析:本題考查的是指針的應用。題目要求求出字符串ss中指定字符的個數(shù)。分析整個程序,空缺處是檢驗指針ss是否指向了字符串的末尾,如沒有,即執(zhí)行下面語句,判斷指針ss指向的字符是否字符c,若是,i自加1;所以空缺處填入*ss!='\\0',作為循環(huán)終止的條件。

32.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函數(shù)main()中定義了一個變量i,并賦初值4,調(diào)用fun()函數(shù)將i的初值傳遞給形參m,進行fun()函數(shù)后的運算,輸出結(jié)果為m=4,k=4。將k值輸出后自行增加1,k=5,此時全局變量k的值變?yōu)?。主函數(shù)中調(diào)用fun()函數(shù)后,i再自行增加1,i=5,所以主函數(shù)輸出的結(jié)果為“i=5k=5”。

33.PRICEintnumtotaltotalnumPRICE\r\nintnum,total\r\ntotal,num解析:程序中出現(xiàn)了變量num,total以及宏P(guān)RICE,因此應在相應位置說明它們。

34.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

35.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在c語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0',所以題中數(shù)組str有6個元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

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

37.545\u3000\u30004解析:字符串處理函數(shù)strlen()返回的是字符數(shù)組的實際長度,不包括字符申結(jié)束標志‘\\\u30000’。而sizeof運算符則計算的是字符數(shù)組的總長度,包括串末尾的結(jié)束標志。

38.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨菩再|(zhì)的一組對象。所以,屬性與操作相似的一組對象稱為類。

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

40.a[k]a[k]a[k]

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

42.D解析:結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名是合法的定義,引用成員a的方法是a.a,變量a處于不同的“層次”上,系統(tǒng)完全能夠分情。st是—個結(jié)構(gòu)體名,不會為結(jié)構(gòu)體名分配存儲空間,應該是在運行時為結(jié)構(gòu)體變量a分配6個字節(jié)的存儲單元,故選項B和選項C錯誤。

43.C解析:sort函數(shù)的功能是將給定的數(shù)由大到小排序。函數(shù)調(diào)用sort(aa+2,5);中的實參aa+2是aa[2]的地址,將其傳給形參a[],使得形參中封a[0]的值為主函數(shù)中aa[2]的值,即3;實參5傳給形參n,在sort函數(shù)中用于指定參加排序的5個數(shù),從aa[2]到aa[6],所以本題輸出的結(jié)果是:1,2,7,6,5,4,3,8,9,10,

44.A解析:二叉樹BT的后序遍歷序列為dabec,故BT的根結(jié)點為c:而BT的中序遍歷序列是debac,即遍歷序列中最后—個結(jié)點為跟結(jié)點,說明BT的右子樹為空。由BT的的后序遍歷序列和中序遍歷序列可知BT的左子樹(LST)的后序遍歷序序列和序遍歷序列分別為dabe和deba(樹是遞歸定義的):故LST的根結(jié)點是e,在由LST的中序遍歷序列可知其左子樹為d。因此BT的前序遍歷序列為cedba。

45.C解析:p=&a[3]將指針指向數(shù)組a的第4個元素,p[5]指向數(shù)組a的第9個元素,而a[8]=9,所以b=9。

46.C解析:限制使用GOTO語句是結(jié)構(gòu)化程序設計的原則和方法之一,但不是絕對不允許使用GOTO語句。其他3項為結(jié)構(gòu)化程序設計的原則。

47.B解析:本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。

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

49.A

50.A

51.D解析:函數(shù)聲明可以照寫已定義的函數(shù)的首部,再加一個號就成為了對函數(shù)的聲明,在函數(shù)聲明中也可以不寫形參名,而只寫形參的類型,但要保證與函數(shù)首部寫法上的—致,即函數(shù)類型、函數(shù)名、參數(shù)個數(shù)、參數(shù)類型和參數(shù)順序相同。字符數(shù)組可用指針來表示,所以選頂D正確。

52.D解析:對二叉樹的前序遍歷是指:先訪問根結(jié)點,然后訪問左子樹,最后訪問右于樹,并且,在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左、右子樹。記住3種遍歷的順序:①前序,訪問根一按前序遍歷左子樹一按前序遍歷右子樹:②中序,按中序遍歷左子樹一訪問根一按中序遍歷右子樹;③后序,按后序遍歷左子樹呻按后序遍歷右子樹一訪問根。

53.D解析:本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次。

54.D(44)D)解析:并不是源程序中的所有行都參加編譯。在條件編譯形式下,相關(guān)內(nèi)容只在滿足一定條件時才進行編譯。選項D)中的非執(zhí)行語句不在其范圍內(nèi)。

55.B解析:本題的fun()函數(shù)是用遞歸法實現(xiàn)逆序輸出一個字符串。函數(shù)中首先定義一個局部變量t,然后s所指的內(nèi)容是否為字符串結(jié)束符,不是的話將s所指的內(nèi)容賦給t,同時使s后移一位,然后遞歸調(diào)用fun(s)。到這條語句為止是遞歸過程,即接下來連續(xù)遞歸調(diào)用fun(s)都只會執(zhí)行到這一半,直到回朔條件(s所指內(nèi)容是字符串結(jié)束符)出現(xiàn),fun()函數(shù)連續(xù)返回,判斷t不等于0的話,就輸出t,所以輸入的字符串被逆序輸出,故本題的正確答案應該是B。

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

57.A解析:C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的的范圍是0~127。由于字符常量用單引號括起來,所以選項B),C)錯誤,選項D)超過了字符常量的表示范圍。

58.C解析:C語言中的關(guān)鍵字有32個關(guān)鍵字(參見C語言教程),本題中只有C符合題意。

59.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。

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

61.D本題給出的兩個關(guān)系R與S的表結(jié)構(gòu)是不同的(R是二元關(guān)系,S是三元關(guān)系),它們不能進行∩、∪、一運算。而兩個不同結(jié)構(gòu)的關(guān)系是可以進行笛卡兒積(×)運算的。

62.A在本題中,程序首先定義了三個整型變量,并將變量k賦值為0,然后開始循環(huán),循環(huán)開始時變量j的值為50,結(jié)束時變量j的值為60,每循環(huán)一次,變量j自加1,即循環(huán)10次。

當j=50,k=0時,“!(k%10)”為真,輸出換行,即循環(huán)開始時,輸出從新的一行開始,執(zhí)行第二重循環(huán),此時的i=2,“!(j%i)”為真,運行break語句,即跳出本層循環(huán)(從這里我們可以看出,j如果可以被i整除,則跳出本層循環(huán)),然后判斷i是否不小于j-1,如果是,則輸出此時j的值,否則k自加1。

從程序執(zhí)行的過程來看,這個題目確實非常復雜,循環(huán)的次數(shù)太多,但經(jīng)過對上面一次循環(huán)過程的分析,我們可以發(fā)現(xiàn),其實這個程序的作用是找出50~60之間除1和本身外,不能被其他小于本身的數(shù)據(jù)整除的數(shù),并從小到大輸出這樣的數(shù)。這樣就能很容易地得到答案是5359。因此本題的正確答案是A。

63.A\r\n二分法又叫折半(對分)查找法,只適合于順序存儲的有序表(是指線性表中的元素按值非遞減排列)。二分法的基本思想是:設有序線性表的長度為n,被查元素為X,則二分查找的方法如

溫馨提示

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

評論

0/150

提交評論