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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.

2.隊(duì)和棧的主要區(qū)別是________

A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運(yùn)算個(gè)數(shù)不同D.限定插入和刪除的位置不同

3.有以下函數(shù)intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數(shù)的功能是()。A.查找X和y所指字符串中是否有\(zhòng)o

B.統(tǒng)計(jì)x和Y所指字符串中最前面連續(xù)相同的字符個(gè)數(shù)

C.將Y所指字符串賦給X所指定存儲空間

D.統(tǒng)計(jì)X和Y所指字符串中相同的字符個(gè)數(shù)

4.在一個(gè)順序隊(duì)列中,隊(duì)首指針指向隊(duì)首元素的____位置。

A.前一個(gè)B.后一個(gè)C.當(dāng)前D.最后一個(gè)

5.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

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

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

}

main()

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

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

}

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

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

B.打開一個(gè)已存在的文件并進(jìn)行寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個(gè)程序中對文件進(jìn)行寫操作后,必須先關(guān)閉該文件然后再打開才能讀到第1個(gè)數(shù)據(jù)

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

7.有以下程序:fun(intx){intP;if(x==0||x==l)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}程序執(zhí)行后的輸出結(jié)果是()。A.7B.3C.2D.0

8.使用深度優(yōu)先算法遍歷下圖,遍歷的順序?yàn)?)A.ABCDEFGB.ABDCFEGC.ABDECFGD.ABCDFEG

9.

10.

11.利用E-R模型進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),可以分成3步:首先設(shè)計(jì)局部E-R模型,然后把各個(gè)局部E-R模型綜合成一個(gè)全局的模型,最后對全局E-R模型進(jìn)行(),得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

12.由兩個(gè)棧共享一個(gè)存儲空間的好處是______。

A.減少存取時(shí)間,降低下溢發(fā)生的幾率

B.節(jié)省存儲空間,降低上溢發(fā)生的幾率

C.減少存取時(shí)間,降低上溢發(fā)生的幾率

D.節(jié)省存儲空間,降低下溢發(fā)生的幾率

13.

14.設(shè)有定義“doublex=5.16894;”,則語句“printf(“%lf\n”,(int)(x*1000+0.5)/1000.);”的輸出結(jié)果是()。

A.5.16900B.5.16800C.0.00000D.輸出格式說明符與輸出項(xiàng)不匹配,產(chǎn)生錯(cuò)誤信息

15.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀人數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

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

D.p=&a;scanf("%1f",p);

16.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結(jié)果()

A.2,MB.3,EC.2,ED.輸出項(xiàng)與對應(yīng)的格式控制不一致,輸出結(jié)果不確定

17.C語言中的變量只能由字母、數(shù)字和下劃線組成,且第一個(gè)字符()。

A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數(shù)字或下劃線中任一一種

18.在關(guān)系數(shù)據(jù)模型中,通??梢园?)稱為屬性,其值稱為屬性值。

A.記錄B.基本表C.模式D.字段

19.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序?yàn)?)

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

20.深度為5的二叉樹至多有C個(gè)結(jié)點(diǎn)。

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

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

FILE*myf;longf1;

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

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

22.最簡單的交換排序方法是______。

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

25.結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)分別是順序、選擇和______。

26.若a是int型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

27.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=C;c=t;

if(a<c&&b<c)t=b;b=a;a=t

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

}

29.函數(shù)fun的功能是計(jì)算xn。

doublefun(doublex,intn)

{inti;doubley=1;

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

returny;

}

主函數(shù)中已經(jīng)正確定義變量m,a,b并賦值,要調(diào)用函數(shù)fun計(jì)算:m=a4+b4-(a+b)3。實(shí)現(xiàn)這一計(jì)算的函數(shù)調(diào)用語句為【】。

30.設(shè)一棵二叉樹中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹中總的結(jié)點(diǎn)數(shù)為【】。

31.以下程序的功能是:處理由學(xué)號和成績組成的學(xué)生記錄,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)高的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

32.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)______。

33.設(shè)有定義語句:inta[][3]={{0},{1},{2}};,則數(shù)組元素a[1][2]的值為()。

34.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

35.關(guān)鍵字ASC和DESC分別表示【】的含義。

36.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲空間,請?zhí)羁铡t=(char*)【】;

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

38.下面程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個(gè)名為bi.dat的新文件中,請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

39.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

三、1.選擇題(20題)41.下列正確的實(shí)型常量是()。

A.E3.4B.-12345C.2.2e0.8D.4

42.C語言源程序的最小單位是()。

A.程序行B.語句C.函數(shù)D.字符

43.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intk=17;printf("%d,%o,%x\n",k,k,k);}

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

44.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

45.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>union{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

46.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結(jié)果是______。

A.******B.****C.**D.*

47.設(shè)x,y均為int型變量,且x=10,y=3,則printf("%d,%d\n",x-,-y);語句的輸出結(jié)果是______。

A.10,3B.9,3C.9,2D.10,2}

48.下列程序的輸出結(jié)果是()。main{intx=i,y=8;printf("%d%d\n",x--,--y);

A.88B.77C.78D.87

49.設(shè)樹T的度為4,其中度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)分別為4,2,1,1,則T中的葉子結(jié)點(diǎn)數(shù)為()。

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

50.定義下列結(jié)構(gòu)體(聯(lián)合)數(shù)組:structst{charname[15];intage;}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};執(zhí)行語句printf["%d,%c",a[2].age,*(a[3].name+2))的輸出結(jié)果為()。

A.15,AB.16,HC.16,AD.17,H

51.設(shè)定義下列結(jié)構(gòu)體,結(jié)構(gòu)體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

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

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

53.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

54.若有以下定義,則正確的switch語句是______。floatx;inta,b;

A.switch(x){case1.0:printf("*\n");csse2.0:printf("**\n");}

B.switch(x){case1,2:printf("*\n");case3:printf("**\n");}

C.switch(a+b){case1:printf("\n");case1+2:printf("**\n");}

D.switch(a+b);{case1:printf("*\n");case2:printf("**\n");}

55.以下程序的輸出結(jié)果是()main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}

A.54321B.012345C.12345D.543210

56.有以下程序A:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;)main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,B),f1(c,D));f=f1(f2(a,B),f2(c,D));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運(yùn)行后的輸出結(jié)果是()。

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

57.若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是______。main(){intn;scanf("%d:",&n);if(n++<10)printf("%d\n",n);elseprintf%d\n",n--);}

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

58.下面程序段的運(yùn)行結(jié)果是charstr[]="ABC",*p=str;printf("%d\n",*(p+3));

A.67B.0C.字符'C'的地址D.字符'C'

59.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

60.下列關(guān)于標(biāo)識符的說法中錯(cuò)誤的是

A.合法的標(biāo)識符是由字母、數(shù)字和下劃線組成

B.C語言的標(biāo)識符中,大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符

C.C語言的標(biāo)識符可以分為三類,即關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符

D.用戶標(biāo)識符與關(guān)鍵字不同時(shí),程序在執(zhí)行時(shí)將給出出錯(cuò)信息

四、選擇題(20題)61.(22)下列關(guān)于棧的敘述中正確的是()

A.在棧中只能插入數(shù)據(jù)

B.在棧中只能刪除數(shù)據(jù)

C.棧是先進(jìn)先出的線性表

D.棧是先進(jìn)后出的線性表

62.以下程序的功能是進(jìn)行位運(yùn)算

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

A.43B.73C.70D.40

63.

64.有以下程序:main{inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j=0;j<=3;j++)x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

65.設(shè)有定義:

doublea[10],*s=a;

以下能夠代表數(shù)組元素a[3]的是()。

A.($s)[3]B.}(s+3)C.*s[3]D.}s+3

66.

67.利用E-R模型進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),可以分成3步:首先設(shè)計(jì)局部E-R模型,然后把各個(gè)局部E-R模型綜合成一個(gè)全局的模型,最后對全局E-R模型進(jìn)行(),得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

68.下列字符串是標(biāo)識符的是()。

A.aaB.a-classC.intD.LINE1

69.C源程序中不能表示的數(shù)制是()。

A.十六進(jìn)制B.八進(jìn)制C.十進(jìn)制D.二進(jìn)制

70.有三個(gè)關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

71.當(dāng)執(zhí)行以下程序段時(shí),()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯(cuò)誤

72.要求以下程序的功能是計(jì)算:s=1+1/2+1/3+…+1/100。

程序運(yùn)行后輸出結(jié)果錯(cuò)誤,導(dǎo)致錯(cuò)誤結(jié)果的程序行是()。

A.s=1.0;

B.

C.S=S+1/n;

D.

73.以下函數(shù)實(shí)現(xiàn)按每行8個(gè)輸出w所指數(shù)組中的數(shù)據(jù)

74.

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

main()

{inta=1;

charc=’a’;

floatf=2.0;

Printf("%d\n",(!(a==0),f1=0&&c==’A’));

}

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

76.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

77.有三個(gè)關(guān)系R、S和T如下:

則由關(guān)系R和s得到關(guān)系T的操作是()。

A.自然連接B.并C.交D.差

78.“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是()。

A.一對一B.多對一C.一對多D.多對多

79.

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

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

80.在最壞情況下,堆排序的時(shí)間復(fù)雜度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:將str所指字符串中出現(xiàn)的t1所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所指的數(shù)組中。在此處,要求t1和t2所指字符串的長度相同。例如,當(dāng)str所指字符串中所指的內(nèi)容為abcdabcdef9,t1所指字符串中的內(nèi)容為bc,t2所指字符串中的內(nèi)容為11時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為alldalldefg。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:將兩個(gè)兩位數(shù)的正整數(shù)num1,num2合并形成一個(gè)整數(shù)放在num中。合并的方式是:將num1數(shù)的十位和個(gè)位數(shù)依次放在num數(shù)的十位和千位上,num2數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。

例如,當(dāng)num1=64,num2=18時(shí),調(diào)用到該函數(shù)后,num=4168。

注意:部分源程序給出如下。

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

試題程序:

參考答案

1.D

2.D

3.B由題中while(*x==*y*x!=\\n)可知此函數(shù)是統(tǒng)計(jì)x和y所指向的字符串中最前面的聯(lián)系相同的字符的個(gè)數(shù)。

4.A

5.D解析:本題中fun函數(shù)實(shí)現(xiàn)了字符串函數(shù)strcat的功能,將字符串a(chǎn)a連接到字符串ss的末尾。調(diào)用fun函數(shù)時(shí),形參t和s分別指向了字符串ss和aa,然后通過一個(gè)while循環(huán)使t指向字符串ss的結(jié)束符的位置,第二個(gè)while循環(huán)將字符串a(chǎn)a中的字符(包括結(jié)束符'\\0')逐個(gè)復(fù)制到字符串ss的末尾處。

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

7.C在函數(shù)funlintx)中,有個(gè)if語句判斷,如果參數(shù)x等于0或1時(shí),返回值,否則進(jìn)入下面的p=x-fun(x-2)遞歸函數(shù)。當(dāng)在主函勢中調(diào)用fun(7)時(shí),其過程為:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的輸出結(jié)果為2。

8.C

9.B

10.B

11.D解析:在概念設(shè)計(jì)中按照模塊的劃分畫出每個(gè)模塊的E-R圖,然后把這些圖合成一張E-R圖作為全局模型,最后應(yīng)該對全局E-R圖進(jìn)行優(yōu)化,看看是否有重復(fù)和不合理的地方。不能只是進(jìn)行簡單的合并。

12.B解析:常常一個(gè)程序中要用到多個(gè)棧,為了不發(fā)生上溢錯(cuò)誤,就必須給每個(gè)棧分配一個(gè)足夠大的存儲空間。但實(shí)際中,很難準(zhǔn)確地估計(jì),若每個(gè)棧都分配過大的存儲空間,勢必造成系統(tǒng)空間緊張;若讓多個(gè)棧共用一個(gè)足夠大的連續(xù)存儲空間,則可利用棧的動(dòng)態(tài)特性使他們的存儲空間互補(bǔ)。

13.C

14.A表達(dá)式“(int)(x*1000+0.5)”使用了強(qiáng)制轉(zhuǎn)換,其計(jì)算結(jié)果為5169,(5169/1000.0)=5.169。所以“printf(“%lf\\n”,5.169);”結(jié)果是5.16900。故本題答案為A選項(xiàng)。

15.Ddouble*p,a定義了一個(gè)指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項(xiàng)D正確。

16.B

17.C

18.D解析:數(shù)據(jù)庫表中字段轉(zhuǎn)化為屬性,把記錄的類型轉(zhuǎn)化為關(guān)系模式。

19.D解析:主要考查運(yùn)算符的優(yōu)先級。sizeof的優(yōu)先級最高,后面的順序是:%、<<、>,優(yōu)先級最低的是“=”。

20.C

21.fopenfopen解析:函數(shù)fopen的原型為FILE*fopen(char*filename,char*mode),功能為以mode指定的方式打開名為filename的文件;函數(shù)fseek的原型為intfseek(FILE*fp,longoffset,intbase),功能為將fp所指向的文件的位置指針移到以base所指出的位置為基準(zhǔn),offset為位移量的位置;函數(shù)ftell的原型為longftell(FILE*fp),功能為返回fp所指向的文件中當(dāng)前的讀寫位置;函數(shù)fclose的原型為intfclose(FILE*fp),功能為關(guān)閉fp所指的文件,釋放文件緩沖區(qū)。

22.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

23.30253025解析:本題考核的知識點(diǎn)是變量的存儲屬性和算術(shù)運(yùn)算的應(yīng)用。本題涉及了自動(dòng)變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個(gè)外部變量a,它是一個(gè)全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個(gè)運(yùn)行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個(gè)一個(gè)靜態(tài)變量a,此靜態(tài)變量a是個(gè)靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動(dòng)變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動(dòng)進(jìn)行的,auto是自動(dòng)變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認(rèn)為此變量為auto,本題中main()中intc=20定義了一個(gè)自動(dòng)變量c,此自動(dòng)變量c是個(gè)靜態(tài)的局部變量.算術(shù)運(yùn)算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個(gè)ptine('%d',a)中a=a+b=10+20=30,第二個(gè)printf('%d',a)中a=a+c=5+20=25,即輸出3025。

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

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

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

25.重復(fù)(循環(huán))重復(fù)(循環(huán))解析:結(jié)構(gòu)化程序設(shè)計(jì)包括3種基本的結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)(循環(huán)結(jié)構(gòu)),利用這3種結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。其中利用循環(huán)結(jié)構(gòu),可以簡化大量的程序執(zhí)行。

26.-24-24解析:本題考查賦值運(yùn)算符a+=b等價(jià)于a=a+b;a-=a*a等價(jià)于a=a-a*a=4-4*4=-12;a+=a,即a=a+a=-24。

27.物理獨(dú)立性物理獨(dú)立性

28.4599

29.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函數(shù)fun的功能是計(jì)算x的n次方,a的4次方的調(diào)用函數(shù)為fun(a,4),b的4次方的調(diào)用函數(shù)為fun(b,4),(a+b)的3次方的調(diào)用函數(shù)為fun((a+b),3),計(jì)算m=a4+b4-(a+b)3的函數(shù)調(diào)用語句為:fun(a,4)+fun(b,4)-fun((a+b),3);

30.1313解析:在任意一棵二叉樹中,葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。本題中的二叉樹有3個(gè)葉子結(jié)點(diǎn),所以,該二叉樹有3-1=2個(gè)度為2的結(jié)點(diǎn);又知本題中的二叉樹有8個(gè)度為1的結(jié)點(diǎn)。所以,本題中的二叉樹總結(jié)點(diǎn)數(shù)為:葉子結(jié)點(diǎn)數(shù)+度為l的結(jié)點(diǎn)數(shù)+度為2的結(jié)點(diǎn)數(shù)=3+8+2=13。所以,本題的正確答案為13。

31.max==a[i].smax==a[i].s解析:該程序使用循環(huán)嵌套,第1個(gè)for語句的作用是找出最大值。第2個(gè)循環(huán)的作用是找出與max相等的成績,也即最高成績的學(xué)生,并存入b中。

32.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個(gè);維表代表一種關(guān)系。

33.00解析:二維數(shù)組中當(dāng)某行一對花括號內(nèi)的初值個(gè)數(shù)小于該行中元素的個(gè)數(shù)時(shí),系統(tǒng)將自動(dòng)給該行后面的元素補(bǔ)初值0,由此可見數(shù)組a[1][2]=0。

34.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個(gè)一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個(gè)一維數(shù)組都有4個(gè)元素,a[0]的元素為a[0][0]、a(0][1]、a[0][2]、a[0][3]

35.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語句中的ORDER子句中。

36.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。

37.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個(gè)成員分別占有其自己的內(nèi)存單元。int占2個(gè)字節(jié),float占4個(gè)字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

38.dat""w"或"bi.dat""w+"或"bi.dat""r+"dat','w'或'bi.dat','w+'或'bi.dat','r+'解析:本題的考點(diǎn)是fopen()函數(shù),此函數(shù)的格式是fopen(文件名,使用文件方式),題目的要求是將從鍵盤讀入的文本寫到文件中,因此選擇的打開方式應(yīng)該是'w'(只寫)?;蛘呤亲x寫“r+”或“w+”。

39.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實(shí)現(xiàn)的是在字符“A”的ASCII碼值上加上一個(gè)常數(shù),使之變成另一個(gè)ASCII碼值,從而輸出字符。

40.20020,0解析:在主函數(shù)中首先定義了三個(gè)整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號內(nèi)的條件表達(dá)式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句x=Y;Y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。

41.B解析:實(shí)型常量有兩種書寫形式。①小數(shù)形式,它由符號、整數(shù)部分、小數(shù)點(diǎn)及小數(shù)部分組成;②指數(shù)形式,由十進(jìn)制小數(shù)形式加上指數(shù)部分組成,其形式為:十進(jìn)制小數(shù)e指數(shù)或十進(jìn)制小數(shù)E指數(shù)。

注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項(xiàng)A)中E的前面沒有數(shù)字,因此錯(cuò)誤。選項(xiàng)C)中0.8不是整數(shù),因此錯(cuò)誤。選項(xiàng)D)中4是整型常量而不是實(shí)型常量。

42.C解析:C語言源程序的最小單位是函數(shù),所以本題選C。

43.D解析:printf函數(shù)對不同類型的數(shù)據(jù)用不同的格式描述符,“%d”是以帶符號的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號);“%o”以八進(jìn)制無符號形式輸出整數(shù)(不包括前導(dǎo)符0);“%x”以十六進(jìn)制無符號形式輸出整數(shù)(不包括前導(dǎo)符0x)。

44.D解析:double*p,a;語句表示定義了一個(gè)指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf'('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f(或%1e)。否則,數(shù)據(jù)不能正確輸入。所以選項(xiàng)D)為正確答案。

45.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同—個(gè)存儲單元,且此存儲單元為2個(gè)字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以兄i的值為266。

46.D解析:本題考杏for循環(huán)語句中嵌套for循環(huán)語句的情況。由于第一個(gè)for語句沒有具體的執(zhí)行語句,故當(dāng)i=0時(shí),k=1時(shí),執(zhí)行一次語句printf(“*”);,程序便會跳出整個(gè)循環(huán),故運(yùn)行結(jié)果為一個(gè)星號。

47.D解析:C語言的自減運(yùn)算符有前置與后置兩種形式。當(dāng)自減運(yùn)算符前置時(shí),變量先自減一后再參與表達(dá)式運(yùn)算;而后置時(shí),變量先參與表達(dá)式運(yùn)算后再自身減一。

48.D解析:本題考查自減(--)運(yùn)算符的使用?!皒--”是先引用x的值然后將x的值減1,所以輸出的x值為8;“--y”是先將y的值減1然后再引用y的值,所以輸出的y值為7。

49.D解析:根據(jù)給定的條件,在樹中,各結(jié)點(diǎn)的分支總數(shù)為:4×1+2×2+1×3+4×1=15:樹中的總結(jié)點(diǎn)數(shù)為:15(各結(jié)點(diǎn)的分支總數(shù))+1(根結(jié)點(diǎn))=16:非葉子結(jié)點(diǎn)總數(shù)為:4+2+1+1=8。因此,葉子結(jié)點(diǎn)數(shù)為16(總結(jié)點(diǎn)數(shù))-8(非葉子結(jié)點(diǎn)總數(shù))=8。因此,本題的正確答案為D。

50.C解析:本題主要考查結(jié)構(gòu)體數(shù)組。a[2].age為結(jié)構(gòu)體a[2]的age成員,即16。a[3].name為指向結(jié)構(gòu)體a[3]的name成員的第一個(gè)元素的指針,即指向“Z”,(a[3].name+2)將指針后移兩位指向第三個(gè)元素“A”,*(a[3].name+2))是取指針?biāo)赶虻刂返膬?nèi)容。

51.C解析:本題主要考查怎樣為嵌套定義的結(jié)構(gòu)中的成員賦值:由于worker中的birth是一個(gè)st型的結(jié)構(gòu),在給birth賦值時(shí),不能將birth作為一個(gè)整體,要用“.”運(yùn)算再深入一層訪問到最基本的成員x、y、z。

52.DD?!窘馕觥勘绢}主要考查對排序算法的理解。冒泡排序法首先將第一個(gè)記錄的關(guān)鍵字與第二個(gè)記錄的關(guān)鍵字進(jìn)行比較,若逆序則交換,然后比較第二個(gè)與第三個(gè),以此類推,直至第n-1個(gè)與第n個(gè)記錄的關(guān)鍵字進(jìn)行比較。第一趟冒泡排序使最大的關(guān)鍵字元素放到最后。以此類推,進(jìn)行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結(jié)束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次??焖倥判蚴菍γ芭菖判虻囊环N改進(jìn)。它的基本思想是:通過一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字比另一部分記錄的關(guān)鍵字小,然后分別對這兩部分記錄繼續(xù)進(jìn)行排序,最終達(dá)到整個(gè)記錄有序。對于快速排序,當(dāng)初始記錄序列按關(guān)鍵字有序或基本有序時(shí),快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-1)/2。

53.C解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)對棧的定義及其特點(diǎn)可知:棧是限定只在表尾進(jìn)行插入或刪除操作的線性表,因此棧是先進(jìn)后出的線性表,對棧的插入與刪除操作,不需要改變棧底元素。棧是限定只在表尾進(jìn)行插入或刪除操作的線性表。

54.C

55.B

56.A

57.B解析:程序的功能是從鍵盤輸入一個(gè)整數(shù),然后執(zhí)行if語句的條件表達(dá)式n++<10。表達(dá)式n++<10,先執(zhí)行n<10,后對n加1。程序中從鍵盤輸入的n值為9,9<10,判斷的條件為真,然后n加1,即n的值變?yōu)?0,程序執(zhí)行后面的printf語句輸出n的值為10,所以,選項(xiàng)B正確。

58.B解析:考查指向字符串的指針變量。在該題中,指針變量p指向的應(yīng)該是該字符串中的首地址,p+3指向的是字符串結(jié)束標(biāo)志'\\0'的地址,因而。(p+3)的值為0。

59.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。

60.D解析:用戶標(biāo)識符與關(guān)鍵字相同時(shí),程序在編譯過程中將給出出錯(cuò)信息。注意:選項(xiàng)D)應(yīng)該改為用戶標(biāo)識符與關(guān)鍵字相同,程序在編譯時(shí)將給出出錯(cuò)信息。注意:合法的標(biāo)識符第一個(gè)字符必須為字母或下劃線。

61.D

62.A本題考查的是位運(yùn)算。c語言提供六種

63.D

64.B當(dāng)i=0時(shí),i<2成立,執(zhí)行第一個(gè)for循環(huán)x自加為1,接著執(zhí)行第二個(gè)for循環(huán);j=0時(shí)j<=3成立,此時(shí)if不成立,執(zhí)行x++后,x為2;接著j=1時(shí),i<=3成立,繼續(xù)循環(huán),此時(shí)if成立,continue是跳出本次循環(huán),繼續(xù)下一次循環(huán),不再執(zhí)行x++了;接著j=2時(shí),j<=3成立,此時(shí)if不成立,執(zhí)行其后的語句;當(dāng)j=4時(shí),退出第二個(gè)循環(huán),接著執(zhí)行循環(huán)外部的x++,x為4;當(dāng)i=1時(shí),i<2成立,執(zhí)行第一個(gè)循環(huán),x=5,此時(shí)接著執(zhí)行循環(huán)外部的語句,即第二個(gè)循環(huán);j=0時(shí)j<3成立,此時(shí)if不成立,x++后,x為6,接著j為1時(shí),j<=3成立,繼續(xù)循環(huán),此時(shí)if成立,不再執(zhí)行x++了;接著J=2時(shí),j<=3成立,此時(shí)if不成立,執(zhí)行其后的x++,x為7;i=3時(shí),j<=3成立,此時(shí)if成立,不再執(zhí)行其后的語句了;當(dāng)j=4時(shí),退出第二個(gè)循環(huán),執(zhí)行循環(huán)外部的語句,最終x為8,故選B選項(xiàng)。

65.B語句·s=a;表示指針變量s指向一維數(shù)

組a的首地址。a[3]表示引用數(shù)組a的第

溫馨提示

  • 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

提交評論