2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第1頁
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第2頁
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第3頁
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第4頁
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩98頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列定義中,不正確的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);

D.staticcharc;intx,y;{...}

2.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。

A.115LB.0118C.1.5e1.5D.o115

3.十六進(jìn)制數(shù)BB轉(zhuǎn)換成十進(jìn)制數(shù)是()

A.192B.256C.187D.121

4.

5.

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

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

7.一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為A.219B.221C.229D.231

8.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

9.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動()個(gè)元素

A.70B.71C.69D.30

10.如下函數(shù)調(diào)用語句func(rec1,rec2+rec3,rec4,rec5);該函數(shù)調(diào)用語句中,含的實(shí)參個(gè)數(shù)是().

A.3B.4C.5D.有語法錯(cuò)誤

11.在C語言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲類型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

12.假設(shè)把整數(shù)關(guān)鍵碼K散列到有N個(gè)槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一個(gè)0到N-1的整數(shù)

13.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

14.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個(gè)字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個(gè)字符

15.

有以下程序:

main

{intx=102,y=012;

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

}

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

A.10,01B.02,12C.102,10D.02,10

16.

17.具有20個(gè)結(jié)點(diǎn)的二叉樹,其深度最多為_______。

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

18.在一個(gè)單鏈表HL中,若要在指針q所指結(jié)點(diǎn)的后面插入一個(gè)由指針p所指向的結(jié)點(diǎn),則執(zhí)行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

19.

20.若定義了函數(shù)double*function(),則函數(shù)function的返回值為()。

A.實(shí)數(shù)型B.實(shí)數(shù)的地址C.指向函數(shù)的指針D.函數(shù)的地址

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

main()

{intarr[10],i,k=0;

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

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

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

}

22.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

for(i=1;i<=n;i++)

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

23.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

24.有以下程序:

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é)果是【】。

25.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

26.十進(jìn)制數(shù)111用八位二進(jìn)制數(shù)表示為【】。

27.數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。

28.問題處理方案的正確而完整的描述稱為______。

29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用刪函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END);fl+ftell(myf);

fclose(myf);

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

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

main()

{unsignedshorta=65536;intb;

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

}

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

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

32.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(如果原來已是小寫字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語句。

main()

{charstr[200];inti=0;

while((______=getchar())!='\n');

str[i-1)='\0';

for(i=0;str[i]!='\0';i++)

if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')

str[i]+=______;

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

}

33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。

34.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個(gè)獨(dú)立路徑至少要執(zhí)行一次。

35.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。

36.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動元素的個(gè)數(shù)為【】。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

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

39.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

40.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

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

三、1.選擇題(20題)41.下列程序的運(yùn)行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>O)if(c<=0)y=x-y;}elseif(c>0)y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

42.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。

A.b,bB.a,bC.b,cD.a,c

43.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)件變量的是_______。

A.typedefstructabc{doublea;charb[10];}s;

B.struct{doublea;charb[10];}s

C.structABC{doublea;charb[10];}ABCs;

D.typedefABC{doublea;charb[10];}ABCs;

44.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在

B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參

C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參

45.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

46.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

47.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

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

A.2030B.2050C.3050D.3020

48.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

49.有以下函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()

A.比較兩個(gè)字符串的大小

B.計(jì)算s所指字符串占用內(nèi)存字節(jié)個(gè)數(shù)

C.計(jì)算s所指字符串的長度

D.將s所指字符串自制到字符串t中

50.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

51.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分別為10、20、A、B,正確的數(shù)據(jù)輸入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

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

A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.模擬模型D.軟件工程

53.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

54.下列可作為C語言賦值語句的是______。

A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);

55.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

56.下述語句中,在字符串s1和s2相等時(shí)顯示"theyareEqual"的是()。

A.if(*s1=*s2)puts("theyareEqual");

B.if(!strcmp(s1,s2))puts("theyareEqual");

C.if(s1==s2)puts("theyareEqual");

D.if(strcmp(s1,s2))puts("theyareEqual");

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.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

59.有以下程序voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);})main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序運(yùn)行后的輸出結(jié)果是

A.1268B.8621C.8162D.8612

60.以下選項(xiàng)中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

四、選擇題(20題)61.有以下程序:

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

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

62.

63.

64.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

65.有下列程序

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}

}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}

}

main()

{inti=0;func1(i);

printf("\n");

}

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

A.helloB.hel

C.hloD.hlm

66.HTTP協(xié)議是運(yùn)行于()協(xié)議之上的應(yīng)用層協(xié)議。

A.FTPB.SMTPC.TCPD.UDP

67.

68.

有以下程序

#include<stdio.h>

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

{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");

}

程序運(yù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,

69.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是

A._1B.d3_7C._a7D.m—n

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

A.a=4,b=4

B.a=4,b=5

C.a=5,b=4

D.a=5,b=5

71.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

73.有以下程序

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

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

}

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

A.012B.135C.234D.345

74.(38)索引屬于()

A.模式

B.內(nèi)模式

C.外模式

D.概念模式

75.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

76.設(shè)有如下三個(gè)關(guān)系表

下列操作中正確的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

77.面向?qū)ο蠓椒ㄖ?,繼承是指()。

A.一組對象所具有的相似性質(zhì)B.一個(gè)對象具有另一個(gè)對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

78.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

79.

80.

五、程序改錯(cuò)題(1題)81.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯(cuò)誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯(cuò)誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。

3.C

4.A

5.C

6.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)。

7.A本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+l。根據(jù)這條性質(zhì)可知,若二叉樹中有70個(gè)葉子結(jié)點(diǎn),則其度為2的結(jié)點(diǎn)數(shù)為70-1,即69個(gè)。二叉樹的總結(jié)點(diǎn)數(shù)是度為2、度為1和葉子結(jié)點(diǎn)的總和,因此,題目中的二叉樹總結(jié)點(diǎn)數(shù)為69+80+70,即219。因此,本題的正確答案是選項(xiàng)A。

8.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

9.A

10.B

11.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時(shí)才分配內(nèi)存空間,函數(shù)調(diào)用時(shí)返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項(xiàng)A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運(yùn)行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個(gè)程序運(yùn)行期間都占用內(nèi)存空間。

12.A

13.D

14.B

15.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個(gè)十進(jìn)制整數(shù),每個(gè)整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時(shí)域?qū)挷黄鹱饔?,按?shí)際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

16.A

17.D

18.D

19.B

20.B

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

22.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個(gè)數(shù)。

23.101,0解析:與運(yùn)算兩邊的語句必須同時(shí)為真時(shí),結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時(shí),a,b的值已經(jīng)發(fā)生了變化。

24.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。

25.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

26.11011111101111解析:本題通過除2取余法即可求出十進(jìn)制數(shù)111所對應(yīng)的二進(jìn)制數(shù)1101111。

27.概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)

28.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

29.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。

打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);

關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。

30.00解析:對于一個(gè)unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實(shí)際為0。

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

32.str[i++]32。str[i++]32。解析:while語句的循環(huán)控制條件既要將相應(yīng)元素賦予從鍵盤輸入的字符,又要改變元素的下標(biāo)值,以便接受下一個(gè)字符,可用下標(biāo)變量的后置加實(shí)現(xiàn);小寫字母的ASCII碼值比相對應(yīng)的大寫形式大32。

33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊(duì)列也是線性表,也町以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。

34.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本題考查軟件工程的測試。測試一般有兩種方法:黑盒測試和白盒測試。黑盒測試不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程,只著眼于程序的外部特性。用黑盒測試來發(fā)現(xiàn)程序中的錯(cuò)誤,必須用所有可能的輸入數(shù)據(jù)來檢查程序能否都能產(chǎn)生正確的輸出。白盒測試是在了解程序內(nèi)部結(jié)構(gòu)和處理過程的基礎(chǔ)上,對程序的所有路徑進(jìn)行測試,檢查路徑是否都能按預(yù)定要求正確工作。因此,劃線處應(yīng)填入“白盒(箱)”或“WhiteBox”。

35.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個(gè)加工對應(yīng)一個(gè)處理模塊。

36.n/2n/2解析:刪除一個(gè)元素,平均移動的元素個(gè)數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個(gè)元素,平均移動元素個(gè)數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個(gè)數(shù)為n/2。

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

38.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

39.前件前件

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

41.A解析:本題考查ifelse語句的使用。先判斷第1個(gè)if語句,因?yàn)閏=1>0,所以x=x+y=0+2=2。第1個(gè)if語句,因?yàn)閍=-5<0,所以進(jìn)入下列的復(fù)合語句。經(jīng)判斷發(fā)現(xiàn),復(fù)合語句中第2個(gè)if語句的條件均不滿足,不執(zhí)行任何語句退出,在這個(gè)過程中y和z的值沒有發(fā)生變化。

42.A解析:本題同樣考查++運(yùn)算的執(zhí)行次序。第一個(gè)prantf輸出的是'b',并且變量a='b';第二個(gè)printf輸出的是賦值語句b=a++最終的結(jié)果,該語句首先將a的值賦給b,然后a++,因此第二個(gè)printf輸出也是'b'。

43.B解析:定義一個(gè)結(jié)構(gòu)體類型的變量,可采用三種方法:①先定義結(jié)構(gòu)體類型,再定義變量名;②在定義類型的同時(shí)定義變量;③直接定義結(jié)構(gòu)類型變量,即不出現(xiàn)結(jié)構(gòu)體名;選項(xiàng)B符合第三種定義方法。

44.D解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)用中,是將主調(diào)函數(shù)的實(shí)參值傳給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:

①函數(shù)調(diào)用作為一條語句。例如:fun();這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。故選項(xiàng)A)正確。

②函數(shù)出現(xiàn)在表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:c=5*max(a,b);函數(shù)max是表達(dá)式的一部分,將其值乘以5后賦給c。故選項(xiàng)C)正確。

③函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。故選項(xiàng)B)正確。

函數(shù)調(diào)用不可作為一個(gè)函數(shù)的形參,因?yàn)楹瘮?shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,即實(shí)參傳給形參,不能由形參傳給實(shí)參。故選項(xiàng)D)錯(cuò)誤。

45.D解析:“&”是求址運(yùn)算符,“*”是指變量說明符。選項(xiàng)A)、B)應(yīng)改為scanf('%d',p);選項(xiàng)C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險(xiǎn),建議不使用。

46.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個(gè)二進(jìn)制文件;方式“wb+”為讀寫建立一個(gè)新的二進(jìn)制文件;方式“rb+”為讀寫打開一個(gè)二進(jìn)制文件:方式“rb”為輸入打開一個(gè)二進(jìn)制文件。

47.A解析:本題中,最主要的是掌握幾個(gè)有關(guān)文件函數(shù)的應(yīng)用。

函數(shù)名:fopen

功能:打開一個(gè)文件

調(diào)用方式FILE*fp;

fp=fopen(文件名,使用文件方式);

函數(shù)名:fprintf

功能:傳送格式化輸出到一個(gè)文件中

調(diào)用方式:fprintf(文件指針,格式字符串,輸出表列);

函數(shù)名:fclose

功能:關(guān)閉一個(gè)文件

調(diào)用方式:fclose(文件指針);

函數(shù)名:fscanf

功能:從磁盤文件執(zhí)行格式化輸入

調(diào)用方式:fscanf(文件指針,格式字符串,輸入列表)。

48.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。

49.B解析:本題中,首先讓t指向形參s,然后通過一個(gè)循環(huán)體為空的while循環(huán),將t逐次后移,直到其所指的內(nèi)容為0(字符串結(jié)束標(biāo)志)。注意,此時(shí)t仍然會被增1,所以從循環(huán)中出來,t指向的是s所指字符串的結(jié)束標(biāo)志的后一個(gè)字節(jié)。由此可見,返回的t-s是s所指字符串占用內(nèi)存字節(jié)的個(gè)數(shù),故本題應(yīng)該選擇B。注意,選項(xiàng)C和選項(xiàng)B是不同的,選項(xiàng)C所說的長度并不包括字符串結(jié)束標(biāo)志位,而選項(xiàng)B所說的個(gè)數(shù)則包括。即選項(xiàng)B所說個(gè)數(shù)始終比選項(xiàng)C所說長度大1。

50.D解析:選項(xiàng)A)在C語言中是一個(gè)合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時(shí),從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級,選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個(gè)數(shù)據(jù)賦給一個(gè)表達(dá)式,等號左邊不合要求,所以錯(cuò)誤。

51.A

52.B解析:數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。

53.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項(xiàng)A和選項(xiàng)C不正確,C語言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。

54.C

55.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計(jì)的常用工具,不是需求分析的工具。

56.B

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

58.B棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表,入棧和出棧都是在棧頂進(jìn)行,它們的操作特點(diǎn)是先進(jìn)后出,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈?zhǔn)酱鎯Α?/p>

59.C解析:本題考核的知識點(diǎn)是倘單程序的分析。函數(shù)fun()中用了一個(gè)if語句,當(dāng)數(shù)組下標(biāo)i小于數(shù)組下標(biāo)j時(shí),交換數(shù)組元素a[i]和a[j]的值,并使i值加1,j值減1。其功能就是把數(shù)組a中從下標(biāo)i到j(luò)的元素首尾互換。主函數(shù)中定義一個(gè)數(shù)組,在定義該數(shù)組的時(shí)候缺省了定義長度,定義的同時(shí)將其初始化賦值,所以該數(shù)組的長度為初始化該數(shù)組時(shí)的元素的個(gè)數(shù)即4,接著調(diào)用fun(a,0,3),其中將a數(shù)組的第一個(gè)元素的下標(biāo)0和最后一個(gè)元素的下標(biāo)3傳給了函數(shù)fun(),故執(zhí)行完該函數(shù)后,數(shù)組a中的元素首尾互換,因此最后依次輸出的數(shù)組a中值為8,1,6和2,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

60.C解析:C語言中字符常量是以單引號括起來的單個(gè)字符,或?yàn)橐浴癨\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個(gè)字符。

61.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個(gè)運(yùn)行期間都不釋放。所以第-次調(diào)用函數(shù)執(zhí)行n+=a++;時(shí)a先與n相加在再進(jìn)行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時(shí),s的值為4,調(diào)用f(a)函數(shù)時(shí)n的返回值為n=3+2=5,且此時(shí)a的值為3了。所以s的值為9。

62.A

63.B

64.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。

65.C根據(jù)變量作用域與其定義語句在程序中出現(xiàn)位置之間的關(guān)系,可把變量分為局部變量和全局變量兩種。其中,在函數(shù)外部定義的變量叫做全局變量,又稱為外部變量;在函數(shù)體內(nèi)定義的變量是局部變量,又稱為內(nèi)部變量。全局變量的作用域是整個(gè)程序,而局部變量的作用域是定義它的函數(shù)或者程序段。

在本題中,程序首先聲明兩個(gè)無返回值函數(shù)func1和func2,然后定義一個(gè)全局?jǐn)?shù)組st。做這類除主函數(shù)外,有其他函數(shù)的試題時(shí),首先需要分析其他函數(shù)來得知函數(shù)的作用,然后再看主函數(shù)。

func1函數(shù)帶有一個(gè)整型變量的形參,在函數(shù)體中,首先輸出以形參作為下標(biāo)的數(shù)組元素值,然后執(zhí)行if條件判斷語句,其條件為形參變量i<3。如果結(jié)果為真,則將變量i加2后保存,然后調(diào)用func2函數(shù);如果條件結(jié)果為假,則結(jié)束該函數(shù)。

從程序中不難看出,func2函數(shù)與func1函數(shù)基本類似,只是最后它對函數(shù)func1進(jìn)行調(diào)用,與前者不同,兩個(gè)函數(shù)是互相調(diào)用的。

在主函數(shù)中定義一個(gè)變量i并賦值為0,然后調(diào)用函數(shù)func1,根據(jù)我們對函數(shù)func1的分析可知,輸出st[0]即字符‘h’,而此時(shí)if語句的結(jié)果為真,執(zhí)行i加2并調(diào)用func2函數(shù)操作。此時(shí)變量i的值為2,因此,輸出st[2]即字符‘l’,此時(shí)函數(shù)func2中的if條件語句結(jié)果為真,同樣執(zhí)行i加2,并調(diào)用func1函數(shù)操作,然后通過func1函數(shù)輸出st[4]即字符‘o’,此時(shí)由于變量i的值等于4,是大于3的,函數(shù)結(jié)束。程序運(yùn)行到出口,最后輸出換行。因此,本程序最終的輸出結(jié)果是hlo。

66.C

67.A

68.D

\nfun函數(shù)的功能是對數(shù)組a[]的元素從大到小進(jìn)行排序。

\n

69.D所謂標(biāo)識符,是指常量、變量、語句標(biāo)號以及用戶自定義函數(shù)的名稱。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字、下畫線組成,并且只能以字母、下畫線開頭。一些標(biāo)識符被賦予特定的含義就叫做保留字(或稱為關(guān)鍵字)。

選項(xiàng)D“m—n”中含有非法字符“—”。

70.Bcontinue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)條件的判定。當(dāng)能被2整除時(shí),a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結(jié)尾,進(jìn)行i++,判斷循環(huán)條件。

71.A?B)與D)選項(xiàng)中取模運(yùn)算符%的左右兩個(gè)操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯(cuò)誤。C)選項(xiàng)中不能將x+z的值賦給表達(dá)式y(tǒng)*5,所以C)錯(cuò)誤。

72.C浮點(diǎn)型占8個(gè)字節(jié),整型占4個(gè)字節(jié),當(dāng)把整型數(shù)據(jù)用浮點(diǎn)型格式輸出時(shí),結(jié)果為0.000000

73.B第一個(gè)for循環(huán)的結(jié)果是p[9]={0,1,2,3,4,,5,6,7,8},第二個(gè)for循環(huán):i=0,++p,使得p指向了1,所以輸出的結(jié)果是1,然后i++,i=1,++p,p指向了3……

74.B

75.C解析:C語言規(guī)定如果全局變量與局部變量同名,則在局部變量的作用域內(nèi)全局變量不起作用。程序開頭定義的變量x為全局變量,函數(shù)incre中定義的變量x是局部靜態(tài)變量,存放在靜態(tài)存儲區(qū),incre調(diào)用結(jié)束后不釋放x占據(jù)的存儲單元。main函數(shù)中使用的x是全局變量x=3,所以main函數(shù)中調(diào)用函數(shù)incre兩次。調(diào)用過程如下。第1次調(diào)用:x=x*(x+1)=1×(1+1)=2,printf函數(shù)輸出2;第2次調(diào)用:x=x*(x+1)=2×(2+1)=6,printf函數(shù)輸出6。

76.C\n對于兩個(gè)關(guān)系的合并操作可以用笛卡爾積表示。設(shè)有n元關(guān)系R和in元關(guān)系s,它們分別有P和q個(gè)元組,則R與S的笛卡兒積記為R×S它是一個(gè)m+n元關(guān)系,元組個(gè)數(shù)是P×q由題意可得,關(guān)系T是由關(guān)系R與關(guān)系s進(jìn)行笛卡爾積運(yùn)算得到的。

\n

77.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€(gè)主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。

78.B解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a=0,則!a成立,執(zhí)行下列的語句,x--,得x=11:第二個(gè)if語句,判斷條件,發(fā)現(xiàn)c=o,則條件不成立,執(zhí)行下列的else語句,得x=4。

79.C

80.C

81.(1)錯(cuò)誤:缺少語句

正確:應(yīng)填人num%base

(2)錯(cuò)誤:缺少語句

正確:應(yīng)填人[d]

【解析】按題目中的要求把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,首先要對十進(jìn)制數(shù)對16求余,得出十六進(jìn)制每一位上的數(shù)字。因此,c[i]__________處填num%base。數(shù)組b為十進(jìn)制數(shù)0~15所對應(yīng)的十六進(jìn)制數(shù),數(shù)組c中存放的是十六進(jìn)制數(shù)每一位上的數(shù)字。因此,b__________處填Ed2。

82.

【解析】根據(jù)題目中要求刪除字符串中所有的空格,需要檢查字符串中的每一個(gè)字符。將不是空格的字符放入原來的字符串中,形成新的字符串。在新的字符串的末尾加上結(jié)束符。

2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列定義中,不正確的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);

D.staticcharc;intx,y;{...}

2.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。

A.115LB.0118C.1.5e1.5D.o115

3.十六進(jìn)制數(shù)BB轉(zhuǎn)換成十進(jìn)制數(shù)是()

A.192B.256C.187D.121

4.

5.

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

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

7.一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為A.219B.221C.229D.231

8.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

9.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動()個(gè)元素

A.70B.71C.69D.30

10.如下函數(shù)調(diào)用語句func(rec1,rec2+rec3,rec4,rec5);該函數(shù)調(diào)用語句中,含的實(shí)參個(gè)數(shù)是().

A.3B.4C.5D.有語法錯(cuò)誤

11.在C語言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲類型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

12.假設(shè)把整數(shù)關(guān)鍵碼K散列到有N個(gè)槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一個(gè)0到N-1的整數(shù)

13.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

14.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個(gè)字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個(gè)字符

15.

有以下程序:

main

{intx=102,y=012;

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

}

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

A.10,01B.02,12C.102,10D.02,10

16.

17.具有20個(gè)結(jié)點(diǎn)的二叉樹,其深度最多為_______。

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

18.在一個(gè)單鏈表HL中,若要在指針q所指結(jié)點(diǎn)的后面插入一個(gè)由指針p所指向的結(jié)點(diǎn),則執(zhí)行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

19.

20.若定義了函數(shù)double*function(),則函數(shù)function的返回值為()。

A.實(shí)數(shù)型B.實(shí)數(shù)的地址C.指向函數(shù)的指針D.函數(shù)的地址

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

main()

{intarr[10],i,k=0;

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

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

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

}

22.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

for(i=1;i<=n;i++)

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

23.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

24.有以下程序:

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é)果是【】。

25.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

26.十進(jìn)制數(shù)111用八位二進(jìn)制數(shù)表示為【】。

27.數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。

28.問題處理方案的正確而完整的描述稱為______。

29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用刪函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END);fl+ftell(myf);

fclose(myf);

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

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

main()

{unsignedshorta=65536;intb;

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

}

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

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

32.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(如果原來已是小寫字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語句。

main()

{charstr[200];inti=0;

while((______=getchar())!='\n');

str[i-1)='\0';

for(i=0;str[i]!='\0';i++)

if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')

str[i]+=______;

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

}

33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。

34.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個(gè)獨(dú)立路徑至少要執(zhí)行一次。

35.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。

36.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動元素的個(gè)數(shù)為【】。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

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

39.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

40.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

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

三、1.選擇題(20題)41.下列程序的運(yùn)行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>O)if(c<=0)y=x-y;}elseif(c>0)y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

42.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。

A.b,bB.a,bC.b,cD.a,c

43.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)件變量的是_______。

A.typedefstructabc{doublea;charb[10];}s;

B.struct{doublea;charb[10];}s

C.structABC{doublea;charb[10];}ABCs;

D.typedefABC{doublea;charb[10];}ABCs;

44.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在

B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參

C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參

45.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

46.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

47.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

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

A.2030B.2050C.3050D.3020

48.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

49.有以下函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()

A.比較兩個(gè)字符串的大小

B.計(jì)算s所指字符串占用內(nèi)存字節(jié)個(gè)數(shù)

C.計(jì)算s所指字符串的長度

D.將s所指字符串自制到字符串t中

50.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

51.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分別為10、20、A、B,正確的數(shù)據(jù)輸入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

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

A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.模擬模型D.軟件工程

53.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

54.下列可作為C語言賦值語句的是______。

A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);

55.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

56.下述語句中,在字符串s1和s2相等時(shí)顯示"theyareEqual"的是()。

A.if(*s1=*s2)puts("theyareEqual");

B.if(!strcmp(s1,s2))puts("theyareEqual");

C.if(s1==s2)puts("theyareEqual");

D.if(strcmp(s1,s2))puts("theyareEqual");

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.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

59.有以下程序voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);})main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序運(yùn)行后的輸出結(jié)果是

A.1268B.8621C.8162D.8612

60.以下選項(xiàng)中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

四、選擇題(20題)61.有以下程序:

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

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

62.

63.

64.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

65.有下列程序

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}

}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}

}

main()

{inti=0;func1(i);

printf("\n");

}

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

A.helloB.hel

C.hloD.hlm

66.HTTP協(xié)議是運(yùn)行于()協(xié)議之上的應(yīng)用層協(xié)議。

A.FTPB.SMTPC.TCPD.UDP

67.

68.

有以下程序

#include<stdio.h>

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

{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");

}

程序運(yù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,

69.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是

A._1B.d3_7C._a7D.m—n

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

A.a=4,b=4

B.a=4,b=5

C.a=5,b=4

D.a=5,b=5

71.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

73.有以下程序

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

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

}

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

A.012B.135C.234D.345

74.(38)索引屬于()

A.模式

B.內(nèi)模式

C.外模式

D.概念模式

75.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

76.設(shè)有如下三個(gè)關(guān)系表

下列操作中正確的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

77.面向?qū)ο蠓椒ㄖ?,繼承是指()。

A.一組對象所具有的相似性質(zhì)B.一個(gè)對象具有另一個(gè)對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

78.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

79.

80.

五、程序改錯(cuò)題(1題)81.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯(cuò)誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯(cuò)誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。

3.C

4.A

5.C

6.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)。

7.A本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+l。根據(jù)這條性質(zhì)可知,若二叉樹中有70個(gè)葉子結(jié)點(diǎn),則其度為2的結(jié)點(diǎn)數(shù)為70-1,即69個(gè)。二叉樹的總結(jié)點(diǎn)數(shù)是度為2、度為1和葉子結(jié)點(diǎn)的總和,因此,題目中的二叉樹總結(jié)點(diǎn)數(shù)為69+80+70,即219。因此,本題的正確答案是選項(xiàng)A。

8.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

9.A

10.B

11.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時(shí)才分配內(nèi)存空間,函數(shù)調(diào)用時(shí)返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項(xiàng)A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運(yùn)行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個(gè)程序運(yùn)行期間都占用內(nèi)存空間。

12.A

13.D

14.B

15.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個(gè)十進(jìn)制整數(shù),每個(gè)整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時(shí)域?qū)挷黄鹱饔?,按?shí)際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

16.A

17.D

18.D

19.B

20.B

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

22.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個(gè)數(shù)。

23.101,0解析:與運(yùn)算兩邊的語句必須同時(shí)為真時(shí),結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時(shí),a,b的值已經(jīng)發(fā)生了變化。

24.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。

25.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

26.11011111101111解析:本題通過除2取余法即可求出十進(jìn)制數(shù)111所

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論