2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計_第1頁
2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計_第2頁
2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計_第3頁
2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計_第4頁
2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.算法的時間復(fù)雜度是指A.算法的執(zhí)行時間B.算法所處理的數(shù)據(jù)量C.算法程序中的語句或指令條數(shù)D.算法在執(zhí)行過程中所需要的基本運算次數(shù)

2.數(shù)據(jù)庫設(shè)計中,用E—R圖來描述信息結(jié)構(gòu)但不涉及信息在計算機中的表示,它屬于數(shù)據(jù)庫設(shè)計的()。

A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

3.有以下程序:#include<stdio.h>structS{inta,b;}data[2]=110,100,20,200};main(){structSp=data[1];printf(“%d\n”,++(p.a));}程序的運行結(jié)果是()。

A.10B.11C.20D.21

4.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

5.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分層次關(guān)系的數(shù)據(jù)D.元素間無聯(lián)系的數(shù)據(jù)

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

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

7.

8.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

9.恢復(fù)系統(tǒng)默認(rèn)菜單的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

10.以下敘述中正確的是A.局部變量說明為static存儲數(shù),其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

11.

有以下程序:

main

{intx=102,y=012;

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

}

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

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

12.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

13.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。

A.可能是2B.一定是2C.可能是1D.一定是1

14.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

15.對稱數(shù)組A中,每個元素的長度為4個字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲在從首地址SA開始的存儲器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

16.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y(tǒng))reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是______。A.3B.6C.8D.12

17.

18.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結(jié)果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

19.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)的敘述中,正確的是()。

A.數(shù)組是同類型值的集合

B.遞歸算法的程序結(jié)構(gòu)比迭代算法的程序結(jié)構(gòu)更為精煉

C.樹是一種線性結(jié)構(gòu)

D.用一維數(shù)組存儲二叉樹,總是以先序遍歷的順序存儲各結(jié)點

20.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結(jié)果是()。A.1,2B.3,4C.5,6D.123,456

二、2.填空題(20題)21.軟件工程學(xué)把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

22.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

23.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

24.______是數(shù)據(jù)庫應(yīng)用的核心。

25.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

26.請在以下程序第一行的下劃線處填寫適當(dāng)內(nèi)容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

27.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

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

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

28.下面程序的輸出結(jié)果是()。#include<stdio.h>main(){staticchara[]="china";char*ptr=a;while(*ptr){printf("%c",*ptr-32);ptr++;}}

29.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

30.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

31.下面程序的運行結(jié)果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

32.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

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

FILE*myf;longf1;

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

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

fclose(myf);

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

34.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓?fù)浣Y(jié)構(gòu)類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

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

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

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

36.下面程序的功能是根據(jù)公式e=1+1/1!+1/2!+1/3!+1/4!+...計算e的近似值,精度要求為10-5。請?zhí)羁铡?/p>

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

37.以下程序的功能是從鍵盤輸入若干學(xué)生的成績,并輸出最高成績和最低成績,當(dāng)輸入負(fù)數(shù)時結(jié)束。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(【】)

{if(x>amax)amax=x;

else

if(【】)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

38.下面程序的運行結(jié)果是()。

#include<stdio.h>

#defineSlZE12

main()

{chars[SIZE];inti;

for(i=0;i<SIZE;i++)s[i]='A'+i+32;

sub(s,5,SIZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

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

*(a+t2)=ch;

t1++;t2--;

}

}

39.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

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

main()

(inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:switch(");break;

case2:printf("!");break;

}

case0:switch(c==5)

{case0:printf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

三、1.選擇題(20題)41.對于基本類型機同的兩個指針變量之間,不能進行的動算是()

A.<B.=C.+D.-

42.設(shè)x、y、t均為int型變量,執(zhí)行以下語句后,y的值為______。x=y=3;t=++x||++y;

A.不定值B.4C.3D.1

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的

B.由于計算機存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上3種說法都不對

44.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

45.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。

A.235B.235C.2356D.2356

46.有語句定義共用體類型變量:union{inti;charch;floatf;}a,bc;上面定義的共用體變量a、b、c各占()字節(jié)。

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

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護是指修復(fù)程序中被破壞的指令

48.若有下列定義(設(shè)int類型變量占2個字節(jié)):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結(jié)果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

49.有以下程序:main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=O)continue;k--;}printf("%d,%d\n",k,n);}程序運行后的輸出結(jié)果是()。

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

50.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain()inta[]={2,3,4,5},k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}

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

51.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序易讀性

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

A.PADB.PFDC.N-SD.DFD

53.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

54.有如下程序main(){intx=3;do{prinff("%d",x--);}while(!x);}該程序的執(zhí)行結(jié)果是_____。

A.321B.3C.不輸出任何內(nèi)容D.陷入死循環(huán)

55.請讀程序:#include<stdio.h>main(){floax,y;scanf("%f",&x);if(x<0.0)y=0.0;elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}若運行時從鍵盤上輸入2.0<CR>(<CR>表示回車),則該程序的輸出結(jié)果是()

A.0B.0.25C.0.5D.1

56.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B.文件由二進制數(shù)據(jù)序列組成,C語言只能讀寫二進制文件

C.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件

D.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件

57.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序運行后的輸出結(jié)果是

A.0,0B.0,1C.1,0D.1,1

58.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運行階段得到初值0

59.有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');執(zhí)行該程序段后,x的值為

A.TRUEB.FALSEC.0D.1

60.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

四、選擇題(20題)61.在數(shù)據(jù)管理技術(shù)的發(fā)展過程中,先后經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)管理階段。其中數(shù)據(jù)獨立性最高的階段是

A.?dāng)?shù)據(jù)庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.?dāng)?shù)據(jù)項管理

62.下列關(guān)于數(shù)據(jù)流圖的描述正確的是()。

A.數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的工具

B.數(shù)據(jù)流圖間接支持系統(tǒng)的功能建模

C.數(shù)據(jù)流圖中帶箭頭的線段表示控制流

D.數(shù)據(jù)流圖是軟件詳細(xì)設(shè)計的工具

63.有如下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intm;

m=(*a+*b)*(*a+*b);

m+=(*a-*b)*(*a-*b);

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

main()

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

fun(x,y);}

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

A.120B.121

C.122D.123

64.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如下圖所示的結(jié)點:

則以下選項中,可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是

A.(*p).next=(*q).next;free(p);B.p=q->next;free(q);

C.p=q;free(q);D.p->next=q->next;free(q);

65.

66.若i和k都是int類型變量,有以下for語句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是()。

A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)

67.如果intC=3,d=4,k=0,下列描述正確的是()。A.c>d!=k和c>(d!=k)的執(zhí)行順序是一樣的

B.c&&d>k的結(jié)果為假

C.c||(d=k)執(zhí)行后d的值為0

D.!c!=(d!=k)表達(dá)式的值為1

68.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

69.有以下程序

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

intx=10,y=10;

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

A.1010B.99C.910D.109

71.若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的c語言表達(dá)式是()。

72.下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是()。

A.使用順序、選擇和重復(fù)(循環(huán).三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

73.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

74.

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

A.5.5B.55C.5.500000D.55.00000

76.有以下程序:

i

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

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

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

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

78.有以下程序:

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

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

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

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

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

79.下列關(guān)于結(jié)構(gòu)化設(shè)計原則的描述,錯誤的是

A.在塊和進程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實有害,應(yīng)該避免使用GOTO語句

B.程序設(shè)計時應(yīng)該自頂向下,逐步求精

C.程序設(shè)計時,應(yīng)該將復(fù)雜問題進行模塊化,就是將程序設(shè)計的總目標(biāo)分解為若干個分目標(biāo),再進一步分解為具體的小目標(biāo)

D.在進行程序設(shè)計時,應(yīng)該盡量在一行寫一條語句,盡量做到效率第一,清晰第二

80.某循環(huán)隊列的存儲空間為Q(1:m),初始狀態(tài)為front=rear=m?,F(xiàn)經(jīng)過一系列的入隊操作和退隊操作后,front=m一1,real"=m,則該循環(huán)隊列中的元素個數(shù)為()。

A.m一1B.1C.mD.0

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

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(char*str),其功能是:將字符串str中所有下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入字符串:“thankyou6verymuch”,則應(yīng)輸出:“TbAnKYoU6vErYMuCh”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.DD。【解析】算法的時間復(fù)雜度是指算法需要消耗的時間資源。一般來說,計算機算法是問題規(guī)模。09函數(shù)fin),算法的時間復(fù)雜度也因此記做T(n)=O(f(n))。因此,問題的規(guī)模n越大,算法執(zhí)行的時間的增長率與f(n)的增長率正相關(guān),稱作漸進時間復(fù)雜度(AsymptoticTimeComplexity)。簡單來說就是算法在執(zhí)行過程中所需要的基本運算次數(shù)。

2.CC?!窘馕觥縀—R(Entity—Relationship)圖為實體一聯(lián)系圖,提供了表示實體型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型。

3.D聲明data是結(jié)構(gòu)體S的數(shù)組,初始化data[0].a=10,data[0].b=100,data[l].a=20,data[1].b=200。主函數(shù)中“p=data[1];”,即p.a=data[1].a,p.b=data[1].b,執(zhí)行語句“printf(“%d\\n”,++(p.a));”。輸出時,p.a先增1再輸出,p.a=data[1].a=20,先增1等于21。故本題答案為D選項。

4.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調(diào)用時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值,而對自動變量賦初值,不是在編譯時進行的,而在函數(shù)調(diào)用時進行,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調(diào)函數(shù)fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調(diào)用函數(shù)fun時,d初值為5,p由主函數(shù)傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它仍保留d=6。再次調(diào)用fun函數(shù),d的初值為6,而由主函數(shù)傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數(shù)。

5.C

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

7.D

8.C解析:選項A的意思是:在x>O情況下,y為1,否則,在x=O時,y為0,剩下x<O時,y為-1,滿足本題中函數(shù)的要求。選項B描述的意思是:初始化y的值為0,在x>O時,給y重新賦值為1,否則,在x<O時,給y重新賦值為-1,滿足本題中函數(shù)的要求。選項C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時,y為-1;剩下的x<O時,y為0。可見答案C實現(xiàn)的結(jié)果不是給定的表達(dá)式。選項D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個選項中C為所選。

9.BB。【解析】考查菜單。在菜單中恢復(fù)系統(tǒng)菜單用的是SETSYSMENUTODEFAULT。所以答案選擇B。

10.A解析:全局變量說明為static存儲類,其生命周期將得到延長,但作用域不能被擴大;static存儲類變量在未賦初值時,是有默認(rèn)值的,形參中的存儲類說明符與局部變量完全相同。

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

12.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a=1>0,此條件成立,又因為是進行邏輯或運算,在已知其中一個運算對象為真的情況下,不必判斷另外一個運算符的真假,即不進行++b操作,就可以直接得出整個表達(dá)式的值為邏輯1,執(zhí)行下列的++c。

13.A

14.C輸入數(shù)據(jù)的格式必須與scanf的格式控制字符串完全匹配。函數(shù)中非格式字符需要原樣輸入,所以輸入時必須在3和5之間輸入“;”。故本題答案為C選項。

15.B

16.B解析:在主函數(shù)中,第—次調(diào)用fun函數(shù),將變量b,c的值傳給形參x,y,在fun()函數(shù)中執(zhí)行if語句,判斷b和c的值是否相等,由于在主函數(shù)中賦初值b=5,c=6,所以判斷條件不滿足,執(zhí)行else語句,返回表達(dá)式(x+y)/2的值,即:(5+6)/2,因為參數(shù)的類型都為int型,所以結(jié)果也為整型:5,第二次調(diào)用時8和5也不相等,所以返回值為6,因此,選項B是正確的。

17.D

18.A本題考查簡單的賦值運算,在程序中c=(a-=am5),先算括號中的a-=a-5=5,所以c=5,再計算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選擇A。

19.B

20.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

21.生命期生命期解析:軟件的生存周期是軟件工程最基本的重要概念。軟件產(chǎn)品和其他產(chǎn)品的生產(chǎn)一樣,都要經(jīng)過分析、設(shè)計、制造、檢測和運行使用幾個階段。通常,把軟件從開始研制(形成概念)到最終軟件被廢棄這整個過程稱為軟件的生命期。

22.yearleap=1leap

23.封裝性封裝性解析:對象具有下列5個基本特點:①標(biāo)識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

24.數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計

25.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。

26.doublemax或externdoublemaxdoublemax或externdoublemax解析:本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。

27.bar[i]bar[i]解析:fun函數(shù)中的內(nèi)層for循環(huán),求出了每一行中的最大值x,內(nèi)循環(huán)結(jié)束后就需要把最大值放在存儲每行最大值的數(shù)組bar[i]中,因此應(yīng)填bar[i]。

28.CHINA

29.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

30.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個表達(dá)式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。

31.1-21,-2解析:題中外層while循環(huán)的循環(huán)條件是y--!=-1,即y>=0;內(nèi)層do…while循環(huán)的循環(huán)條件是y--即y-->0,y>=1。注意:break和continue語句在循體中的作用。

32.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。

33.fopenfopen解析:C語言中的文件分為:ASCII文件與二進制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。

34.2004170320041703解析:由于參數(shù)傳遞只是將實參的值復(fù)制到形參中,形參與實參擁有各自的存儲空間,因此形參的改變并不影響實參,所以并不改變s的情況。

35.解析:程序通過語句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”將結(jié)構(gòu)體變量s中各結(jié)點連接成了一個循環(huán)鏈表,即最后一個結(jié)點的指針域指向了頭結(jié)點,整個鏈表形成了一個環(huán),并通過語句“p=s;q=p->next;r=q->next;”將結(jié)構(gòu)體指針變量p、q、r指向了各結(jié)點。

36.t>=le-5;t=t/n;

37.x>=0x<aminx>=0x<amin解析:本題先從鍵盤接受數(shù)值,并分別賦給amax(用于保存最高成績)和amin(用于保存最低成績),然后通過while循環(huán)控制是否結(jié)束輸入,并且通過if語句來給amax和amin賦值。

38.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1共12個字母,函數(shù)sub(char*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。

39.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計的任務(wù)是將概念模型進一步轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設(shè)計的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。

40.#&#&解析:剛開始時,switch后面的表達(dá)式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達(dá)式b<0值為0,沒有與其匹配的語句,返回外層,因為外層沒有break語句,順序執(zhí)行case0后面的switch語句,表達(dá)式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因為外層沒有break語句,順序執(zhí)行default后的語句,輸出&。

41.C

42.C

43.D解析:本題考查數(shù)據(jù)結(jié)構(gòu)的基本知識。數(shù)據(jù)之間的相耳關(guān)系稱為邏輯結(jié)構(gòu)。通常分為4類基本邏輯結(jié)構(gòu),即集合、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu)。存儲結(jié)構(gòu)是邏輯結(jié)構(gòu)在存儲器中的映象,它包含數(shù)據(jù)元素的映象和關(guān)系的映象。存儲結(jié)構(gòu)在計算機中有兩種,即順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。順序存儲結(jié)構(gòu)是把數(shù)據(jù)元素存儲在一塊連續(xù)地址空間的內(nèi)存中;鏈?zhǔn)酱鎯Y(jié)構(gòu)是使用指針把相互直接關(guān)聯(lián)的節(jié)點鏈接起來。因此,這兩種存儲結(jié)構(gòu)都是線性的??梢?,邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)不是一一對應(yīng)的。因此,選項A和選項B的說法都是錯誤的。無論數(shù)據(jù)的邏輯結(jié)構(gòu)是線性的還是非線性的,只能選擇順序存儲結(jié)構(gòu)或鏈?zhǔn)酱鎯Y(jié)構(gòu)來實現(xiàn)存儲。程序設(shè)計語言中,數(shù)組是內(nèi)存中一段連續(xù)的地址空間,可看作是順序存儲結(jié)構(gòu)。可以用數(shù)組來實現(xiàn)樹型邏輯結(jié)構(gòu)的存儲,比如二叉樹。因此,選項C的說法是錯誤的。

44.D解析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

45.A解析:do-while語句的特點是先執(zhí)行循環(huán)體,然后再判斷循環(huán)條件是否成立,當(dāng)循環(huán)條件的值為0時循環(huán)結(jié)束。本題中執(zhí)行switch語句,尋找與5匹配的case5分支,沒有尋找到則執(zhí)行default后的語句,n=0,k的值變?yōu)?,繼續(xù)執(zhí)行switch語句,尋找與4匹配的case4分支,找到后開始執(zhí)行其后的語句“n+=2;k--;”,n的值為2,k的值變?yōu)?,遇到break語句跳出該switch語句體。執(zhí)行print語句輸出2;此時n=2,k=3依舊滿足do-while循環(huán)條件,將用同樣的方式再次執(zhí)行switch語句,直到n=5時不再滿足do-while循環(huán)條件退出所有的循環(huán)。

46.A

47.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學(xué)的目的就在于提高軟件的可維護性,同時也要設(shè)法降低維護的代價。

軟件維護通常有以下四類;

①為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;

②為適應(yīng)環(huán)境變化而進行的適應(yīng)性維護;

③為改進原有軟件而進行的完善性維護;

④為將來的可維護和可靠而進行的預(yù)防性維護。

軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

48.A解析:本題考查printf函數(shù)的格式?!?5.2f”格式符中的“f”表示以帶小數(shù)點的形式輸出單精度或者雙精度數(shù):“5”表示指定數(shù)據(jù)輸出寬度為5;“.2”表示指定輸出數(shù)據(jù)小數(shù)位占2位數(shù),并對截去的第一位小數(shù)做四舍五入處理。

49.C解析:在本程序的for循環(huán)中,用到了一個continue語句,continue語句的作用是停止本次循環(huán),不執(zhí)行循環(huán)體內(nèi)continue語句后面的其他語句,繼續(xù)下次循環(huán)的條件判斷。首先在for循環(huán)中n自加1(值變?yōu)?),然后執(zhí)行后面的if語句,由于if語句后面括號的表達(dá)式1%3!=0的值為真,程序執(zhí)行continue語句,回到for循環(huán)的開始部分,并且判斷for循環(huán)中的條件表達(dá)式(n<k)為真,重復(fù)執(zhí)行“n++;”語句,如此循環(huán)直到n=3時,if語句判定條件中表達(dá)式3%3!=0的值為假,程序執(zhí)行if語句后面的“k--;”語句,此時k的值為3,不滿足n<k,退出for循環(huán)。故最后的k和n的值為3和3,選項C符合題意。

50.A解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。

51.D結(jié)構(gòu)化程序設(shè)計由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,為設(shè)計一些較大的軟件打下了良好的基礎(chǔ)。

由于模塊相互獨立,因此,在設(shè)計其中一個模塊時,不會受到其他模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為可以充分利用現(xiàn)有的模塊作為積木式的擴展。

結(jié)構(gòu)化程序設(shè)計的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計方法和“單入口單出口”的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;“單入口單出口”的思想認(rèn)為一個復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序。

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

53.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達(dá)式b的值,當(dāng)a為假時,其值等于表達(dá)式c的值。第一個表達(dá)式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個表達(dá)式:m=4<y=3為假,所以返回y的值,即m=y=3。

54.B解析:本題x賦初值為3,當(dāng)執(zhí)行printf('%d',x-);時,由于x-的作用是先運算x,再將x的值減1,所以,printf輸出的x值為3,等輸出后,x的值減1變?yōu)?,繼續(xù)執(zhí)行,判斷條件!x為假,循環(huán)只被執(zhí)行一次。

55.C

56.D解析:C語言把文件看成是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進制文件。ASCII文件又稱文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。

57.C解析:本題考查“邏輯或”運算的特例。本題中執(zhí)行語句k=(n=b>a)||(m=a<b)時,首先計算表達(dá)式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表達(dá)式(n=b>a)||(m=a<b)的值為真,不再執(zhí)行表達(dá)式m=a<b,故執(zhí)行完表達(dá)式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

58.C本題主要考查數(shù)組的定義及初始化。在對數(shù)組進行定義和初始化時,需要注意以下事項。

(1)數(shù)組的內(nèi)存空間在編譯時確定,定義數(shù)組時的n值只能使用常量,不能使用變量。

(2)定義數(shù)組時可以不標(biāo)明數(shù)組元素的個數(shù),而是通過賦初值的方式確定,編譯系統(tǒng)將自動計算花括號內(nèi)的數(shù)據(jù)數(shù)量作為數(shù)組的元素個數(shù)。

(3)數(shù)組初始化時,當(dāng)初值的個數(shù)小于整型常量n時,編譯系統(tǒng)會自動補0。一旦給定初值數(shù)超過n,編譯系統(tǒng)將報錯。

(4)初始化數(shù)組的元素類型,必須與定義數(shù)組時的類型一致。

(5)數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能更改。

(6)除字符數(shù)組外,不能直接用數(shù)組名對數(shù)組進行整體輸入或輸出。

本題中定義了一個3行4列的數(shù)組,但沒有對其進行賦初值操作,可能我們會想在系統(tǒng)編譯時會自動補0,這只是在初值個數(shù)小于數(shù)組定義大小的情況下的操作,如果沒有進行賦初值操作,數(shù)組中的元素值是不能被確定的。因此,本題答案選C。

59.D解析:在C語言中,邏輯運算符有4個,它們分別是:!(邏輯非)、||(邏輯或)、&&及(邏輯與)、^(異或)。在位運算里面還有&(位與)、|(位或)的運算。本題考查邏輯與運算符的用法,在表達(dá)式x=(a&&b)&&(c<'B');中,先判斷a&&b條件,邏輯與條件的兩邊都要保證為1,即a和b都成立,當(dāng)然c<'B'是成立的,顯然,該表達(dá)式的值為1。

60.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

61.A本題考查數(shù)據(jù)庫中的數(shù)據(jù)管理技術(shù)相關(guān)知識。

數(shù)據(jù)管理技術(shù)的發(fā)展大體可以歸為三個階段:人工管理、文件系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)。

人工管理階段:計算機主要用于科學(xué)計算。外部存儲器只有磁帶、卡片和紙帶等還沒有磁盤等直接存取存儲設(shè)備。軟件只有匯編語言,尚無數(shù)據(jù)管理方面的軟件。數(shù)據(jù)處理方式基本是批處理。這個階段有幾個特點:數(shù)據(jù)不保存;應(yīng)用程序中包含自己要用到的全部數(shù)據(jù);數(shù)據(jù)不共享;數(shù)據(jù)不具有獨立性。

文件系統(tǒng)階段:計算機不僅用于科學(xué)計算,還用在信息管理方面。隨著數(shù)據(jù)量的增加,數(shù)據(jù)的存儲、檢索和維護問題成為緊迫的需要,數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)管理技術(shù)迅速發(fā)展起來。此時,外部存儲器已有磁盤、磁鼓等直接存取的存儲設(shè)備。軟件領(lǐng)域出現(xiàn)了操作系統(tǒng)和高級軟件。操作系統(tǒng)中的文件系統(tǒng)是專門管理外存的數(shù)據(jù)管理軟件,文件是操作系統(tǒng)管理的重要資源之一。數(shù)據(jù)處理方式有批處理,也有聯(lián)機實時處理。在文件系統(tǒng)支持下,數(shù)據(jù)開始從程序中逐步獨立出來,數(shù)據(jù)文件可以獨立、長期地存儲,數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)有了一定的區(qū)別。數(shù)據(jù)的邏輯結(jié)構(gòu)是指呈現(xiàn)在用戶面前的數(shù)據(jù)結(jié)構(gòu)形式。數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計算機存儲設(shè)備上的實際存儲結(jié)構(gòu)。文件系統(tǒng)對計算機數(shù)據(jù)管理能力的提高雖然起了很大的作用,但是仍然存在許多根本性問題。主要表現(xiàn)在:數(shù)據(jù)文件是為滿足特定業(yè)務(wù)領(lǐng)域某一部門的專門需要而設(shè)計,數(shù)據(jù)和程序相互依賴,數(shù)據(jù)缺乏足夠的獨立性;數(shù)據(jù)沒有集中管理的機制,其安全性和完整性無法保障,數(shù)據(jù)維護業(yè)務(wù)仍然由應(yīng)用程序來承擔(dān);數(shù)據(jù)冗余度大;對現(xiàn)有數(shù)據(jù)文件不易擴充,不易移植,難以通過增、刪數(shù)據(jù)項來適應(yīng)新的應(yīng)用要求;各數(shù)據(jù)文件之間缺乏聯(lián)系,互相獨立,不能反映現(xiàn)實世界中事物之間的聯(lián)系。文件系統(tǒng)管理數(shù)據(jù)有如下特點:數(shù)據(jù)可以長期保存;由文件系統(tǒng)管理數(shù)據(jù);數(shù)據(jù)共享性差,冗余度大;數(shù)據(jù)獨立性差。

數(shù)據(jù)庫管理系統(tǒng)階段:數(shù)據(jù)管理技術(shù)進入數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的缺陷,提供了對數(shù)據(jù)更高級、更有效的管理。這個階段的程序和數(shù)據(jù)的聯(lián)系通過數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn)(DBMS)。數(shù)據(jù)庫系統(tǒng)階段的數(shù)據(jù)管理具有以下特點:

采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)模型不僅描述數(shù)據(jù)本身的特征,還要描述數(shù)據(jù)之間的聯(lián)系,這種聯(lián)系通過存取路徑實現(xiàn)。通過所有的存取路徑表示自然的數(shù)據(jù)聯(lián)系是數(shù)據(jù)庫與傳統(tǒng)文件的根本區(qū)別。這樣,數(shù)據(jù)不再面向特定的某個或多個應(yīng)用,而是面向整個應(yīng)用系統(tǒng)。數(shù)據(jù)冗余明顯減少,實現(xiàn)了數(shù)據(jù)共享。

有較高的數(shù)據(jù)獨立性。數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的差別可以很大。用戶以簡單的邏輯結(jié)構(gòu)操作數(shù)據(jù)而無須考慮數(shù)據(jù)的物理結(jié)構(gòu)。數(shù)據(jù)庫的結(jié)構(gòu)分成用戶的局部邏輯結(jié)構(gòu)、數(shù)據(jù)庫的整體邏輯結(jié)構(gòu)和物理結(jié)構(gòu)三級。用戶(應(yīng)用程序或終端用戶)的數(shù)據(jù)和外存中的數(shù)據(jù)之間轉(zhuǎn)換由數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)。

數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口。用戶可以使用查詢語言或終端命令操作數(shù)據(jù)庫,也可以用程序方式(如用C語言和數(shù)據(jù)庫語言聯(lián)合編制的程序)操作數(shù)據(jù)庫。

數(shù)據(jù)庫系統(tǒng)提供了數(shù)據(jù)控制功能,增加了系統(tǒng)的靈活性。對數(shù)據(jù)的操作不一定以記錄為單位,可以以數(shù)據(jù)項為單位。

62.A\n數(shù)據(jù)流圖是結(jié)構(gòu)化方法的需求分析工具,是描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)的功能建模。數(shù)據(jù)流圖中帶箭頭的線段表示數(shù)據(jù)流。

\n

63.C在本題程序中,首先定義了一個fun函數(shù),函數(shù)帶有兩個指針變量的形參,在程序體中,定義一個整型變量m用來保存計算的結(jié)果,然后執(zhí)行第一條運算語句,并將運算結(jié)果保存至變量m,然后執(zhí)行第二條運算語句,最后輸出程序m的值。

在主函數(shù)中,首先定義兩個整型變量a和b,并分別賦值為5和6,定義兩個指針變量x和y,分別指向變量a和b。然后調(diào)用函數(shù)fun,調(diào)用函數(shù)傳遞的參數(shù)為x和y,因此,執(zhí)行m=(*a+*b)*(*a+*b)=(5+6)*(5+6)=121,然后執(zhí)行m+=(*a-*b)*(*a-*b)等價于m=m+(-1)*(-1)=121+1=122。因此,本題程序的輸出結(jié)果為122,答案選C。

64.D題目中有兩個分別指向結(jié)點的指針p和q,其中p->next=q,q->next->data=C。要將q結(jié)點從鏈表中刪除,只要將指針p所指結(jié)點的next域指向q指針?biāo)附Y(jié)點的下一個結(jié)點,即令p->next=q->next,也可以表示為(*p).next=(*q).next。操作完成后,便將q指針?biāo)附Y(jié)點從鏈表中刪除,隨后將該結(jié)點釋放即可。

65.B

66.D此題考查的是基本的循環(huán),答案為D。

67.DA)中>的優(yōu)先級大于!=,所以執(zhí)行順序不一樣;B)中c和d>k都為真,所以整個表達(dá)式為真;C)中不用執(zhí)行d=k,因為c就可以確定這個表達(dá)式的值。

68.C結(jié)構(gòu)體不能通過結(jié)構(gòu)體名字整體賦值,通過結(jié)構(gòu)體名.成員名的方式賦值。所以C選項錯誤。

69.A本題考查的是break語句。d0…while循環(huán)是“先執(zhí)行,后判斷”,所以無論條件如何,它都至少會執(zhí)行一遍。程序首先初始化變量i為5,然后進A.d0…while循環(huán)體,首先判斷(i%3==1),因為5%3=2,所以if條件不滿足,跳過下面的if語句,執(zhí)行i++,i變?yōu)?。第l遍循環(huán)結(jié)束,判斷(i!=0)為真,繼續(xù)循環(huán)?,F(xiàn)在i%3--6%3--0,所以if語句還是不被執(zhí)行,繼續(xù)i++,i變?yōu)?,仍然滿足(if-0),繼續(xù)循環(huán)。第3遍循環(huán)i%3=7%3=1,滿足條件(i%3==1),繼續(xù)判斷條件i%5==2成立,即輸出*7,然后執(zhí)行break語句跳出循環(huán)。錯誤.

70.D

71.AB)選項中函數(shù)pow(x,e)錯誤,應(yīng)該直接使用exp(x)i垂i數(shù)。c)選項中函數(shù)abs(n^x+e^x)錯誤,應(yīng)該使用fabs()返回浮點數(shù)的絕對值。D)選項中pow(x,n)參數(shù)順序錯誤。本題正確答案為A)。

72.A解析:結(jié)構(gòu)化程序設(shè)計方法的四條原則是:①自頂向下;②逐步求精;③模塊化;④限制使用goto語句?!白皂斚蛳隆笔侵冈诔绦蛟O(shè)計時,先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)?!爸鸩角缶笔侵笇?fù)雜問題應(yīng)設(shè)計一些子目標(biāo)作過渡,逐步細(xì)節(jié)化。“模塊化”是指一個復(fù)雜問題由若干稍簡單的問題構(gòu)成;解決這個復(fù)雜問題的程序,也應(yīng)由若干稍簡單問題的小程序組成。

73.AB)選項和C)選項中,REC后不應(yīng)加分號,D)選項,沒有typedef,REC能作為類型名。所以答案選擇A):

74.C

75.C在計算(float)(a4-b)/2時,由于通過強制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉(zhuǎn)換成int型,再進行求余運算,結(jié)果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級類型從高級類型,并進行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。

76.C本題考查結(jié)構(gòu)體數(shù)組的相關(guān)操作,dt為結(jié)構(gòu)體數(shù)組,那么指針P指向了結(jié)構(gòu)體數(shù)組的一個元素,所以P一>x為1,P一>Y為2,結(jié)果為2,3。選項C正確。

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

78.A函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化,所以數(shù)組c中的元素的值并沒有變化,選擇A。

79.D在結(jié)構(gòu)化程序設(shè)計過程中,我們可以根據(jù)下面的原則進行:

(1)使用語言中的順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等有限的基本控制結(jié)構(gòu)表示程序邏輯。

(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個入口和一個出口。

(3)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)。

(4)語言中沒有的控制結(jié)構(gòu)可以用一段等價的程序段來模擬,但是要求程序段在整個系統(tǒng)中前后一致。

(5)嚴(yán)格限制GOTO語句。

(6)在編寫程序時,強調(diào)使用幾種基本的控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。

(7)在程序設(shè)計過程中,盡量采用自頂向下和逐步細(xì)化的原則,由粗到細(xì),一步步展開。把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進而翻譯成一系列用某種程序設(shè)計語言寫成的源程序。

總之,在結(jié)構(gòu)化程序設(shè)計的過程中,要將清晰放在第一位。因此,本題中的答案D是不正確的。

80.B循環(huán)隊列長度為m,由初始狀態(tài)為front=real'=ITl可知此時循環(huán)隊列為空。入隊運算時,首先隊尾指針(rear)進1(即rear+I),然后在lear指針指向的位置插入新元素。特別的,當(dāng)隊尾指針lear=m+1時,置l'ear=1。退隊運算時,排頭指針(front)進1(即front+1),然后刪除front指針指向的位置上的元素,當(dāng)排頭指針front=m+1時,置front=1。從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,則該循環(huán)隊列中的元素個數(shù)為m一(m一1)=1。故選擇B選項。

81.(1)錯誤:intproc(10ngS,long*t)

正確:voidproc(10ngs,long*t)

(2)錯誤:s=s%0100;

正確:s=s/100;

【解析】由主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc()沒有返回值,因此,“intproc(longs,long*t)”應(yīng)改為“voidproc(longs,long*t)”。題目要求是把奇數(shù)位上的數(shù)找出構(gòu)成

一個新的數(shù)組,因此把“s=s%100;”改為“s=s/100;”。

82.

【解析】要將字符串str中下標(biāo)為偶數(shù)位置上的字符轉(zhuǎn)化為大寫字母,首先應(yīng)該判斷字符串str中下標(biāo)為偶數(shù)位置上的字符是否為小寫字母,若是將其轉(zhuǎn)化為大寫字母.若不是不做任何變化。

2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.算法的時間復(fù)雜度是指A.算法的執(zhí)行時間B.算法所處理的數(shù)據(jù)量C.算法程序中的語句或指令條數(shù)D.算法在執(zhí)行過程中所需要的基本運算次數(shù)

2.數(shù)據(jù)庫設(shè)計中,用E—R圖來描述信息結(jié)構(gòu)但不涉及信息在計算機中的表示,它屬于數(shù)據(jù)庫設(shè)計的()。

A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

3.有以下程序:#include<stdio.h>structS{inta,b;}data[2]=110,100,20,200};main(){structSp=data[1];printf(“%d\n”,++(p.a));}程序的運行結(jié)果是()。

A.10B.11C.20D.21

4.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

5.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分層次關(guān)系的數(shù)據(jù)D.元素間無聯(lián)系的數(shù)據(jù)

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

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

7.

8.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

9.恢復(fù)系統(tǒng)默認(rèn)菜單的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

10.以下敘述中正確的是A.局部變量說明為static存儲數(shù),其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

11.

有以下程序:

main

{intx=102,y=012;

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

}

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

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

12.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

13.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。

A.可能是2B.一定是2C.可能是1D.一定是1

14.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

15.對稱數(shù)組A中,每個元素的長度為4個字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲在從首地址SA開始的存儲器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

16.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y(tǒng))reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是______。A.3B.6C.8D.12

17.

18.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結(jié)果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

19.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)的敘述中,正確的是()。

A.數(shù)組是同類型值的集合

B.遞歸算法的程序結(jié)構(gòu)比迭代算法的程序結(jié)構(gòu)更為精煉

C.樹是一種線性結(jié)構(gòu)

D.用一維數(shù)組存儲二叉樹,總是以先序遍歷的順序存儲各結(jié)點

20.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結(jié)果是()。A.1,2B.3,4C.5,6D.123,456

二、2.填空題(20題)21.軟件工程學(xué)把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

22.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

23.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

24.______是數(shù)據(jù)庫應(yīng)用的核心。

25.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

26.請在以下程序第一行的下劃線處填寫適當(dāng)內(nèi)容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

27.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

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

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

28.下面程序的輸出結(jié)果是()。#include<stdio.h>main(){staticchara[]="china";char*ptr=a;while(*ptr){printf("%c",*ptr-32);ptr++;}}

29.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

30.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

31.下面程序的運行結(jié)果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

32.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

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

FILE*myf;longf1;

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

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

fclose(myf);

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

34.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓?fù)浣Y(jié)構(gòu)類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

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

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

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

36.下面程序的功能是根據(jù)公式e=1+1/1!+1/2!+1/3!+1/4!+...計算e的近似值,精度要求為10-5。請?zhí)羁铡?/p>

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

37.以下程序的功能是從鍵盤輸入若干學(xué)生的成績,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論