2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年福建省龍巖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.最大容量為n的循環(huán)隊列,隊尾指針是rear,隊頭是front,則隊空的條件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

2.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序運行后的輸出結(jié)果是()。

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

3.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時間的是插入排序算法,最費時間的算法是()

A.堆排序B.快速排序C.插入排序D.歸并排序

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

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

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

A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列中的隊尾指針一定大于隊頭指針

D.循環(huán)隊列中的隊尾指針一定小于隊頭指針

6.設(shè)有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

7.軟件開發(fā)模型包括Ⅰ.瀑布模型Ⅱ.扇形模型Ⅲ.快速原型法模型Ⅳ.螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

8.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

9.設(shè)有定義:floata=2,b=4,h=3;以下c語言表達式中與代數(shù)式(a+B)h計算結(jié)果不相符的是()。A.(a+B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

10.具有n個頂點的完全有向圖的弧數(shù)為()。

A.n(n-1)/2B.n(n-1)C.n2D.n2-1

11.下列各排序法中,最壞情況下的時間復(fù)雜度最低的是()

A.希爾排序B.快速排序C.堆排序D.冒泡排序

12.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

13.在定義inta[3][2]以后,對a的引用正確的是()

A.a[0,0]B.a[3][0]C.a[2][2]D.a[0][0]

14.下列關(guān)于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且各前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處理的效率

16.樹的度為3,且有9個度為3的節(jié)點,5個度為1的節(jié)點,但沒有度為2的節(jié)點。則該樹中的葉子節(jié)點數(shù)為()。

A.18B.33C.19D.32

17.下列關(guān)于c語言用戶標識符的敘述中正確的是()。

A.用戶標識符中可以出現(xiàn)下劃線和中劃線(減號)

B.用戶標識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線

C.用戶標識符中可以出現(xiàn)下劃線,但不可以放在用戶標識符的開頭

D.用戶標識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用戶標識符的開頭

18.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈式存儲結(jié)構(gòu)

19.以下程序的輸出結(jié)果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}

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

20.若有說明chars1[30]="Thecity",s2[]="isbeautiful";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為Thecityisbeautiful\0

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

C.s1的內(nèi)容更新為Thecity\0isbeautiful\0

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

二、2.填空題(20題)21.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

22.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

23.下面fun函數(shù)的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位數(shù)放在數(shù)組中返回,二進制數(shù)的最低位放在下標為0的元素中,其他依此類推。請?zhí)羁铡?/p>

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

24.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

25.語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。

26.下列程序的運行結(jié)果是______。

#definePOW(r)(r)*(r)

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

27.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

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

則程序執(zhí)行后的x值為【】,y的值為【】。

28.當運行以下程序時,輸入abcd,程序的輸出結(jié)果是()。insert(charstr[]){inti;i=strlen(str);while(i>0){str[2*i]=str[i];str[2*i-1]='*';i--;}printf("%s\n",str);}main(){charstr[40];scanf("%s\n",str);insert(str);}

29.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

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

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

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

32.分析下列程序:

main()

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

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

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

}

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

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

34.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

35.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

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

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

38.以下條件表達式可計算:1+|a|的值,請?zhí)羁铡>=0?【】:【】

39.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個小于z”的表達式______。

40.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

三、1.選擇題(20題)41.以下語句中存在語法錯誤的是A.charss[6][20];ss[1]="right?";

B.charss[][20]={"right?"};

C.char*ss[6];ss[1]="right?";

D.char*ss[]={"right?"};

42.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是______。A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.可以是任意合法的表達式

43.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()

A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計

44.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

45.常采用的兩種存儲結(jié)構(gòu)是()。

A.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B.散列方法和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

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

B.intfun(double,int);

C.intfun(double*x,intn);

D.intfun(double*,int*);

47.若有chars[3][3]=={"AAA","BBB","CCC"};說明語句,則與它等價的語句是()。

A.char**s={"AAA","BBB","CCC"};

B.char*s[3]={"AAA","BBB","CCC"};

C.chars[][5]={"AAA","BBB","CCC"};

D.chars[][3]={"AAA","BBB","CCC"};

48.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

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

A.5.5B.55C.5.5D.55

50.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。

A.線性表B.隊列C.樹D.棧

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

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

52.以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()

A.棧B.線性表C.隊列D.二叉樹

53.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

54.以下程序中函數(shù)sort的功能是對a所指數(shù)組中的數(shù)據(jù)進行由大到小的排序:floatsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10),i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d",aa[i]);printf("\n");}程序運行后的輸出結(jié)果是______。

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

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

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

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

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

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

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

A.C程序由函數(shù)組成

B.C程序由主函數(shù)構(gòu)成

C.C程序由函數(shù)和過程構(gòu)成

D.在C程序中無論是整數(shù)還是實數(shù),都可以正確無誤的表示出來

57.有如下程序

main()

{intn=9;

while(n>6){n--;printf("%d",n);}}

該程序的輸出結(jié)果是

A.987B.876C.8765D.9876

58.有以下程序#include<stdio.h>voidWriteStr(char*fn,char*str){FILE*fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序運行后,文件t1.dat中的內(nèi)容是

A.startB.endC.startendD.endrt

59.有下面程序段

#include"stdio.h"

#include"string.h"

main()

{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};

chark[100]={0},*p=k;

inti;

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

{p=strcat(p,a[i]);}

i=strlen(p);

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

則程序段的輸出結(jié)果是

A.18B.19C.20D.21

60.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是

A.n,twoB.t,oneC.w,oneD.o,two

四、選擇題(20題)61.

62.

63.

64.

65.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

66.算法的空間復(fù)雜度是指()。

A.算法在執(zhí)行過程中所需要的計算機存儲空間

B.算法所處理的數(shù)據(jù)量

C.算法程序中的語句或指令條數(shù)

D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)

67.沒有以下語句

則Z的二進制值是()。

A.00010100B.00011011C.00011100D.00011000

68.有以下程序

#include"stdio.h"

voidfun(int*a,int*b,intc)

{c=*a+*b;}

main()

{inta[2]={6,9},c=0;

fun(a,a+1,&c);

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

}

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

A.6B.9

C.0D.15

69.

70.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)模式定義的語言是()。A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

71.

72.以下選項中,不合法的C語言用戶標識符是()。A.a-一bB.AaBeC.a_bD.一1

73.

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

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

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

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

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

76.在C語言中,運算對象必須是整型數(shù)的運算符是()。

A.%B.\C.%和\D.**

77.

78.下列關(guān)系表達式中,結(jié)果為“假”的是()。

A.(3+4)>6

B.(3!=4)>2

C.3<=4

D.

E.3

F.(3<4)=1

79.

80.以下敘述中正確的是

A.自定義的函數(shù)中一定要有return語句

B.自定義的函數(shù)中不可以有多個return語句

C.自定義的函數(shù)中可以沒有return語句,此時函數(shù)應(yīng)被定義為void類型

D.函數(shù)的return語句一定要帶有表達式

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:輸出M行M列整數(shù)方陣,然后求兩條對角線上的各元素之和并將其返回。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}

參考答案

1.B

2.D第1個if語句是單獨的一條語句,所以執(zhí)行完第1個if語句后,r的值仍為初值0。第2個if語句與后續(xù)的兩個elseif都是嵌套的,所以只會執(zhí)行其中的一個語句,即“if(b==2)r=2;”這條語句。故本題答案為D選項。

3.B

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

5.B在實際應(yīng)用中,隊列的順序存儲結(jié)構(gòu)一般采用循環(huán)隊列的形式。當循環(huán)隊列為滿或者為空時,隊尾指針=隊頭指針。本題答案為B選項。

6.A代數(shù)式“”的結(jié)果為小數(shù),轉(zhuǎn)為C語言的表達式必須是浮點數(shù)。A選項由于1.0為浮點數(shù),計算結(jié)果自動轉(zhuǎn)換為浮點數(shù)。選項B、C、D的表達式均為0,因此只有選項A正確。故本題答案為A選項。

7.C解析:軟件開發(fā)模型包括瀑布模型、快速原型法模型和螺旋模型。

8.D解析:A選項,將f賦值為0,結(jié)果得到0,因為0乘任何數(shù)都為0;B選項,i<n,計算的是(n-1)!,C選項將陷入死循環(huán)。

9.B解析:選項B中由于1和2都是整型,其1/2的運算結(jié)果為0,故整個表達式的值為0,所以它的結(jié)果和題目中要求的代數(shù)式的討算結(jié)果不相符,所以,4個選項中選項B符合題意。

10.B

11.C

12.C解析:對象的封裝性是指從外面看只能看到對象的外部特性;而對象的內(nèi)部,其處理能力的實行和內(nèi)部狀態(tài)對外是不可見的,是隱蔽的。

13.D

14.A解析:線性表的鏈式存儲結(jié)構(gòu)中的結(jié)點空間是動態(tài)生成的,它們在內(nèi)存中的地址可能是連續(xù)的,也可能是不連續(xù)的。

15.D數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。用不同的存儲結(jié)構(gòu),其處理的效率是不同的。

16.C設(shè)葉子結(jié)點數(shù)為〃,則該樹的結(jié)點數(shù)為n+9+5=n+\n14,根據(jù)樹中的結(jié)點數(shù)=樹中所有結(jié)點的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,則n=19。本題選擇C選項。

17.B解析:在C語言中,合法的標識符由字母,數(shù)字和下劃線組成(故選項A不正確),并且第一個字符必須為字母或者下劃線(故選項B和選項D不正確).所以,B選項為所選.

18.C

19.A解析:根據(jù)共用體的定義可知:共用體r的成員k和成員i[2]是共用同—段內(nèi)存空間,所以,當程序給r.i[0]賦值后,實際上,共用體成員k的值也確定了,為2。所以打印輸出的結(jié)果應(yīng)當為2。

20.D解析:該函數(shù)用來使兩個字符串連接成為一個字符串。strcat(str1,str2)將str2中的字符連接到str1的字符后面,并在最后加一個“\\0”。連接后新的字符串存放在strl中。注意:用于字符串處理的函數(shù)。

21.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運行后的輸出結(jié)果是3。

22.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。

23.b[k++]b[k++]解析:本題的考查點是do-while語句。形參x默認為十進制,要想將一個十進制的數(shù)轉(zhuǎn)換成二進制,可以使用整除求余法,題中的程序段也表明了將使用這種方法,將一個十進制的數(shù)轉(zhuǎn)換成二進制要用這個十進制數(shù)不斷的整除2,將每次的余數(shù)記錄下來,直至無法再除,此時,整除得到的第一個元素即為二進制數(shù)的最低位,其余依次類推,所以在程序段中的橫線處,應(yīng)當填寫“b[k++]”。

24.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組str1和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)strcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后將指針s和t都移到下一個元素。所以空白處應(yīng)該填*t++或*(t++)。

25.x+=1;

26.2525解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。

27.66

28.a*b*c*d*a*b*c*d*解析:本題考查的是函數(shù)與一個簡單的算法結(jié)合在一起的應(yīng)用。首先定義一個int型變量來存放字符串str的長度,執(zhí)行while條件語句。通過分析可知,字符串2*i項的值可由第i項的值得到;第2*i-1項直接賦值為*,i遞減,如此反復(fù)直到不滿足i>0的條件時,輸出運行后的字符串。

29.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。所以此題中輸入數(shù)據(jù)的形式是5.04,c=3。

30.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

31.繼承繼承

32.x=1y=0。x=1,y=0。解析:本題程序的主體部分是switch語句的嵌套結(jié)構(gòu),當變量a的值為0時,在第一層switch-case語句中,沒有匹配的case分支。因此,x和y的值沒有變化,仍然是1和0。

33.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。

34.154321,5,4,3,2解析:第一次調(diào)用函數(shù)f后aa[0]=5、aa[4]=1;第二次調(diào)用函數(shù)f后aa[1]=4、aa[4]=2;第三次調(diào)用函數(shù)f后aa[3]=3。正確答案為1,5,4,3,2。

35.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實過程是將相鄰兩個字符進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第—空應(yīng)填:str[i],第二空應(yīng)填str[i+1]最終打印輸出得到的字符串str,所以第三空應(yīng)填'%s',str。

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

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

38.1+a1-a1+a,1-a解析:考查條件運算符的使用。因為題目中求的是1+|a|的值,即1和a的絕對值之和,所以根據(jù)數(shù)學中求絕對值的規(guī)則;當a>=0時,絕對值取本身,當a<0時,絕對值取相反數(shù),再結(jié)合條件運算符的計算規(guī)則,可得到本題的答案為a>=0。

39.x<z‖y<zx<z‖y<z解析:本題考查邏輯運算符和邏輯表達式。x或y中至少有一個小于z,即x<z或y<z,是“或”的關(guān)系。

40.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

41.A數(shù)組定義后,不可以對數(shù)組整體賦值,s是一維數(shù)組,因ss[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy(ss[1],'right\'\');這樣的形式,而選項A)中對二維數(shù)組中的第“1維(相當于一個一維數(shù)組)賦值,是不可以的。選項B)和D)是定義時對數(shù)組初始化,這是可以的。選項C)中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個元素,這是可以的。

42.D只要是合法的表達式,都可以作為邏輯運算符的運算對象。因此可知選項A、B、C錯誤。故本題答案為D選項。

43.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。

44.C解析:定義結(jié)構(gòu)體類型的變量有如下幾種方法:

①定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體類型的變量,如:

stractaa

{…}tdl;

選項B)中將宏名AA用宏體structaa替換后,與該定義形式一樣,因此是正確的。在這一定義形式中,結(jié)構(gòu)體類型名aa是可以省略的,因此,D)項也是正確的。

②先定義結(jié)構(gòu)體類型,然后再定義結(jié)構(gòu)體類型的變量,形式如下:

structaa

{…};

strnctaatdl;

這種定義形式也可演變?yōu)椋合扔妙愋投x語句typedef將該結(jié)構(gòu)體類型定義成一個類型名AA,然后直接用該類型名AA定義一個結(jié)構(gòu)體變量(這時不再需要使用關(guān)鍵字struct)。因此選項A)正確。

45.AA。【解析】線性表的存儲通常分為兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。

\n

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

47.D

48.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

49.C解析:在計算(float)(a+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型,再進行求余運算,得1。

又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。

注意:類型轉(zhuǎn)換的一般規(guī)則是:低級類型服從高級類型,并進行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→long→float→double。

50.C解析:線性結(jié)構(gòu),是指數(shù)據(jù)元素只有一個直接前件元素和直接后件元素。線性表是線性結(jié)構(gòu)。棧和隊列是指對插入和刪除操作有特殊要求的線性表,樹是非線性結(jié)構(gòu)。

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

52.DD)【解析】二叉樹屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作;隊列可看作是插入在一端進行,刪除在另一端進行的線性表。

53.C

54.C解析:本題考查數(shù)組名作為函數(shù)形參的函數(shù)調(diào)用問題。數(shù)組名作函數(shù)形參是按地址傳遞,形參的改變可以傳回實參。sort函數(shù)的兩個形參中一個是數(shù)組名,sort函數(shù)的功能是對數(shù)組元素進行由大到小的排序。主函數(shù)調(diào)用sort函數(shù)時,實參為aa[3]元素的地址和整數(shù)5,即sort函數(shù)將對數(shù)組aa中的元素aa[3]、aa[4]、aa[5]、aa[6]、aa[7]5個元素的值進行由大到小的排序,排序后aa[3]=8、aa[4]=7、aa[5]=6、aa[6]=5、aa[5]=4,而數(shù)組aa中其余元素的值不變,因此結(jié)果是C。

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

56.A解析:本題涉及C語言最基本的兩個知識點:①C程序是由函數(shù)構(gòu)成的,有且僅有一個主函數(shù),也可以有其他的函數(shù);②整數(shù)在允許的范圍內(nèi)可以準確無誤的表示出來,但計算機的存儲能力有限,不能表示無限精度的實數(shù)。

57.B解析:該題目應(yīng)該根據(jù)循環(huán)體第一次和最后一次執(zhí)行時的輸出結(jié)果來決定哪一項是正確的。第一次進入循環(huán)時,n的值是9,循環(huán)體內(nèi),先經(jīng)過n--運算,n的值變?yōu)?,所以第一次的輸出值是8,由此可以排除選項A)和D)。由循環(huán)條件n>6可以知道,最后一次循環(huán)開始時,n的值應(yīng)該為7,所以最后一次執(zhí)行循環(huán)時,輸出為6,由此可以排除選項C)。

58.B解析:本題主要考查的是打開文件函數(shù)fopen().題目開始定義了一個函數(shù),該函數(shù)有兩個字符指針型參數(shù),其作用分別用來傳入文件名和文件內(nèi)容。函數(shù)首先定義一個文件指針印,然后使用fopen()函數(shù)打開參數(shù)fn所指定的文件。本題的關(guān)鍵就在于fopen()函數(shù)的第2個參數(shù),這個參數(shù)指定了文件打開的方式。'w'表示為寫而打開一個文本文件,如果文件不存在,則新建一個文件,否則將清空原有文件。接下來函數(shù)使用fputs()函數(shù)將參數(shù)str中的內(nèi)容寫入文件,最后調(diào)用fclose()函數(shù)關(guān)閉文件。在主函數(shù)中兩次調(diào)用該函數(shù),但寫入的是同一個文件,故只有最后一次寫入有效。所以應(yīng)該選擇B。

59.B解析:字符串連接函數(shù)strcat的調(diào)用形式如下:strcat(s1,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到s1所指的字符串后面,并自動覆蓋s1串末尾的尾標,函數(shù)返回s1的地址值。

60.C解析:本題考核的知識點是指針數(shù)組。本崽首先定義了一個有3個元素的指針數(shù)組s,并遭過賦值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通過賦值語句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C選項為所選。

61.A

62.C

63.C

64.B

65.D本題考查參數(shù)的宏替換。為避免二義性有些參數(shù)表達式必須加括號,否則在實參表達式替換時,會出現(xiàn)錯誤。例如x為(m+n)時替換A:m+n*m+n,所以選項D最符合條件。

66.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A項。

67.B本題考查兩個位運算符。按位異或運算

68.C函數(shù)的參數(shù)通常分為兩種:數(shù)值變量和指針變量。數(shù)值變量被函數(shù)調(diào)用后,函數(shù)內(nèi)的參數(shù)為該數(shù)值變量的副本。對副本的一切操作都不會影響到調(diào)用函數(shù)外原來的參數(shù)。指針變量在函數(shù)中傳遞的是對其存放地址的一份副本,該副本存放的地址與原來的指針所存的地址一致。在函數(shù)體內(nèi)修改指針存放的

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論