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

下載本文檔

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

文檔簡介

2021年河北省張家口市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.已知廣義表:A=(a,b),B=(A,A),C=(a,(b,A),B),tail(head(tail(C)))的運(yùn)算結(jié)果是()。

A.(a)B.AC.aD.(A)

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

3.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。

A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機(jī)中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示

4.當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

5.若有定義"int(*pt)[3];",則下列說法正確的是()。

A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

6.在有序表(12,24,36,48,60,72,84)中二分查找關(guān)鍵字72時所需進(jìn)行的關(guān)鍵字比較次數(shù)是()

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

7.

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

9.在軟件設(shè)計中,不屬于過程設(shè)計工具的是()。

A.PDLB.DFD圖C.PAD圖D.N—S圖

10.

11.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

12.設(shè)有定義“intk=0;”,以下選項(xiàng)的4個表達(dá)式中與其他3個表達(dá)式的值不相同的是()。

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

13.對于循環(huán)隊列()。

A.無法判斷隊列是否為空B.無法判斷隊列是否為滿C.隊列不可能滿D.以上說法都不對

14.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain{intm=1,n=2,k=3;intS=ADD(m+n)*k;printf("s=%d",s);}A.sum=18B.sum=10C.sum=9D.sum=25

15.有一個有序表為{1,3,9,12,32,41,45,62,75,77,82,95,100},當(dāng)折半查找值為82的結(jié)點(diǎn)時,()次比較后查找成功。

A.11B.5C.4D.8

16.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認(rèn)為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

17.下面是有關(guān)C語言字符數(shù)組的描述,其中錯誤的是()。

A.不可以用賦值語句給字符數(shù)組名賦字符串

B.可以用輸入語句把字符串整體輸入給字符數(shù)組

C.字符數(shù)組中的內(nèi)容不一定是字符串

D.字符數(shù)組只能存放字符串

18.在一個鏈?zhǔn)疥犃兄?,假設(shè)f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點(diǎn)的運(yùn)算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

19.以下能正確定義一維數(shù)組的選項(xiàng)是

A.inta[5]={0,1,2,3,4,5}

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

C.chara={'A','B','C'};

D.inta[5]="0123";

20.已知A=10,B=20,下類表達(dá)式正確的是()。

A.C=(A++)*(--B)=200

B.A-=30

C.C=(A++)+(B--)=30

D.C=(++A)*(--B)=210

二、2.填空題(20題)21.執(zhí)行下列語句段后,x的值是______。

int*p,x;

x=100;

p=&x;

x=*p+50;

22.閱讀下列程序,則程序的輸出結(jié)果為【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

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

25.以下定義的結(jié)構(gòu)體類型包含兩個成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針。請將定義補(bǔ)充完整。

structnode

{intinfo;

【】Link;

};

26.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

27.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為______。

28.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

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

}

29.把數(shù)學(xué)表達(dá)式改寫成C語言的表達(dá)式是【】。

30.性結(jié)構(gòu)中,隊列的操作順序是先進(jìn)先出,而棧的操作順序是______。

31.以下程序是求矩陣a、b的和,結(jié)果存入矩陣c中,請?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

32.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。

33.以下程序運(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);

}

34.實(shí)體聯(lián)系模型是一種常用的高級概念數(shù)據(jù)模型,而______是實(shí)體聯(lián)系模型中的核心。

35.下面程序的功能是輸出數(shù)組中最大的數(shù),由a指針指向該元素。請?zhí)羁铡?/p>

main()

{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;

for(【】)

if(*a<*b)a=b;

printf("%d",*a);

}

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

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

p=a;

37.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

38.軟件結(jié)構(gòu)是以【】為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

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

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

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

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

40.當(dāng)輸入的數(shù)據(jù)為2、5時,則下列程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

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

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

三、1.選擇題(20題)41.算法的時間復(fù)雜度是指______。

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

42.實(shí)體聯(lián)系模型中實(shí)體與實(shí)體之間的聯(lián)系不可能是

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

43.以下程序的輸出結(jié)果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

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

A.測試工作必須由程序編制者自己完成

B.測試用例和調(diào)試用例必須一致

C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進(jìn)行測試

D.上述三種說法都不對

45.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]=“abcddfefdbd”,c=‘d’;ss(strl,c);printf(“%s\n”,strl);}程序運(yùn)行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abeDDfefDbDC.abcAMefAbAD.Abcddfefdbd

46.以下程序的輸出結(jié)果是_______。main(){inta=-1,b=1,k;if(++a<0)&&!(b-<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.00

47.若有如下定義:structstu{charname[9];intage;floatscore;);structstuclass[10]={{"Li",17,67},{"Song",19,80},{"guo",18,79},{"Zhao",16,69}};根據(jù)上面的定義,若執(zhí)行“printf("%s:%d%f",class[3].name,class[3].age,class[3].score);"則輸出的正確結(jié)果是()。

A.Song:19,80.000000

B.Zhao:16,69.000000

C.Li:17,67Song;19,80

D.guo:18,79Zhao;16,69

48.對線性表進(jìn)行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序

B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯Γ搓P(guān)鍵碼的檢索頻率排好序

49.以下程序:#include<stdio.h>main(){charstr[10];scanf("%s",&str);printf("%s\n",str);}運(yùn)行上面的程序,輸入字符串howareyou,則程序的執(zhí)行結(jié)果是()。

A.howB.howareyouC.hD.howareyou

50.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實(shí)體與實(shí)體間的聯(lián)系可以表示成()。

A.屬性B.關(guān)系C.鍵D.域

51.已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進(jìn)制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量

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

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結(jié)構(gòu)

C.線性表的所有結(jié)點(diǎn)有且僅有一個前件和后件

D.線性表可以是空表

53.當(dāng)執(zhí)行下面的程序時,其輸出結(jié)果為______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}

A.1B.2C.3D.不確定

54.以下不合法的用戶標(biāo)識符是()。

A.r3_t3B.ElseC.6aD._6

55.現(xiàn)有如下程序段

#include"stdio.h"

#include"string.h"

main()

{chara[]="acfijk";/*這里是有序的字符序列*/

charb[]="befijklqswz";/*這里是有序的字符序列*/

charc[80],*p;

inti=0,j=0,k=0;

while(a[i]!=′\0′&&b[j]!=′\0′)

{if(a[i]<b[j])c[k++]=a[i++];

elseif(a[i]>b[j])c[k++]=b[j++];

else{c[k++]=b[j++];

i++;}}

while(a[i]==′\0′&&b[j]!=′\0′)

c[k++]=b[j++];

while(a[i]!=′\0′&&b[j]==′\0′)

c[k++]=a[i++];

c[k]=′\0′;

puts(c);}

則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

56.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

57.若x是int型變量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的輸出結(jié)果是()

A.**3##4**5

B.##3**4##5

C.##3**4##5

D.**3##4**5

58.C語言中邏輯表達(dá)式的值為()

A.0或1B.非零值或者零值C.ture或falseD.'ture'或者'false'

59.有以下程序:#include<string.h>voidf(charp[][10],intn){chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dedbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運(yùn)行后的輸出結(jié)果是()。

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

60.下列程序段中,不是死循環(huán)的是_______。

A.inti=100;

B.unsignedk=0;while(1)do{{i=i%100+1;++kif(i>=100)break;}}while(k>=0);

C.for(;;);

D.ints=3379;while(s++%2+s%2)s++;

四、選擇題(20題)61.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

A.1B.16C.32D.0

62.若以下選項(xiàng)中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

63.有以下程序:#include<stdio.h>main(){chars[]={"012xy"};inti,n=o;for(i=0;s[i]!='0';i++)if(s[i]>=as[i]<=z)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.2C.3D.5

64.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

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

B.36

C.編譯出錯

D.00

65.有以下程序:

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

A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,

66.

67.有如下程序:

main()

{intx=1,a=0,b=0;

switch(x)

{

case0:b++;

casel: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

68.

69.C語言用_______表示邏輯“真”值。

A.trueB.t或yC.非零整型值D.整型值0

70.待排序的關(guān)鍵碼序列為15,20,9,30,67,65,45,90,要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個位置。

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

71.

72.

73.

若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項(xiàng)是()。

main

{intid=50,a[]=(7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++i

B.i=l;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

74.在深度為5的滿二叉樹葉中,葉子結(jié)點(diǎn)的個數(shù)為()。

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

75.算法是指()。

A.計算機(jī)程序

B.解決問題的計算方法

C.排序算法

D.解決問題的有限運(yùn)算序列

76.

A.a=50b=50(空格分開.B.5050(空格分開.C.a=50,b=50D.50,50

77.若有以下程序段,w和k都是整型變量。

w=k;

LB:if(w==0)gotoLE;

w--;

printf("*");

gotoLB;

LE:

M

則不能與上面程序段等價的循環(huán)語句是

A.for(w=k;w!=0;w--)printf("*");

B.w=k;<CR>while(w--!=0)printf("*");w++;

C.w=k;<CR>do{w--;printf("*");}while(w!=0);

D.for(w=k;w;--w)printf("*");

78.

79.

有以下程序:

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

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸人的三條邊長(整形),判斷能否構(gòu)成三角形;構(gòu)成的是等邊三角形還是等腰三角形。若能構(gòu)成等邊三角形函數(shù),返回3;若能構(gòu)成等腰三角形函數(shù),返回2;若構(gòu)成=三角形函數(shù),返回l;若不能構(gòu)成三角形函數(shù)返回0。請修改函數(shù)fun()中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實(shí)際輸入時個數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

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

3.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的物理實(shí)現(xiàn),有時也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲結(jié)構(gòu)則涉及到如何在計算機(jī)中通過對數(shù)據(jù)的物理存儲進(jìn)行組織來表達(dá)數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲中是利用物理存儲空間上的連續(xù)性來表達(dá)線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈?zhǔn)酱鎯χ惺峭ㄟ^指針域構(gòu)成的邏輯鏈條來表達(dá)數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實(shí)現(xiàn),即數(shù)據(jù)的存儲結(jié)構(gòu)不止一種。因此選項(xiàng)D正確。

4.A當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。

5.D\n數(shù)組指針是指向數(shù)組的一個指針,int(*pt)[3]表示一個指向3個int元素的數(shù)組的一個指針。

\n

6.B

7.B

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

9.B常見的過程設(shè)計工具有圖形土具(程序流程圖、N—S圖、PAD圖、HIP0圖)、表格工具(判定表)和語言工具(PDL)。DFD是數(shù)據(jù)流圖,是描述數(shù)據(jù)處理過程的工具。

10.C

11.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運(yùn)算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。

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

13.D

14.B本題考查帶參數(shù)的宏的定義:“#defineADD(x)x+x”中X代表m+n,故s寫成s=m+n+m+n*k=1+2+1+2*3=10。

15.C

16.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進(jìn)行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。

17.D\n用來存放字符量的數(shù)組稱為字符數(shù)組。字符數(shù)組也可以是二維或多維數(shù)組,對一個字符數(shù)組,如果不作初始化賦值,則必須說明數(shù)組長度,還可用printf函數(shù)和scarlf函數(shù)一次性輸出/輸入一個字符數(shù)組中的字符串,而不必使用循環(huán)語句逐個地輸入/輸出每個字符。通常用一個字符數(shù)組來存放一個字符串。所以D選項(xiàng)不正確。

\n

18.B

19.B解析:選項(xiàng)A)中,定義的初值個數(shù)大于數(shù)組的長度;選項(xiàng)C)中,數(shù)組名后少了中括號;選項(xiàng)D)中,整型數(shù)組不能賦予字符串。

20.C

21.150150解析:本題先給變量x賦初始值100,然后將指針p指向變量x,*p是取指針p所指地址的內(nèi)容,即100,所以x=100+50=150。

22.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以被調(diào)用函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

23.3232解析:while(表達(dá)式)的功能是:首先計算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時,結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

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

25.structnode*structnode*解析:link是指向結(jié)構(gòu)體自身的指針,因此link是指針,指向strictnode類型的數(shù)據(jù),可定義成“stmctnode*link”。

26.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。

27.繼承繼承

28.1B1B解析:從鍵盤輸入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在輸出時均需要把a(bǔ),b轉(zhuǎn)化為字符型,因此輸出為1B。

29.(cosx)*(cosx)*(m+n)/(m-n)

30.先進(jìn)后出先進(jìn)后出解析:隊列和棧都是線性結(jié)構(gòu),但是不同之處在于隊列的操作順序是先進(jìn)先出,而棧的操作順序是先進(jìn)后出。

31.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求兩個矩陣的和只要將對應(yīng)元素相加即可。

32.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)是現(xiàn)實(shí)世界符號的抽象,而數(shù)據(jù)模型(datamodel)則是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束行為,為數(shù)據(jù)庫系統(tǒng)的信息表示與操作提供一個抽象的框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型(conceptualdatamodel)、邏輯數(shù)據(jù)模型(logicdatamodel)、物理數(shù)據(jù)模型(physicaldatamodel)。

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

34.實(shí)體聯(lián)系圖或E-R圖實(shí)體聯(lián)系圖或E-R圖解析:實(shí)體聯(lián)系圖(B-R圖)是實(shí)體聯(lián)系模型中的核心。由于E-R圖描述的是數(shù)據(jù)流圖中數(shù)據(jù)存儲及其之間的關(guān)系,因此它是數(shù)據(jù)庫觀念設(shè)計的最常用的工具。

35.a=sb=s+1;b-s<sizeof(s)/sizeof(s[0]);b++a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++解析:題目要求輸出數(shù)組中最大的數(shù),所以要遍歷整個數(shù)組,而指針a用來指向最大數(shù),所以循環(huán)變量只有使用指針b。for初始化時,應(yīng)該先讓a指向第1個數(shù),然后讓b指向第2個數(shù),故循環(huán)初始化語句應(yīng)該為a=s,b=s+1或其他等價表達(dá)式。因?yàn)橐筨遍歷整個數(shù)組,故循環(huán)條件應(yīng)該為b-s<sizeof(s)/sizeof(s[0])或其他等價表達(dá)式。最后每次循環(huán)應(yīng)該讓b往后移動一位,故for的第3條語句應(yīng)該是++b、b++或其他等價形勢。所以本題應(yīng)填a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++或其他等價語句。

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

37.33解析:本題考查do…while語句形式:

do循環(huán)體

while表達(dá)式

首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。第1次循環(huán):b+=2,b=2,a-=2+b,a=11;第2次循環(huán):b=4,a=5;第3次循環(huán):b=6,a=-3,此時再判斷循環(huán)條件不滿足,退出循環(huán)。

38.模塊模塊

39.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為“1,2,3,0,0,1,2,3,0,0”。

40.255

41.C解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。

42.D解析:實(shí)體聯(lián)系模型中實(shí)體與實(shí)體之間的聯(lián)系有一對一(1:1),一對多戌多對一(1:m或m:1),多對多(m:n)其中一對一是最常用的關(guān)系。

43.C解析:觀察程序段可知,對帶參數(shù)的宏的展開只是將語句中的宏名后面括號內(nèi)的實(shí)參字符串代替#define命令行中的形參。本題中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,結(jié)果為36。

44.D解析:測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進(jìn)行的,其目的是設(shè)法暴露程序中的錯誤和缺陷,一般應(yīng)當(dāng)避免由開發(fā)者測試自己的程序,因此,選項(xiàng)A錯誤;測試是為了發(fā)現(xiàn)程序錯誤,不能證明程序的正確性,調(diào)試主要是推斷錯誤的原因,從而進(jìn)一步改正錯誤,調(diào)試用例與測試用例可以一致,也可以不一致,選項(xiàng)B錯誤;測試發(fā)現(xiàn)錯誤后,可進(jìn)行調(diào)試并改正錯誤:經(jīng)過調(diào)試后的程序還需進(jìn)行回歸測試,以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引進(jìn)新的錯誤,選項(xiàng)C錯誤。

45.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s;另一個是字符型變量t。在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出e指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“*s=t-'a'+'A';”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把stfl數(shù)組中所有字符“d”變成大寫字母,其他字符不變。

46.C解析:邏輯運(yùn)算符的優(yōu)先次序如下:!(非)→&&(與)→||(或),但本題特別注意的是短路的概念。

47.B解析:class[10]是結(jié)構(gòu)體型的數(shù)組,class[3]為{'Zhao',16,69}。

48.A解析:對線性表進(jìn)行二分法檢索,要求線性表是按順序方式存儲的,并按關(guān)鍵碼值的大小排好序,而不是按關(guān)鍵碼的檢索頻率排序。

49.A解析:當(dāng)從鍵盤輸入bowareyou時,由于scanf輸入函數(shù)的特點(diǎn)是遇到空格時結(jié)束讀入字符,因此,該程序只將how這3個字符送到了字符數(shù)組str中,并在其后自動加上結(jié)束符“\\0”。

50.B解析:將E-R圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式是數(shù)據(jù)庫邏輯設(shè)計的主要工作。從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體和聯(lián)系都可以表示成關(guān)系。

51.A本題考查的知識點(diǎn)是轉(zhuǎn)義字符。題目中的關(guān)鍵是八進(jìn)制101的十進(jìn)制是多少.八進(jìn)制的101轉(zhuǎn)換為十進(jìn)制為65,也就是字符A的ASCII。

52.CC.【解析】線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點(diǎn)沒有前件,最后一個結(jié)點(diǎn)沒有后件,其他結(jié)點(diǎn)有且只有一個前件和后件,所以選項(xiàng)C.是錯誤的。

53.C解析:共用體類型結(jié)構(gòu)的特點(diǎn)是使幾個不同的變量共占同一段內(nèi)存,但在每一瞬時只能存放其中一種,而不是同時存放幾種,共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。因此本題起作用的是成員b的值,所以程序打印輸出3。

54.C解析:此題考查的是標(biāo)識符的概念。標(biāo)識符是由字母、數(shù)字或下劃線組成的,而且第一個字符必須字母或下劃線,且標(biāo)識符區(qū)分大小寫。

55.D解析:這個題目的功能是實(shí)現(xiàn)兩個有序字符串,合并成一個新的有序的字符串。

56.C解析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

57.D

58.A

59.C解析:本題考核的是二維字符數(shù)組按行存放字符串、二維數(shù)組名作為函數(shù)的參數(shù)以及字符串的排序。主函數(shù)中定義了一個二維字符串?dāng)?shù)組p并按行賦值,調(diào)用f()函數(shù),將字符串從小到大排序,strcmp()函數(shù)的功能是對兩個字符串作向右逐個字符比較,直到出現(xiàn)不同的字符或遇到“\\0”為止。如果全部字符都相同,則認(rèn)為相等;若出現(xiàn)不同的字符.則以第一個不相同的字符的比較結(jié)果為準(zhǔn)。由此可知最小的字符串是“aabdfg”,排序后存放在p[0]中,最后在主函數(shù)中輸出p[0]的長度。

60.A解析:當(dāng)表達(dá)式為非0值時,執(zhí)行while語句中的內(nèi)嵌語句,可用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)。選項(xiàng)A不是死循環(huán),當(dāng)i=100時跳出循環(huán)。選項(xiàng)C為空循環(huán)語句。

61.A無符號整型變量a的值為g,二進(jìn)制表示為00001000,右移3位后為00000001,即十進(jìn)制的l,因此輸出1。

62.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向?yàn)橛捎蚁蜃?,即將:右?cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項(xiàng)A中運(yùn)算符%的運(yùn)算對象必須為整數(shù),而選項(xiàng)A中26.8不為整數(shù),故選項(xiàng)A不正確;選項(xiàng)B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項(xiàng)B不正確;選項(xiàng)D中也是將一個常量3賦值給一個常量,故選項(xiàng)D不正確;所以,4個選項(xiàng)中選項(xiàng)C符合題意。

63.B本題考查for循環(huán)。當(dāng)i=0時,開始for循環(huán),因?yàn)閿?shù)組的下標(biāo)是從0開始的,所以s[o]=0,不符合for循環(huán),不執(zhí)行下邊的語句,當(dāng)i=1時,繼續(xù)執(zhí)行if語句,if語句的功能是如果在小寫字母a~z,則記數(shù)n加1。所以本題結(jié)果為2。

64.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變

溫馨提示

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

評論

0/150

提交評論