2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計_第1頁
2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計_第2頁
2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計_第3頁
2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計_第4頁
2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

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

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

3.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。

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

4.

5.

6.

7.

有以下程序:

main()

{intk=5,n=0;

do

{switch(k)

{case1:

case3:n+=l;k--;break;

defalut:n=0;k--;

case2:

case4:n+=2;k--;break:

}

printf("%d",n);

}while(k>0&&n<5);

}

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

A.235B.0235C.02356D.2356

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

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

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

A.C語言程序必須要有return語句

B.C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義

C.C語言程序中,只有int類型的函數(shù)可以未經(jīng)聲明而出現(xiàn)在調(diào)用之后

D.C語言程序中,main()函數(shù)必須放在程序開始的部分

10.在說明語句:int*f();中,標識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

11.以下選項中關(guān)于C語言常量的敘述錯誤的是()。

A.所謂常量,是指在程序運行過程中,其值不能被改變的量

B.常量分為整型常量、實型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值常量

D.經(jīng)常被使用的變量可以定義成常量

12.若有定義語句:“charS[3][10],(*k)[3],*p;”,則以下賦值語句正確的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

13.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

14.微型計算機的運算器、控制器及內(nèi)存儲器組合在一起,稱之為()

A.ALUB.CPUC.MPUD.主機

15.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

16.面向?qū)ο蟮脑O計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念

17.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

18.以下程序的輸出結(jié)果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}

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

19.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

20.一個C語言程序總是從()開始執(zhí)行。

A.書寫順序的第一函數(shù)B.書寫順序的第一條執(zhí)行語句C.主函數(shù)main()D.不確定

二、2.填空題(20題)21.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)這3個階段,其中數(shù)據(jù)獨立性最高的階段是【】。

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

a=15;

b=0;

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

23.在對文件進行操作的過程中,若要求文件的位置指針重新指向文件的開頭,應當調(diào)用的函數(shù)是【】函數(shù)。

24.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。

25.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

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

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

main()

{

intp[7]={11,13,14,15,16,17,18);

inti=0,j=0;

while(i<7&&p[i]%2==1)

j+p[i++];

printf(“%d\n”j);

}

28.下列程序執(zhí)行后輸出的結(jié)果是【】。

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

printf("%d\n",++(p->x));

}

29.按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

30.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。

31.設有如下宏定義

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】,a,b);

32.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

33.以下程序中,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(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

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

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

}

}

34.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

35.下面程序的運行結(jié)果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

37.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

38.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z+0;

elseZ+=1;

primf(“%d\n",z);

}

40.若輸入tear、test、arj,則下列程序的運行結(jié)果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

三、1.選擇題(20題)41.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

42.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}執(zhí)行后的輸出結(jié)果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

43.下列程序的運行結(jié)果為()。

#include<stdio.h>

voidabc(char*str)

{inta,b,i,j;

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

if(str[i]!='a')

str[j++]=str[j];

str[j]='\0';

}

voidmain()

{charStr[]="abcdef';

abc(str);

printf("str[]=%s",str);

}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.下列程序輸出的結(jié)果是()。main(){inta;a=-4+4*5-6;printf("%d",a);a=4+4%5-6;printf("%d",a);a=-3+4%6/5;printf("%d",a);a=(7+6)%5/2;printf("%d",a);}

A.102-31B.10-221C.11-221D.10221

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

A.一個算法的空間復雜度大,則其時間復雜度也必定大

B.一個算法的空間復雜度大,則其時間復雜度必定小

C.一個算法的時間復雜度大,則其空間復雜度必定小

D.上述三種說法都不對

46.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

47.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

48.概要設計是軟件系統(tǒng)結(jié)構(gòu)的總體設計,以下選項中不屬于概要設計的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調(diào)用關(guān)系C.確定各個模塊的功能D.設計每個模塊的偽代碼

49.在嵌套使用if語句時,C語言規(guī)定else總是A.和之前與其具有相同縮進位置的if配對

B.和之前與其最近的if配對

C.和之前與其最近的且不帶else的if配對

D.和之前的第一個if配對

50.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。

A.inti=100;for(;;){i=i%10+1;if(i>10)break;}

B.while(1);

C.intk=0;do{++k;}while(k<=10);

D.ints=12;while(s);--s;

51.以下程序的輸出結(jié)果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b=a);}

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

52.以下程序的輸出結(jié)果是main(){charch[3][5];{“AAAA”,“BBB”,“CC”};printf(“\”%s“n”,ch[1]);}

A.“AAAA”B.“BBB”C.“BBBCC”D.“CC”

53.在下列語句中,正確的是()

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};str1=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

54.以下能正確定義且賦初值的語句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

55.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

56.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

57.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹結(jié)構(gòu)B.網(wǎng)結(jié)構(gòu)C.線性表D.二維表

58.以下程序段的輸出結(jié)果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出錯,無結(jié)果

59.設有以下定義:inta=0;doubleb=1.25;charc='A';#defined2則下面語句中錯誤的是()。

A.a++;B.b++;C.c++;D.d++;

60.C語占中,函數(shù)值類型的定義可以缺省,此時函數(shù)值的隱含類型是

A.voidB.intC.floatD.double

四、選擇題(20題)61.

62.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是()。

A.順序結(jié)構(gòu)B.分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.重復結(jié)構(gòu)

63.有以下程序(strcat函數(shù)用于連接兩個字符串):

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

A.U-KB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

64.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法需要的內(nèi)存空間

65.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

66.

下面程序輸出的是()。

main

{intt=l;fun(fun(t));}

fun(inth)

{staticinta[3]={1.2.3};

intk;

for(k=0;k<3;k++)a[k]+=a[k]-h;

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

printf("\n");

return(a[h]);}

A.1,2,3,1,5,9,

B.1,3,5,1,3,j,

C.1,3,5,0,4,8,

D.1,3。5,-1,3,7,

67.

68.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

69.

70.下列說法中不正確的是

A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)

B.在沒有聲明函數(shù)返回值類型的情況下,默認的函數(shù)返回值類型為int型

C.函數(shù)的類型可以是整型、實型、字符型,但不能是指針型

D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略

71.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。

A.可以是任意合法的表達式B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.只能是整數(shù)0或1

72.下列敘述中正確的是()。A.循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況

D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定

73.

74.

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

76.表達式:(im)((double)9/2)一9%2的值是()。

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

77.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運行時報錯,無法輸出B.54

C.96D.100

78.有以下程序:

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

A.10B.16C.6D.12

79.有以下程序

80.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:把從主函數(shù)中輸人的3個數(shù)。最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在C中。例如,若輸入的數(shù)為:55,12,34,輸出的結(jié)果應當是:a=55.0,b=34.0,c=12.0。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設計題(1題)82.輸出1—100之間不能被12整除的數(shù)。

參考答案

1.A

2.B

3.D

4.C

5.D

6.A

7.B

\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

\n

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

9.C

10.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

11.D此題考查的是常量和變量的定義,常量不是經(jīng)常使用的變量,而是一個確定的數(shù)值,所以答案選擇D。

12.C答案C的意思是*P指向數(shù)組的第一個值。

13.Dif語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。故本題答案為D選項。

14.D

15.D本題考查continue的用法,continue語句的作用是結(jié)束本次循環(huán),直接進行下次循環(huán)。所以在程序中,只有當a=10時,才退出循環(huán),故選擇D選項。

16.C\n面向?qū)ο蟮脑O計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應用領域的概念角度去思考。

\n

17.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機的、不可重復的過程,它用于隔離和確認問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。

18.A

19.D解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

20.C

21.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)解析:在數(shù)據(jù)庫系統(tǒng)管理階段,通過系統(tǒng)提供的映像功能,數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性。數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段;

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

do循環(huán)體

while表達式

首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(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)。

23.rewind或fseekrewind或fseek解析:本題考查文件的定位。在對文件進行操作的過程中,若要求文件的位置指針回到文件的開頭,可以調(diào)用rewind函數(shù)或fseek函數(shù)來完成。其中,rewind函數(shù)的作用是將位置指針重新返回文件的開頭;而fseek函數(shù)也可以實現(xiàn)文件指針的定位。

24.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達到最大數(shù),即25-1=16。

25.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

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

27.2424解析:本題考核的知識點是數(shù)組的定義和數(shù)組元素的引用。主函數(shù)中首先定義了一個長度為7的數(shù)組,然后用一個while循環(huán)引用數(shù)組的元素,當i大于7或者p[i]為偶數(shù)時,循環(huán)結(jié)束。顯然當i=2時,p12]=14為偶數(shù)時,循環(huán)結(jié)束,此時j的值為j=p[0]+p[1]=24;

28.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。

29.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。

30.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結(jié)果都為0。

31.cc解析:本題關(guān)鍵在考生是不是了解宏的基本運用,在使用宏的時候明顯少了—個實參。在定義宏的時候變量z是用來做中間變量的,題目中缺的變量就是一個中間變量c。

32.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達式-(i+j)的值為4。所以,答案應該為-2,因為只有i=j=-2時,表達式-(i+j)的值才為4。

33.br[i]

34.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時,a=c++=8,所以k=8。

35.babcdbabcd解析:c語言中\(zhòng)\0表示字符串的結(jié)束。程序?qū)指針指向字符串“AbabCDcd”的首地址,循環(huán)開始后,若指針當前不是指向字符串結(jié)束標志位,則進入循環(huán)體。循環(huán)中每次檢驗字符串中字母是否在a與z之間,若滿足則將當前值賦于數(shù)組a,最后給數(shù)組添加字符結(jié)束標志。此程序可以篩選出字符串中的小寫字母。

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

37.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍?,循環(huán)隊列應當是物理結(jié)構(gòu)。

38.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應取外部變量的值13,因此輸出2。

39.11解析:ifelse語句的功能:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

40.arjteartest

41.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

42.C解析:執(zhí)行while循環(huán),使指針變量ps指向字符串“xyz”的字符串結(jié)束標志,然后執(zhí)行for循環(huán),先執(zhí)行ps--,使ps指向字符‘z’,故puts(ps)輸出結(jié)果為z;再次執(zhí)行ps--,使ps指向字符‘y’,故puts(ps)輸出結(jié)果為yz;再次執(zhí)行ps--,使ps指向字符‘x’,故puts(ps)輸出結(jié)果為xyz,退出循環(huán)。所以,C選項為所選。

43.A解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。通過函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的。由于是通過指針調(diào)用,所以改變字符串的結(jié)果。

44.A解析:本題考查%和/運算符的使用。如果兩個數(shù)不能整除,只取結(jié)果的整數(shù)部分,小數(shù)部分全部舍去。運算符“%”要求兩個運算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。表達式:a=-4+4*5-6=-4+20-6=10:表達式:a=4+4%5-6=4+4-6=2;表達式:a=-3+4%6/5=-3+0=-3;表達式:a=(7+6)%5/2=13%5/2=1。

45.D解析:時間復雜度是指一個算法執(zhí)行時間的相對度量;空間復雜度是指算法在運行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復雜度和空間復雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項A、B、C的說法都是錯誤的。故本題的正確答案是D。

46.A解析:題面中各變量定義后,指針變量p指向了變量n2所在的存儲單元,指針變量q指向了變量n1所在的存儲單元,要使得n1的值賦n2,可用指針變量q所指向的存儲單元的值賦給指針變量p所指向的存儲單元,即*p=*q。

47.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎的數(shù)據(jù)處理存在3個缺點,數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點,人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點。

48.D解析:概要設計是軟件系統(tǒng)結(jié)構(gòu)的總體設計,其目的就是要按照需求規(guī)格說明書,把軟件按照功能劃分為多個模塊,然后確定每個模塊要實現(xiàn)的功能,最后確定模塊之間的調(diào)用關(guān)系。而設計每個模塊的偽代碼則屬于詳細設計。所以只有最后一個不屬于概要設計范疇。

49.C解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合,與書寫格式無關(guān)。所以選項C)為正確答案。

50.C

51.A解析:65536等于2的16次方,而短整型無符號數(shù)的取值范圍為0~65535,65536已經(jīng)超出a的存儲范圍,將截取溢出了的最高第17位,低16位全部為0,因此把a賦值給b,得到的是剩余的16個0,所以b的值為0。

52.B解析:二維字符數(shù)組可以看成由若干個一維字符數(shù)組組成,每行是一個一維字符數(shù)組。本題首先定義了一個數(shù)組ch[3][5],并給它們按行賦初值,即相當于給ch[0]賦值“AAAA”,給ch[1]賦值“BBB”,給ch[2]賦值“BBB”,最后輸出轉(zhuǎn)義字符“'\\'”、ch[1]和轉(zhuǎn)義字符“\\”,因此輸出為“BBB”。

53.A

54.B解析:本題考查的知識點是變量賦初值.選項A中的語句只能起定義n1的作用,而n2=10是n1的初始值表達式,但因前面沒有定義過n2,所以編譯會報錯“n2未定義”,故不正確。選項B使用一個整數(shù)初始化一個字符變量是正確的,因為字符變量中保存的本來就是整數(shù)(某字符的ASCII碼值)。選項C定義的初始值表達式中出現(xiàn)了它自身,某些編譯器能通過編譯,但f在初始化之前是一個未知的值,用未知值來初始化也還是未知值,這是不可取的。選項D的初始值是一個非法常量,因為實型常量指數(shù)形式的指數(shù)部分必須為整數(shù),這里的2.5非法。

55.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結(jié)果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結(jié)果是8,選項D正確。

56.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結(jié)構(gòu)化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。

57.D解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個關(guān)系。即關(guān)系模型是用表格數(shù)據(jù)來表示實體本身及其相互之間的聯(lián)系。本題的正確答案是D。

58.C解析:在C語言中,對于不同類型的數(shù)據(jù)用不同的格式字符,其中,“%d”是按整型數(shù)據(jù)的實際長度輸出,“%md”中,m為指定的輸出字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出。注意:格式輸入函數(shù)scanf的使用。

59.D解析:本題考核的知識點是在自加運算符的運算對象。自加運算對象可以是整型變量也可以是實型變量,但不能是表達式和常量。本題中,#defined2定義了d為常數(shù)2,不能在對d進行自加運算.故選項D是個不正確的語句,所以,4個選項中選項D符合題意。

60.B解析:本題考查的知識點是函數(shù)值類型的缺省定義。C語言規(guī)定:在定義函數(shù)時,若其返回值類型為int,則可以缺省。所以4個選項中B正確。

61.A

62.D重復結(jié)構(gòu)也稱為循環(huán)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復執(zhí)行某一相同或類似的程序段,這種可以簡化大量的程序行。

63.C字符數(shù)組a中包含兩個‘、O’,遇到第一個‘O’時就表示字符串a(chǎn)結(jié)束。字符串處理函數(shù)由c吐(字符數(shù)組a,字符數(shù)組b),功能是連接兩個字符數(shù)組中的字符串,把字符串b連接到a的后面,結(jié)果放在字符數(shù)組a中。連接時將字符串a(chǎn)后的‘、0’取消,只在新串最后保留一個‘、0’。本題相當于將“ABCD”和“IJK”連接。因此C選項正確。

64.D解析:算法的復雜度主要包括算法的時間復雜度和算法的空間復雜度。所謂算法的時間復雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

65.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

66.D

\n本題考查雙重函數(shù)調(diào)用及for循環(huán)使用,fun函數(shù)中第一個for循環(huán)語句的作用是給數(shù)組a賦值。當?shù)谝淮握{(diào)用fun函數(shù)時,把實參1傳給形參,輸出a數(shù)組的元素為1,3,5;第二次調(diào)用fun函數(shù)時,由于數(shù)組a為靜態(tài)局部變量,故輸出a數(shù)組的元素為一1,3,7。

\n

67.C

68.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后Y的類型是int型。

69.C

70.C本題主要考查函數(shù)定義的基本知識。函數(shù)是C語言的基本組成部分,用來完成子程序的功能。一個完整的C程序包括一個main()函數(shù)(主函數(shù))和若干個其他函數(shù),C程序從main()函數(shù)開始執(zhí)行。

在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即一個函數(shù)不能在另一個函數(shù)內(nèi)部定義,函數(shù)之間沒有從屬關(guān)系。函數(shù)定義表達的一般形式為:

<函數(shù)返回值類型>函數(shù)名(<類型名><形式參數(shù)1>,<類型名><形式參數(shù)2>,……)

{

函數(shù)體變量定義部分;

函數(shù)體語句部分;

}

其中,<函數(shù)返回值類型>部分可以省略,默認為整型。函數(shù)返回值類型可以為各種整型、字符型、實型,還可以是指針類型。這里需要注意,在定義沒有形參的函數(shù)時,函數(shù)的括號不能沒有,如果沒有,就不是函數(shù)了,很有可能被當成變量處理。

71.AC語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達式,所以選擇A。

72.D\r\n所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊列循環(huán)使用。在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針real指向的位置之間所有的元素均為隊列中的元素。求解隊列中元素個數(shù)的方法是:若front>rear,隊列中有n-front+rear個元素(其中n為循環(huán)隊列的容量);若front<rear,隊列中有real-front個元素;若front=rear,隊列中有n個或0個元素。循環(huán)隊列是線性結(jié)構(gòu)。因此本題的正確答案是D。

73.B

74.D

75.A本題主要考查的是函數(shù)。在fun函數(shù)中,首先將形參nl和n2分別賦給局部變量i和j,然后使用]while循環(huán),交換s[i]和s[j]的內(nèi)容,并使i增1、j減1,直到i不小于j為止。所以該函數(shù)實現(xiàn)的功能是:對形參指針s所指的一系列元素,從第nl位到第n2位進行逆序。主函數(shù)中,連續(xù)調(diào)用T3次fun函數(shù)依次對數(shù)組a的第0-3位、第4~9位和第0~9位進行了逆序。對0~3位逆序后,數(shù)組。的內(nèi)容是{4,3,2,1,5,6,7,8,9,0};再對4~9位逆序后是I4,3,2,l,0,9,8.7,6,5};最后對0~9位逆序后是I5,6?!?,8,9,0,l,2。3,4}。

76.B先將整型數(shù)據(jù)9強制轉(zhuǎn)換成double型,然后除以2得到的結(jié)果與double型保持一致,即為4.5,然后將4.5強制轉(zhuǎn)換成整型數(shù)據(jù)4,然后計算9%2的值為1,最后計算4一l的值為3,所以選擇B選項。

77.A本題主要考查宏的定義。宏定義用一個標識符來表示一個字符串,這個字符串可以是常量、變量或表達式。在宏調(diào)用中將用該字符串代換宏名。宏定義中,我們主要需要注意以下幾點:

(1)同一宏名不能重復定義,除非這兩個宏定義命令行完全一致。

(2)定義宏時,記得其結(jié)尾處不要用分號隔開。

(3)替換帶參數(shù)的宏名時,一對圓括號必不可少,圓括號中實參個數(shù)應該與形參個數(shù)相同,若有多個參數(shù),它們之間用逗號隔開。

(4)宏定義中的字符串應加括號,字符串中出現(xiàn)的形式參數(shù)兩邊也應加括號。

在本題中,定義宏時,出現(xiàn)了一個明顯的錯誤,即在宏的定義后面用分號表示結(jié)束,這顯然是不對的。程序編譯時,系統(tǒng)會報錯,無法完成輸出。因此,本題的正確答案是A。

78.D第一個for循環(huán)作用是對數(shù)組8賦初值,從0~9,第二個缸循環(huán)是計算數(shù)組前4項的a[i]+i的和。0+0,1+1,2+2,3+3,經(jīng)計算的結(jié)果為l2,因此答案為D選項。

79.A函數(shù)‰的功能是將字符串倒序,所以結(jié)果選擇A)。

80.C本題主要考查scanf輸入語句及其格式。在本題中的四個選項中,分別用不同的格式試圖從鍵盤輸入數(shù)據(jù)。

在選項A中,給出的輸入格式是“%2d,%2d,%2d”,表示輸入的數(shù)據(jù)中間用逗號隔開,而且其輸入的寬度為2,即可以輸入一個兩位數(shù),如果輸入的位數(shù)小于2,則左邊補空格。在其輸出列表中,表示方式也不對,其他三項是正確的。

在選項B中,給出的輸入格式是“%d%d%d”,僅表示輸入的數(shù)據(jù)中間用空格隔開。

在選項C中,給出的輸入格式是“%d,%d,%d”,僅表示輸入的數(shù)據(jù)中間用逗號隔開,與題目給出的要求一致,為正確答案。

在選項D中,給出的輸入格式是“i=%d,j=%d,k=%d”,表示輸入的數(shù)據(jù)中間不僅用逗號隔開,還需要如“i=”的說明符。

81.(1)錯誤:float*k;

正確:floatk;

(2)錯誤:if(*a>*c)

正確:if(*a<*c)

【解析】變量定義首先要判斷變量的類型,給定程序的賦值語句中,k是以變量形式進行賦值的,所以k不是指針,定義為指針是不正確的;由給出程序可以看出,if語句是為了將小于*C的值放入*C中,所以應該改為“if(*a<*c)”。

82.\n#include'stdio.h'

\nmain

\n{inti;

\nfor(i=1;i<=100;i++)

\n{if(i==0)

\ncontinue;

\nprintf('%d',i);

\n}

\n2021-2022年湖南省長沙市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

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

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

3.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。

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

4.

5.

6.

7.

有以下程序:

main()

{intk=5,n=0;

do

{switch(k)

{case1:

case3:n+=l;k--;break;

defalut:n=0;k--;

case2:

case4:n+=2;k--;break:

}

printf("%d",n);

}while(k>0&&n<5);

}

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

A.235B.0235C.02356D.2356

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

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

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

A.C語言程序必須要有return語句

B.C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義

C.C語言程序中,只有int類型的函數(shù)可以未經(jīng)聲明而出現(xiàn)在調(diào)用之后

D.C語言程序中,main()函數(shù)必須放在程序開始的部分

10.在說明語句:int*f();中,標識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

11.以下選項中關(guān)于C語言常量的敘述錯誤的是()。

A.所謂常量,是指在程序運行過程中,其值不能被改變的量

B.常量分為整型常量、實型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值常量

D.經(jīng)常被使用的變量可以定義成常量

12.若有定義語句:“charS[3][10],(*k)[3],*p;”,則以下賦值語句正確的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

13.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

14.微型計算機的運算器、控制器及內(nèi)存儲器組合在一起,稱之為()

A.ALUB.CPUC.MPUD.主機

15.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

16.面向?qū)ο蟮脑O計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念

17.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

18.以下程序的輸出結(jié)果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}

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

19.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

20.一個C語言程序總是從()開始執(zhí)行。

A.書寫順序的第一函數(shù)B.書寫順序的第一條執(zhí)行語句C.主函數(shù)main()D.不確定

二、2.填空題(20題)21.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)這3個階段,其中數(shù)據(jù)獨立性最高的階段是【】。

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

a=15;

b=0;

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

23.在對文件進行操作的過程中,若要求文件的位置指針重新指向文件的開頭,應當調(diào)用的函數(shù)是【】函數(shù)。

24.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。

25.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

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

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

main()

{

intp[7]={11,13,14,15,16,17,18);

inti=0,j=0;

while(i<7&&p[i]%2==1)

j+p[i++];

printf(“%d\n”j);

}

28.下列程序執(zhí)行后輸出的結(jié)果是【】。

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

printf("%d\n",++(p->x));

}

29.按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

30.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。

31.設有如下宏定義

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】,a,b);

32.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

33.以下程序中,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(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

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

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

}

}

34.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

35.下面程序的運行結(jié)果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

37.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

38.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z+0;

elseZ+=1;

primf(“%d\n",z);

}

40.若輸入tear、test、arj,則下列程序的運行結(jié)果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

三、1.選擇題(20題)41.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

42.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}執(zhí)行后的輸出結(jié)果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

43.下列程序的運行結(jié)果為()。

#include<stdio.h>

voidabc(char*str)

{inta,b,i,j;

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

if(str[i]!='a')

str[j++]=str[j];

str[j]='\0';

}

voidmain()

{charStr[]="abcdef';

abc(str);

printf("str[]=%s",str);

}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.下列程序輸出的結(jié)果是()。main(){inta;a=-4+4*5-6;printf("%d",a);a=4+4%5-6;printf("%d",a);a=-3+4%6/5;printf("%d",a);a=(7+6)%5/2;printf("%d",a);}

A.102-31B.10-221C.11-221D.10221

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

A.一個算法的空間復雜度大,則其時間復雜度也必定大

B.一個算法的空間復雜度大,則其時間復雜度必定小

C.一個算法的時間復雜度大,則其空間復雜度必定小

D.上述三種說法都不對

46.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

47.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

48.概要設計是軟件系統(tǒng)結(jié)構(gòu)的總體設計,以下選項中不屬于概要設計的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調(diào)用關(guān)系C.確定各個模塊的功能D.設計每個模塊的偽代碼

49.在嵌套使用if語句時,C語言規(guī)定else總是A.和之前與其具有相同縮進位置的if配對

B.和之前與其最近的if配對

C.和之前與其最近的且不帶else的if配對

D.和之前的第一個if配對

50.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。

A.inti=100;for(;;){i=i%10+1;if(i>10)break;}

B.while(1);

C.intk=0;do{++k;}while(k<=10);

D.ints=12;while(s);--s;

51.以下程序的輸出結(jié)果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b=a);}

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

52.以下程序的輸出結(jié)果是main(){charch[3][5];{“AAAA”,“BBB”,“CC”};printf(“\”%s“n”,ch[1]);}

A.“AAAA”B.“BBB”C.“BBBCC”D.“CC”

53.在下列語句中,正確的是()

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};str1=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

54.以下能正確定義且賦初值的語句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

55.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

56.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

57.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹結(jié)構(gòu)B.網(wǎng)結(jié)構(gòu)C.線性表D.二維表

58.以下程序段的輸出結(jié)果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出錯,無結(jié)果

59.設有以下定義:inta=0;doubleb=1.25;charc='A';#defined2則下面語句中錯誤的是()。

A.a++;B.b++;C.c++;D.d++;

60.C語占中,函數(shù)值類型的定義可以缺省,此時函數(shù)值的隱含類型是

A.voidB.intC.floatD.double

四、選擇題(20題)61.

62.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是()。

A.順序結(jié)構(gòu)B.分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.重復結(jié)構(gòu)

63.有以下程序(strcat函數(shù)用于連接兩個字符串):

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

A.U-KB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

64.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法需要的內(nèi)存空間

65.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

66.

下面程序輸出的是()。

main

{intt=l;fun(fun(t));}

fun(inth)

{staticinta[3]={1.2.3};

intk;

for(k=0;k<3;k++)a[k]+=a[k]-h;

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

printf("\n");

return(a[h]);}

A.1,2,3,1,5,9,

B.1,3,5,1,3,j,

C.1,3,5,0,4,8,

D.1,3。5,-1,3,7,

67.

68.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

69.

70.下列說法中不正確的是

A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)

B.在沒有聲明函數(shù)返回值類型的情況下,默認的函數(shù)返回值類型為int型

C.函數(shù)的類型可以是整型、實型、字符型,但不能是指針型

D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略

71.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。

A.可以是任意合法的表達式B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.只能是整數(shù)0或1

72.下列敘述中正確的是()。A.循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況

D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定

73.

74.

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

76.表達式:(im)((double)9/2)一9%2的值是()。

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

77.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運行時報錯,無法輸出B.54

C.96D.100

78.有以下程序:

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

A.10B.16C.6D.12

79.有以下程序

80.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:把從主函數(shù)中輸人的3個數(shù)。最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在C中。例如,若輸入的數(shù)為:55,12,34,輸出的結(jié)果應當是:a=55.0,b=34.0,c=12.0。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設計題(1題)82.輸出1—100之間不能被12整除的數(shù)。

參考答案

1.A

2.B

3.D

4.C

5.D

6.A

7.B

\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

\n

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

9.C

10.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

11.D此題考查的是常量和變量的定義,常量不是經(jīng)常使用的變量,而是一個確定的數(shù)值,所以答案選擇D。

12.C答案C的意思是*P指向數(shù)組的第一個值。

13.Dif語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。故本題答案為D選項。

14.D

15.D本題考查continue的用法,continue語句的作用是結(jié)束本次循環(huán),直接進行下次循環(huán)。所以在程序中,只有當a=10時,才退出循環(huán),故選擇D選項。

16.C\n面向?qū)ο蟮脑O計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應用領域的概念角度去思考。

\n

17.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機的、不可重復的過程,它用于隔離和確認問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。

18.A

19.D解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

20.C

21.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)解析:在數(shù)據(jù)庫系統(tǒng)管理階段,通過系統(tǒng)提供的映像功能,數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性。數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段;

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

do循環(huán)體

while表達式

首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(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)。

23.rewind或fseekrewind或fseek解析:本題考查文件的定位。在對文件進行操作的過程中,若要求文件的位置指針回到文件的開頭,可以調(diào)用rewind函數(shù)或fseek函數(shù)來完成。其中,rewind函數(shù)的作用是將位置指針重新返回文件的開頭;而fseek函數(shù)也可以實現(xiàn)文件指針的定位。

24.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達到最大數(shù),即25-1=16。

25.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論