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

下載本文檔

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

文檔簡介

2022年廣東省廣州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.由權值分別為3,8,6,2,5的葉子結點生成一棵哈夫曼樹,它的帶權路徑長度為________。

A.24B.48C.72D.53

3.若有定義“inta[2][3],*p[3];”,則以下語句中正確的是()。

A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

4.以下程序的輸出結果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

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

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

6.

7.

8.字符串"alibaba"的二進制哈夫曼編碼有多少位()

A.11B.12C.13D.14

9.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結果是()。A.28B.27C.42D.4l

10.若用一個大小為6的數(shù)值來實現(xiàn)循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

11.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);

A.aB.bC.cD.d

12.下列定義數(shù)組的語句中,正確的是()。

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

13.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數(shù)的類型是()。A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

14.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

15.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則隊頭出隊的運算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

16.

17.對如下二叉樹進行后序遍歷的結果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

18.下列關于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進行插入和刪除操作

C.棧只允許在一端進行插入和刪除操作

D.隊列允許在一端進行插入在另一端進行刪除

19.以下選項中,合法的一組C語言數(shù)值常量是()。

A.028.5e-3-0xf

B.12.OXa234.5eO

C..1774c1.5Oabc

D.0x8A10,0003.e5

20.可以判斷一個有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓撲排序D.求最短路徑

二、2.填空題(20題)21.結構化分析方法是面向______進行分析的方法。

22.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。

23.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

24.以下程序運行后的輸出結果是【】。

main()

{

intx=0210;

printf("%X\n",x);

}

25.以下程序運行后的輸出結果是【】。

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

26.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

27.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

28.下列程序能將字符串s1中的所有與字符串str1相同的子串替換成字符串sb2,并將替換后的新串存于字符數(shù)組s2中。

#include<stdio.h>

voidreplace(s1,s2,str1,str2)

char*s1,*s2,*str1,*str2;

{char*t0,*t1,*t2,*x,*y;

x=s1;y=s2;

while(【】)

{

for(t0=s1,t1=str1;((*t1!='\O'&&【】;t0++,t1++);

if(*t1!='\0')*s2++=【】;

else

{for(t1=str2;*t1!='\0';)*s2++=【】;

【】;

}

}

*s2='\0';

}

main()

{staticchars1[]="abcdefababcdabab.",s2125];

replace(s1,s2,"abc","XYZ");

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

}

29.以下程序的功能是:利用指針向三個整型變量,并通過指針運算找出三個數(shù)中最大值,輸出到屏幕上。請?zhí)羁?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

printf("max=%d\n",max);}

30.下列程序的輸出結果是______。

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

31.以下函數(shù)的功能是求x的y次方,請?zhí)羁铡?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

32.與表達式a+=b等價的另一書寫形式是______。

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

}

34.若輸入2、2,則下列程序的運行結果為【】。

main()

{inti,j,(*p)[4],

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

scanf("%d%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

}

35.對于長度為n的線性表,若進行順序查找,時間復雜性為【】;若進行二分查找,則時間復雜性為【】。

36.在面向對象程序設計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結構以及實現(xiàn)操作的算法,這稱為對象的______。

37.以下程序運行的結果是【】。

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

38.以下函數(shù)用以求y的x次方。補足所缺語句。

doublefun(doubley,intx)

{inti;

doublez=1.0;

for(i=1;i______;i++)

z=______;

returnz;

}

39.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;

return(num);

}

40.關系數(shù)據(jù)庫的關系演算語言是以【】為基礎的DML語言。

三、1.選擇題(20題)41.下列程序的輸出結果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序錯誤,沒有輸出D.循環(huán)條件永遠為真,死循環(huán)

42.下列程序的輸出結果是()。#include<stdio.h>structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}

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

43.以下敘述中錯誤的是()。

A.C語句必須以分號結束

B.復合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會影響程序運行

D.賦值表達式末尾加分號就構成賦值語句

44.若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是

A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

45.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

46.在數(shù)據(jù)管理技術的發(fā)展過程中,可實現(xiàn)數(shù)據(jù)共享的是()

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.系統(tǒng)管理階段

47.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運行后的輸出結果是()。

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

48.有定義:inta=1,b=2,c=3,x;則以下選項中各程序段執(zhí)行后,x的值不為3的是()。

A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

49.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

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

A.#defineS(x)x*x

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

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

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

51.以下定義語句中正確的是______。

A.chara='A'b='B';

B.floata=b=19.0;

C.inta=10,*b=&a;

D.float*a,b=&a;

52.執(zhí)行以下程序后,x的值為()。unsignedintx=65535;printf("%d\n",x);

A.65535B.1C.有錯誤D.-1

53.函數(shù)fseek(pf,0L,SEEK_END)中的SEEK_END代表的是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

54.計算機硬件組成中,CPU包含______。

A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內存儲器和外存儲器

55.對于下面的語句,敘述正確的是______。charc1[]="abcd";charc2[]={'a','b','c','d'};

A.數(shù)組c1和數(shù)組c2等價

B.數(shù)組c1占用空間大于數(shù)組c2占用空間

C.數(shù)組c1占用空間小于數(shù)組c2占用空間

D.數(shù)組c1和數(shù)組c2的長度相同

56.有以下函數(shù):charfun(char*p){returnP;}該函數(shù)的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

57.下面不屬于軟件設計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

58.請選出正確的程序段______。

A.int*p

B.int*s,k;scanf(""%d"",p);*s=100;………

C.int*s,k;

D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……

59.設a和b均為int型變量,且a=6、b=11、c=3,則能使值為3的表達式是()。

A.b%(c%4)B.b%(c-a%5)C.b%a-a%5D.(b%A)-(a%4)

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。

A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結束符,故輸出的長度都為3

B.由于p數(shù)組中沒有字符串結束符,長度不能確定;但q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結束符,長度不能確定;但p數(shù)組中字符串長度為3

D.由于p和q數(shù)組中都沒有字符串結束符,故長度都不能確定

四、選擇題(20題)61.有以下程序:

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

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

62.C語言源程序名的后綴是()。A.CB.exeC.obiD.ep

63.有以下程序

64.以下不構成無限循環(huán)的語句或語句組是()。

65.運行下列程序,若從鍵盤輸入字符“a”,則輸出結果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

66.若有定義語句:“intkl一10,k2=20;”,執(zhí)行表達式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

67.下列4個關于C語言的結論中錯誤的是()。

A.可以用do—while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

B.可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

C.可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)

D.do-while語句與while語句的區(qū)別僅是關鍵字“while”出現(xiàn)的位置不同

68.(32)數(shù)據(jù)的存儲結構是指()

A.數(shù)據(jù)所占的存儲空間量

B.數(shù)據(jù)的邏輯結構在計算機中的表示

C.數(shù)據(jù)在計算機中的順序存儲方式

D.存儲在外存中的數(shù)據(jù)

69.

70.

下列程序執(zhí)行后的輸出結果是()。

voidfunc(int*a,intb[])

{b[0]=*a+b;}main

{inta,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

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

71.

72.

已知有如下結構體:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)

73.

74.有以下程序程序運行后的輸出結果是()。

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

75.

76.

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

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

78.設有定義:intx-2;,以下表達式中,值不為6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1

79.

80.下列選項中不合法的十六進制數(shù)是()。A."0"xff

B."0"X11

C."0"x1g

D."0"Xabc

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數(shù)值為59.593612。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.編寫函數(shù)proc(),它的功能是求m以內(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如,m為100時,函數(shù)值應為s=7.416198。

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

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

試題程序:

參考答案

1.A

2.D

3.CA選項錯誤,因為p是指向一個指針數(shù)組,而數(shù)組名相當于常量,不能重新賦值。B選項錯誤,因為p[0]是一個int指針,也就是int*,而a是一個指向指針的指針int**。C選項正確,因為p[0]是int*,a[1][2]是int,&a[1][2]是int*,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址,即使能取,P[1]是int*,&a是int***,類型不吻合。故本題答案為C選項。

4.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項。

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

6.B

7.D

8.C

9.C只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。

10.B

11.A解析:C函數(shù)的參數(shù)傳遞方式采用按值傳遞,不能通過調用函數(shù)改變形參指針本身的值,只能改變指針所指變量的值。調用point函數(shù)時,將實參指針p的值(b數(shù)組的首地址)傳給了形參指針P,P+=3運算使形參指針指向字符d,但并不能改變main函數(shù)中p的值,所以本題正確答案應該是選項A)。

12.D選項A、B中n為變量,C語言中不允許動態(tài)定義數(shù)組維數(shù),即維數(shù)不能是變量。選項C無此語法。

13.A本題考查函數(shù)值的類型,在函數(shù)定義時,由于函數(shù)沒有說明其類型,系統(tǒng)默認一律自動按整型(int)處理。

14.C

\n題中整型指針變量P存放的是變量C的地址。所以本題答案為C。

\n

15.A

16.A

17.D解析:后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。

18.A解析:線性表的插入和刪除允許在任何位置進行,所以B選項的說法是正確的;棧的操作只允許在棧頂進行,因此,棧稱為先進后出表(FILO,FirstInLastOut),或“后進先出”表(LIFO,LastInFirstOut),所以C選項說法也是正確的;隊列(queue)是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),因此隊列亦稱作先進先出(FIFO,FirstInFirstOut)的線性表,或后進后出(LILO,LastInLastOut)的線性表。所以D選項說法也是正確的。

19.BC語言中,八進制數(shù)其開頭必須是數(shù)字“0”,其數(shù)字包括0~7,因此選項A錯誤。浮點數(shù)據(jù)的指數(shù)形式表示中,字母e或E之后的指數(shù)必須為整數(shù),所以選項C錯誤。選項D中,整型數(shù)據(jù)l0,000的表示形式是錯誤的。

20.C

21.數(shù)據(jù)流數(shù)據(jù)流解析:結構化分析方法的實質是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

22.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

23.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。

24.8888解析:C語言規(guī)定,以0開頭的整型常量為八進制。另外,在primf()函數(shù)中,%X表示以十六進制無符號形式輸出一個整數(shù),且十六進制中的ABCDEF為大寫字母。本題的輸出應該是八進制210的十六進制形式。將八進制轉換為十六進制,可以先將其轉換為二進制。因為1位八進制表示3位二進制,4位二進制表示1位十六進制。(210)8=(10001000)2=(88)16,故本題輸出為880

25.130130解析:本題主函數(shù)中用了一個for循環(huán),循環(huán)了3次:當i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各增1,變?yōu)?和1,然后遇到break語句,退出switch語句;當i=10和11時,i/10都等于1,執(zhí)行switch語句中的case1分支,兩次使n增1,變?yōu)?,退出switch語句。故該空格處應該填130。

26.1對多(或1:N)1對多(或1:N)

27.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結構(包括存儲結構、存取方式)改變時,不需要修改應用程序。而邏輯獨立性是指當邏輯結構改變時,不需要修改應用程序。

28.*s1!='\0'或*s1*t0=*t1*s1++*t1++s1=t0或s1=s1+strlen(str1)*s1!='\\0'或*s1\r\n*t0=*t1\r\n*s1++\r\n*t1++\r\ns1=t0或s1=s1+strlen(str1)

29.

30.7979解析:因為在調用子函數(shù)時進行的是數(shù)值傳遞,調用子函數(shù)并不能改變實參的值,所以經(jīng)過調用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

31.xx解析:函數(shù)的定義形式為;

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求得變量的Y次方。

32.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

33.220.000000220.000000解析:注意區(qū)分運算符的優(yōu)先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點數(shù)的形式輸出的,小數(shù)點后的0不能少。

34.a[22]=11

35.O(n)O(log2n)

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

37.77解析:解答本題的關鍵是要讀懂程序,要找出能被7或11整除的所有整數(shù),注意數(shù)學中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“‖”運算符,若要找能同時被7和11整除的所有整數(shù)則在if的條件中應使用“&&”運算符。

當然,如果m的值輸入50,即表達式fun(10,aa,&n);為fun(50,aa,&n);時輸入結果為:711142122283335424449。

38.i<=xz*y。i<=xz*y。解析:循環(huán)次數(shù)應該是x次,相當于x個y相乘,循環(huán)體中z作為累乘器,值為z*y。

39.\0'n++\\0'\r\nn++解析:第1個循環(huán)是求字符串a(chǎn)的長度,并存儲在變量num中,循環(huán)條件要控制是否取到字符串末尾的'\\0'。第2個循環(huán)通過兩個變量num和n的改變,將b字符串連接到a字符串后面,并將新的字符串長度記錄到num中。

40.謂詞演算謂詞演算

41.B解析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+1”,也就是只要i+1的值為真(非零值均為真),就執(zhí)行循環(huán)。當i=1的時候,i+1的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。

42.B解析:在本題中,s[0].a=1,s[1].b=5,所以輸出結果為6。

43.C解析:C語句必須以分號結束,選項A是正確的。復合語句在語法上被看作一條語句,選項B也是正確的。空語句也算是一條語句,因此如果空語句出現(xiàn)在條件或者循環(huán)語句中,一樣會被當作條件子句或者循環(huán)體來看待,所以選項c是錯誤的。賦值表達式末尾加分號就構成賦值語句,選項D正確。故本題應該選擇C。

44.D解析:C語言中數(shù)組下標是從0開始的,所以二維數(shù)組a[2][3]的第一維下標取值為0、1;第二維的下標取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數(shù)組元素a[0][0]。

45.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負責數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

46.C解析:本題考查了考生對數(shù)據(jù)庫基礎知識的記憶。數(shù)據(jù)庫技術的主要目的是有效地管理和存取數(shù)據(jù)資源,包括提供數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減少數(shù)據(jù)的冗余度,以提交數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應用程序的獨立性,從而減少應用程序的開發(fā)和維護代價。數(shù)據(jù)庫的人工管理階段和文件系統(tǒng)階段,數(shù)據(jù)都不能實現(xiàn)共享,出現(xiàn)數(shù)據(jù)冗余現(xiàn)象。選項D)的說法是錯誤的。

47.C解析:{intm=4;s+=m;}是復合語句,m=4,s+=m等價于s=s+m=0+4=4。t+=m等價于t=t+m,這里m為全局變量,值為1,t=t+m=O+1=1。

48.C解析:選項A),因為前面兩個條件都不滿足,所以執(zhí)行x=3。選項B),a<3成立,執(zhí)行x=3。選項C),a<3成立,執(zhí)行x=3;a<2成立,執(zhí)行x=2;a<1不成立,不執(zhí)行x=1,所以執(zhí)行此段程序后x=2。選項D),a<b成立,執(zhí)行x=b,此時x=2;b<c成立,執(zhí)行x=c,此時x=3;c<a不成立,不執(zhí)行x=a,所以執(zhí)行此段程序后x=3。

49.D各種排序方法中最壞情況下需要比較的次數(shù)分別為:冒泡排序n(n-1)/2、快速排序n(n-1)/2、簡單插入排序n(n-1)/2、希爾排序0(n1.5)、簡單選擇排序n(n-1)/2、堆排序O(nlog2n)

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

51.C解析:選項A中a='A'b='B'中缺少一個逗號;B中只能定義一個,如a=19.0;D中b是float類型的,不能取指針地址。

52.D解析:x變量定義為無符號整型。格式控制符d是輸出帶符號的十進制整數(shù),即輸出-1。65535在內存中各位都為1,作為帶符號數(shù)輸出時最高位為1即數(shù)值為負。在內存中數(shù)據(jù)都以其補碼形式保存,11111111變?yōu)樵a為10000001即-1。

53.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的開始,SEEK_CUR代表的是文件當前位置。

54.B

55.B解析:給字符數(shù)組按字符串方式初始化,則在字符串末尾有一個字符串結束標志,占一個字節(jié)的存儲空間,如逐個元素賦值,則不加字符串結束標志。

56.B

57.C解析:軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念,它們具有抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。

58.C解析:本題的A和B犯了一個同樣的錯誤,即指針變量p定義后并沒有指向具體的變量,因此不能進行賦值操作。另外,在選項D中,s是int指針變量,p是char型指針變量,所指向的內存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。

59.D選項D)括號內的運算分別是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。

60.A解析:在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結束符,從題目中可以看出數(shù)組p和q都有3個字符,所以長度均為3。

61.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內分配存儲單元,在程序整個運行期間都不釋放。所以第-次調用函數(shù)執(zhí)行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時,s的值為4,調用f(a)函數(shù)時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。

62.AC語言源程序名的后綴為.C’所以A)正確。

63.A函數(shù)fun的功能是返回字符串數(shù)組.,各個字符串第一個字母是T的個數(shù),str數(shù)組里有2個,所以選擇A)。

64.A選項A中d0后面的語句只執(zhí)行了-次匣結束了循環(huán);B選項中條件while(1)永遠成立,所以是死循F;C選項中n的值為10,而循環(huán)體為空語句,所以while(n)永遠為真,進入死循環(huán);D選項中for語句第二個表達式為空,所1以沒有判別條件,進入死循環(huán)。

65.C

\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。

66.B

67.D本題考查對各個循環(huán)語句的理解。①do-while語句、for語句、while語句所實現(xiàn)的循環(huán)可以相互替代;②do-while語句至少執(zhí)行一次,而while是符合條件執(zhí)行,不符合不執(zhí)行。

68.B

69.D

70.A

\n本題考查函數(shù)的調用,從主函數(shù)傳遞到調用函數(shù)中,*a的值為0,因此當執(zhí)行完調用函數(shù)后,b[0]的值為6。

\n

71.D

72.B

\n本題主要考查結構指針:P=&data,訪問結構體的成員。它可以通過結構變量訪問,即data,可以用等價的指針形式:(*p).a(chǎn)和P->a來訪問結構體變量中的成員。

\n

73.A

74.A“&”按位與,如果兩個相應的二進制位都為l,則該位的結果值為l,否則為0。

“r’按位或,即兩個相應的二進制位中只要有一個為l,該位的結果值為l。2的二進制為00000010.4的二進制為00000100,因此做或運算結果為00000110,該數(shù)與51/1100000101做與運算,結果為00000100,即4,選項A)正確。

75.B

76.A

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

78.A選項A中,2*x對x的值沒有影響,x仍為2,“x+=2”執(zhí)行后,表達式值為4。故本題答案為A。

79.B

80.C十六進制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

81.(1)錯誤:doubleproc(doubleq)

正確:doubleproc(intq)

(2)錯誤:sum=sum+(n+1)/n;

正確:sum=sum+(double)(n+1)/n;

(3)錯誤:returnsum;

正確:returnt;

【解析】由主函數(shù)中函數(shù)調用的實參可知,函數(shù)proc()的形參為int型,因此,“doubleproc(doubleq)”應改為“doubleproc(intq)”;變量sum為double型變量,因此表達式(n+1)/n要進行強制類型轉換,因此,“sum=sum+(n+1)/n;”應改為“sum=sum+(double)(n+1)/n;”,由函數(shù)proc()可知,變量sum中存放的是SN+1項,而變量t表示SN項,因此,“returnsum;”應改為“returnt;”。

82.

【解析】按照題目中要求求m以內(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,需要判斷m以內的所有整數(shù)是否能同時被5與11整除,首先求出同時能被5與

11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)當中。

2022年廣東省廣州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.由權值分別為3,8,6,2,5的葉子結點生成一棵哈夫曼樹,它的帶權路徑長度為________。

A.24B.48C.72D.53

3.若有定義“inta[2][3],*p[3];”,則以下語句中正確的是()。

A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

4.以下程序的輸出結果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

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

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

6.

7.

8.字符串"alibaba"的二進制哈夫曼編碼有多少位()

A.11B.12C.13D.14

9.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結果是()。A.28B.27C.42D.4l

10.若用一個大小為6的數(shù)值來實現(xiàn)循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

11.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);

A.aB.bC.cD.d

12.下列定義數(shù)組的語句中,正確的是()。

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

13.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數(shù)的類型是()。A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

14.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

15.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則隊頭出隊的運算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

16.

17.對如下二叉樹進行后序遍歷的結果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

18.下列關于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進行插入和刪除操作

C.棧只允許在一端進行插入和刪除操作

D.隊列允許在一端進行插入在另一端進行刪除

19.以下選項中,合法的一組C語言數(shù)值常量是()。

A.028.5e-3-0xf

B.12.OXa234.5eO

C..1774c1.5Oabc

D.0x8A10,0003.e5

20.可以判斷一個有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓撲排序D.求最短路徑

二、2.填空題(20題)21.結構化分析方法是面向______進行分析的方法。

22.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。

23.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

24.以下程序運行后的輸出結果是【】。

main()

{

intx=0210;

printf("%X\n",x);

}

25.以下程序運行后的輸出結果是【】。

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

26.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

27.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

28.下列程序能將字符串s1中的所有與字符串str1相同的子串替換成字符串sb2,并將替換后的新串存于字符數(shù)組s2中。

#include<stdio.h>

voidreplace(s1,s2,str1,str2)

char*s1,*s2,*str1,*str2;

{char*t0,*t1,*t2,*x,*y;

x=s1;y=s2;

while(【】)

{

for(t0=s1,t1=str1;((*t1!='\O'&&【】;t0++,t1++);

if(*t1!='\0')*s2++=【】;

else

{for(t1=str2;*t1!='\0';)*s2++=【】;

【】;

}

}

*s2='\0';

}

main()

{staticchars1[]="abcdefababcdabab.",s2125];

replace(s1,s2,"abc","XYZ");

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

}

29.以下程序的功能是:利用指針向三個整型變量,并通過指針運算找出三個數(shù)中最大值,輸出到屏幕上。請?zhí)羁?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

printf("max=%d\n",max);}

30.下列程序的輸出結果是______。

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

31.以下函數(shù)的功能是求x的y次方,請?zhí)羁铡?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

32.與表達式a+=b等價的另一書寫形式是______。

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

}

34.若輸入2、2,則下列程序的運行結果為【】。

main()

{inti,j,(*p)[4],

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

scanf("%d%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

}

35.對于長度為n的線性表,若進行順序查找,時間復雜性為【】;若進行二分查找,則時間復雜性為【】。

36.在面向對象程序設計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結構以及實現(xiàn)操作的算法,這稱為對象的______。

37.以下程序運行的結果是【】。

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

38.以下函數(shù)用以求y的x次方。補足所缺語句。

doublefun(doubley,intx)

{inti;

doublez=1.0;

for(i=1;i______;i++)

z=______;

returnz;

}

39.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;

return(num);

}

40.關系數(shù)據(jù)庫的關系演算語言是以【】為基礎的DML語言。

三、1.選擇題(20題)41.下列程序的輸出結果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序錯誤,沒有輸出D.循環(huán)條件永遠為真,死循環(huán)

42.下列程序的輸出結果是()。#include<stdio.h>structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}

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

43.以下敘述中錯誤的是()。

A.C語句必須以分號結束

B.復合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會影響程序運行

D.賦值表達式末尾加分號就構成賦值語句

44.若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是

A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

45.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

46.在數(shù)據(jù)管理技術的發(fā)展過程中,可實現(xiàn)數(shù)據(jù)共享的是()

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.系統(tǒng)管理階段

47.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運行后的輸出結果是()。

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

48.有定義:inta=1,b=2,c=3,x;則以下選項中各程序段執(zhí)行后,x的值不為3的是()。

A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

49.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

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

A.#defineS(x)x*x

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

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

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

51.以下定義語句中正確的是______。

A.chara='A'b='B';

B.floata=b=19.0;

C.inta=10,*b=&a;

D.float*a,b=&a;

52.執(zhí)行以下程序后,x的值為()。unsignedintx=65535;printf("%d\n",x);

A.65535B.1C.有錯誤D.-1

53.函數(shù)fseek(pf,0L,SEEK_END)中的SEEK_END代表的是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

54.計算機硬件組成中,CPU包含______。

A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內存儲器和外存儲器

55.對于下面的語句,敘述正確的是______。charc1[]="abcd";charc2[]={'a','b','c','d'};

A.數(shù)組c1和數(shù)組c2等價

B.數(shù)組c1占用空間大于數(shù)組c2占用空間

C.數(shù)組c1占用空間小于數(shù)組c2占用空間

D.數(shù)組c1和數(shù)組c2的長度相同

56.有以下函數(shù):charfun(char*p){returnP;}該函數(shù)的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

57.下面不屬于軟件設計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

58.請選出正確的程序段______。

A.int*p

B.int*s,k;scanf(""%d"",p);*s=100;………

C.int*s,k;

D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……

59.設a和b均為int型變量,且a=6、b=11、c=3,則能使值為3的表達式是()。

A.b%(c%4)B.b%(c-a%5)C.b%a-a%5D.(b%A)-(a%4)

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。

A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結束符,故輸出的長度都為3

B.由于p數(shù)組中沒有字符串結束符,長度不能確定;但q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結束符,長度不能確定;但p數(shù)組中字符串長度為3

D.由于p和q數(shù)組中都沒有字符串結束符,故長度都不能確定

四、選擇題(20題)61.有以下程序:

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

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

62.C語言源程序名的后綴是()。A.CB.exeC.obiD.ep

63.有以下程序

64.以下不構成無限循環(huán)的語句或語句組是()。

65.運行下列程序,若從鍵盤輸入字符“a”,則輸出結果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

66.若有定義語句:“intkl一10,k2=20;”,執(zhí)行表達式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

67.下列4個關于C語言的結論中錯誤的是()。

A.可以用do—while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

B.可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

C.可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)

D.do-while語句與while語句的區(qū)別僅是關鍵字“while”出現(xiàn)的位置不同

68.(32)數(shù)據(jù)的存儲結構是指()

A.數(shù)據(jù)所占的存儲空間量

B.數(shù)據(jù)的邏輯結構在計算機中的表示

C.數(shù)據(jù)在計算機中的順序存儲方式

D.存儲在外存中的數(shù)據(jù)

69.

70.

下列程序執(zhí)行后的輸出結果是()。

voidfunc(int*a,intb[])

{b[0]=*a+b;}main

{inta,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

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

71.

72.

已知有如下結構體:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)

73.

74.有以下程序程序運行后的輸出結果是()。

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

75.

76.

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

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

78.設有定義:intx-2;,以下表達式中,值不為6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1

79.

80.下列選項中不合法的十六進制數(shù)是()。A."0"xff

B."0"X11

C."0"x1g

D."0"Xabc

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數(shù)值為59.593612。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.編寫函數(shù)proc(),它的功能是求m以內(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如,m為100時,函數(shù)值應為s=7.416198。

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

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

試題程序:

參考答案

1.A

2.D

3.CA選項錯誤,因為p是指向一個指針數(shù)組,而數(shù)組名相當于常量,不能重新賦值。B選項錯誤,因為p[0]是一個int指針,也就是int*,而a是一個指向指針的指針int**。C選項正確,因為p[0]是int*,a[1][2]是int,&a[1][2]是int*,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址,即使能取,P[1]是int*,&a是int***,類型不吻合。故本題答案為C選項。

4.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項。

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

6.B

7.D

8.C

9.C只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。

10.B

11.A解析:C函數(shù)的參數(shù)傳遞方式采用按值傳遞,不能通過調用函數(shù)改變形參指針本身的值,只能改變指針所指變量的值。調用point函數(shù)時,將實參指針p的值(b數(shù)組的首地址)傳給了形參指針P,P+=3運算使形參指針指向字符d,但并不能改變main函數(shù)中p的值,所以本題正確答案應該是選項A)。

12.D選項A、B中n為變量,C語言中不允許動態(tài)定義數(shù)組維數(shù),即維數(shù)不能是變量。選項C無此語法。

13.A本題考查函數(shù)值的類型,在函數(shù)定義時,由于函數(shù)沒有說明其類型,系統(tǒng)默認一律自動按整型(int)處理。

14.C

\n題中整型指針變量P存放的是變量C的地址。所以本題答案為C。

\n

15.A

16.A

17.D解析:后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。

18.A解析:線性表的插入和刪除允許在任何位置進行,所以B選項的說法是正確的;棧的操作只允許在棧頂進行,因此,棧稱為先進后出表(FILO,FirstInLastOut),或“后進先出”表(LIFO,LastInFirstOut),所以C選項說法也是正確的;隊列(queue)是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),因此隊列亦稱作先進先出(FIFO,FirstInFirstOut)的線性表,或后進后出(LILO,LastInLastOut)的線性表。所以D選項說法也是正確的。

19.BC語言中,八進制數(shù)其開頭必須是數(shù)字“0”,其數(shù)字包括0~7,因此選項A錯誤。浮點數(shù)據(jù)的指數(shù)形式表示中,字母e或E之后的指數(shù)必須為整數(shù),所以選項C錯誤。選項D中,整型數(shù)據(jù)l0,000的表示形式是錯誤的。

20.C

21.數(shù)據(jù)流數(shù)據(jù)流解析:結構化分析方法的實質是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

22.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

23.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。

24.8888解析:C語言規(guī)定,以0開頭的整型常量為八進制。另外,在primf()函數(shù)中,%X表示以十六進制無符號形式輸出一個整數(shù),且十六進制中的ABCDEF為大寫字母。本題的輸出應該是八進制210的十六進制形式。將八進制轉換為十六進制,可以先將其轉換為二進制。因為1位八進制表示3位二進制,4位二進制表示1位十六進制。(210)8=(10001000)2=(88)16,故本題輸出為880

25.130130解析:本題主函數(shù)中用了一個for循環(huán),循環(huán)了3次:當i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各增1,變?yōu)?和1,然后遇到break語句,退出switch語句;當i=10和11時,i/10都等于1,執(zhí)行switch語句中的case1分支,兩次使n增1,變?yōu)?,退出switch語句。故該空格處應該填130。

26.1對多(或1:N)1對多(或1:N)

27.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結構(包括存儲結構、存取方式)改變時,不需要修改應用程序。而邏輯獨立性是指當邏輯結構改變時,不需要修改應用程序。

28.*s1!='\0'或*s1*t0=*t1*s1++*t1++s1=t0或s1=s1+strlen(str1)*s1!='\\0'或*s1\r\n*t0=*t1\r\n*s1++\r\n*t1++\r\ns1=t0或s1=s1+strlen(str1)

29.

30.7979解析:因為在調用子函數(shù)時進行的是數(shù)值傳遞,調用子函數(shù)并不能改變實參的值,所以經(jīng)過調用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

31.xx解析:函數(shù)的定義形式為;

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求得變量的Y次方。

32.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

33.220.000000220.000000解析:注意區(qū)分運算符的優(yōu)先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點數(shù)的形式輸出的,小數(shù)點后的0不能少。

34.a[22]=11

35.O(n)O(log2n)

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

37.77解析:解答本題的關鍵是要讀懂程序,要找出能被7或11整除的所有整數(shù),注意數(shù)學中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“‖”運算符,若要找能同時被7和11整除的所有整數(shù)則在if的條件中應使用“&&”運算符。

當然,如果m的值輸入50,即表達式fun(10,aa,&n);為fun(50,aa,&n);時輸入結果為:711142122283335424449。

38.i<=xz*y。i<=xz*y。解析:循環(huán)次數(shù)應該是x次,相當于x個y相乘,循環(huán)體中z作為累乘器,值為z*y。

39.\0'n++\\0'\r\nn++解析:第1個循環(huán)是求字符串a(chǎn)的長度,并存儲在變量num中,循環(huán)條件要控制是否取到字符串末尾的'\\0'。第2個循環(huán)通過兩個變量num和n的改變,將b字符串連接到a字符串后面,并將新的字符串長度記錄到num中。

40.謂詞演算謂詞演算

41.B解析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+1”,也就是只要i+1的值為真(非零值均為真),就執(zhí)行循環(huán)。當i=1的時候,i+1的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。

42.B解析:在本題中,s[0].a=1,s[1].b=5,所以輸出結果為6。

43.C解析:C語句必須以分號結束,選項A是正確的。復合語句在語法上被看作一條語句,選項B也是正確的。空語句也算是一條語句,因此如果空語句出現(xiàn)在條件或者循環(huán)語句中,一樣會被當作條件子句或者循環(huán)體來看待,所以選項c是錯誤的。賦值表達式末尾加分號就構成賦值語句,選項D正確。故本題應該選擇C。

44.D解析:C語言中數(shù)組下標是從0開始的,所以二維數(shù)組a[2][3]的第一維下標取值為0、1;第二維的下標取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數(shù)組元素a[0][0]。

45.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負責數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

46.C解析:本題考查了考生對數(shù)據(jù)庫基礎知識的記憶。數(shù)據(jù)庫技術的主要目的是有效地管理和存取數(shù)據(jù)資源,包括提供數(shù)

溫馨提示

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

評論

0/150

提交評論