2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()

A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確

2.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(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

3.若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

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

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

5.下列程序執(zhí)行后的輸出結(jié)果是()。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

6.以下選項中不屬于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

7.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

8.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

9.

10.下列程序的運行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

11.下列程序的輸出結(jié)果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

{printf("%d\n",*(a[1]+2));}

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.設(shè)有以下語句:charstr1[]="string"mstr2[8],*str3,*str4=="string";則______不是對庫函數(shù)的正確調(diào)用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

13.以下程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

14.下列4個關(guān)于C語言的結(jié)論中錯誤的是()。

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ū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同

15.

16.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

17.在下列定義語句中,編譯時會出現(xiàn)編譯錯誤的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a(chǎn)’;D.chara=“aa”;

18.以下描述中正確的是

A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復合語句

B.do-while循環(huán)由d。開始,用while結(jié)束,在while(表達式)后面不能寫分號

C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷

D.do-while循環(huán)中,根據(jù)情況可以省略while

19.在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個return語句可以返回多個值給調(diào)用函數(shù)

20.若有如下形式的函數(shù):intfun(inta[],int*p,intn){…}調(diào)用函數(shù)之前需要對函數(shù)進行聲明,則以下選項中錯誤的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

二、2.填空題(20題)21.在計算機領(lǐng)域中,通常用英文單詞“Byte'’表示【】。

22.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

23.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

24.執(zhí)行以下程序段后,s的值為【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

25.能把計算機處理好的結(jié)果轉(zhuǎn)換成為文本、圖形、圖像或聲音等形式并輸送出來的設(shè)備稱為【】設(shè)備。

26.計算機病毒除有破壞性、潛伏性和激發(fā)性外,還有一個最明顯的特性是【】

27.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

28.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

29.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù),累加的和值放入x所指的存儲單元中。請?zhí)羁铡?/p>

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

30.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

31.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

32.數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、()和數(shù)據(jù)條件。

33.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

34.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

35.若a的值為1,則表達式!a‖++a的值是______。

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

main()

{charc='z';

printf("%c",c-25);}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

38.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

39.設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為DBACFEG,則后序遍歷結(jié)果為【】。

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

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

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

42.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

43.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

44.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。

A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算

45.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序和邏輯順序相同

46.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}執(zhí)行后輸出結(jié)果是

A.28B.22C.16D.4

47.下列變量說明語句中,正確的是______。

A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;

48.SQL語言又稱為______。

A.結(jié)構(gòu)化定義語言B.結(jié)構(gòu)化控制語言C.結(jié)構(gòu)化查詢語言D.結(jié)構(gòu)化操縱語言

49.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

50.整型變量x和y的值相等,且為非。值,則以下選項中,結(jié)果為0的表達式是()

A.x||yB.x|yC.x&yD.xy

51.設(shè)a=1,b=2,c=3,d=4,則表達式a<b?a:c<d?a:d的結(jié)果為______。

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

52.有以下程序:structS{intn;inta[20];};voidf(int*a,intn){inti;for(i=0;i<n-1;i++)a[i]+=i;}mainf(){inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};if(s.a,s.n);for(i=0;i<s.n;i++)printf("%d",s.a[i]);}程序運行后的輸出結(jié)果是()。

A.2,4,3,9,12,12,11,11,18,9

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

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

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

53.下列語句執(zhí)行后的結(jié)果是______。y=5;p=;x=*p++;

A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=6

54.下面四個選項中,均是不合法的用戶標識符的選項是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

55.設(shè)有聲明語句chara='\72';,則變量a______。

A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法

56.以下能正確定義一維數(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";

57.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

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

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

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

59.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}

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

60.已有定義inta=-2;和輸出語句printf("%81x",a);以下正確的敘述是()。

A.整型變量的輸出形式只有%d一種

B.%x是格式符的一種,它可以適用于任何一種類型的數(shù)據(jù)

C.%x是格式符的一種,其變量的值按十六進制輸出,但%81x是錯誤的

D.%81x不是錯誤的格式符,其中數(shù)字8規(guī)定了輸出字段的寬度

四、選擇題(20題)61.設(shè)fun函數(shù)的定義形式為voidfun(charch,floatx){…}則下列對函數(shù)fun的調(diào)用語句中,正確的是()。

A.fun("abc",3.0);

B.t=fun(D.16.5);

C.fun(65,2.8);

D.fun(32,32);

62.

63.

64.

65.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(工具軟件)。下面屬于應(yīng)用軟件的是().

A.學生成績管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)

66.有以下程序

67.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

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

68.利用fseek函數(shù)可實現(xiàn)的操作是()。

A.實現(xiàn)文件的順序讀寫B(tài).改變文件的位置指針C.實現(xiàn)文件的隨機讀寫D.以上答案均正確

69.

A.包含l個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

70.以下不能正確定義二維數(shù)組的選項是()。

A.

B.

C.

D.

71.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

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

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

73.

74.

75.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

76.

77.

有以下程序:

main

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

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。

A.i-1B.iC.i+1D.4一i

78.有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是()。

A)

B)

A.

B.

79.(56)下列不屬于軟件調(diào)試技術(shù)的是()

A.強行排錯法

B.集成測試法

C.回溯法

D.原因排除法

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

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:求出如下分數(shù)序列的前n項之和,結(jié)果通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:132333431424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.B

3.B解析:本題考核的知識點是for循環(huán)次數(shù)的計算.本程序中for循環(huán)的次數(shù)為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c.而最開始s的值為a,故4個選項中選項B符合題意.

4.B

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

6.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。

7.A

8.B當用指數(shù)形式表示浮點數(shù)據(jù)時,E的前后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù)。

9.D

10.B解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:S=m+n+m+n*k=1+2+1+2*3=10。

11.B

12.C解析:C語言中:strcpy(st1,st2);,其兩個參數(shù)均為字符指針或字符數(shù)組,選項C中的目的串指針str3沒有指向具體有效的存儲單元,故是錯誤的調(diào)用。

13.D解析:本題考查帶參數(shù)的宏調(diào)用。a/=SQR(k+m)/SQR(k+m)進行宏替換后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

14.D解析:本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次。

15.A

16.D“max=MIN;”語句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時都重新賦值,值沒有變化。

17.DD選項中將字符串常量“aa”賦給字符變量a是錯誤的。故本題答案為D選項。

18.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達式);,其中循環(huán)體語句可以是復合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

19.D

20.AC語言中,函數(shù)聲明的函數(shù)名、返回值類型和參數(shù)列表必須與函數(shù)定義相同。其中參數(shù)列表中可以省略參數(shù)名。題干中,fun函數(shù)返回整型,3個參數(shù)分別是:整型指針、整型指針、整型。選項A中,第1個參數(shù)應(yīng)該是整型指針類型,第2個參數(shù)也應(yīng)該是指針類型,錯誤;其他選項都正確。故本題答案為A選項。

21.字節(jié)字節(jié)

22.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k)更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。

23.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

24.600600解析:程序中for循環(huán)的條件是當前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII碼值,則s=10*s+ch[a]-\'0\'。計算結(jié)果是將字符串'600'轉(zhuǎn)換為整型數(shù)600。

25.輸出輸出

26.傳染性或傳播性傳染性或傳播性

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

28.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。

29.r+b[k]*x

30.&a&bmaxintxyreturn(z)

31.模塊化模塊化

32.數(shù)據(jù)操作數(shù)據(jù)操作解析:數(shù)據(jù)模型就是現(xiàn)實世界的反映,數(shù)據(jù)模型所描述的內(nèi)容有3個部分,它們是數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作與數(shù)據(jù)約束。

33.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

34.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對字符數(shù)組s2和字符數(shù)組s1進行比較。如果s1<s2,則返回負數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

35.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。

36.aa解析:“z”的ASCII碼值為122,經(jīng)過c-25運算后得97,以字符形式輸出是a。

37.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

38.D

39.ACBEGFDACBEGFD解析:①確定根節(jié)點。在前序遍歷中,首先防問根結(jié)點,因此可以確定前序序列DBACFEG中的第一個結(jié)點D為二叉樹的根結(jié)點。

②劃分左子樹和右子樹。在中序遍歷中,訪問根結(jié)點的次序為居中,首先訪問訪問左子樹上的結(jié)點,最后訪問右子樹上的結(jié)點,可知,在中序序列ABCDEFG中,以根結(jié)點D為分界線,子序列ABC在左子樹中,子序列EFG在右子樹中。如下圖所示。

③確定左子樹的結(jié)構(gòu)。對于左子樹ABC,位于前序序列最前面的一個結(jié)點為了樹的根結(jié)點,根據(jù)前序遍歷結(jié)果,B為該了樹的根結(jié)點,中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列,所以A為該左子樹的左結(jié)點,C為右結(jié)點?,F(xiàn)在可確定左子樹結(jié)構(gòu)如下:

④確定右子樹的結(jié)構(gòu)。同理,可知右子樹的結(jié)構(gòu)。

本二叉樹恢復的結(jié)果如圖所示。

根據(jù)后序遍歷的原則,該二叉樹后序遍歷的結(jié)果為ACBEGFD。

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

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

42.B解析:本題是一個雙重循環(huán),而外循環(huán)的循環(huán)條件i<O在剛開始的時候就不滿足(i的初值為4),所以循環(huán)體一次也不會執(zhí)行。故應(yīng)該選擇B。

43.C解析:data是一結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,改選項B不正確:選項D表達式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確;4個選項中只有C正確。

44.C解析:關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)女發(fā)展起來的,它是以關(guān)系代數(shù)作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數(shù)據(jù)庫環(huán)境專門設(shè)計的操作,包括對關(guān)系進行垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。

45.C【解析】在鏈表中因為除了存放數(shù)據(jù)元素之外,還要存放指針,所以鏈表花費的存儲空間要比順序表還要多,在插入和刪除數(shù)據(jù)元素時,只需要移動相應(yīng)的記錄指針即可,在鏈表中,數(shù)據(jù)的物理結(jié)構(gòu)與邏輯結(jié)構(gòu)不一定相同,因為是靠指針來實現(xiàn)對數(shù)據(jù)的指定的,所以不能進行隨機存取。

46.A解析:本題考核的知識點是宏定義的簡單應(yīng)用。本題中首先將所有的宏替換掉,則表達式為i=4+4*4+4/2+2*2+2,故最后輸出的i的值為28。所以,4個選項中選項A符合題意。

47.D解析:同時說明多個變量為同一類型時,變量之間應(yīng)用逗號分隔。故D為正確選項。

48.CC?!窘馕觥縎QL語言的全稱為StructuredQueryLanguage,它是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范。它包含數(shù)據(jù)查詢語言、數(shù)據(jù)操縱語言、數(shù)據(jù)定義語言和數(shù)據(jù)控制語言4個部分。

49.C解析:位運算符“|”的作用是按位或,即兩個二進制數(shù)的相應(yīng)位中只要有—個為1,該位的結(jié)果值為1。最后以字符型輸出,98對應(yīng)的字符“b”。

50.D

51.D

52.A

53.A解析:p=&y使指針p指向y,x=*p++使x=y,P指向下一個數(shù)據(jù)。

54.C解析:C語言規(guī)定的標識符只能由字母、數(shù)字和下劃線3種字符組成,第一個字符必須為字母或下劃線,并且不能使用C語言中的關(guān)鍵字作為標識符。選項C)中g(shù)oto和int是關(guān)鍵字,b-a中'-'不是組成標識符的3種字符之一;選項D)中int是關(guān)鍵字,所以,均是不合法用戶標識符的選項是C)。

55.A解析:轉(zhuǎn)文字符常量'\\xx'可以把'\\'后面的數(shù)字轉(zhuǎn)換為對應(yīng)的ASCII字符。

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

57.B數(shù)據(jù)庫應(yīng)用系統(tǒng)的邏輯設(shè)計包括數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫事務(wù)概要設(shè)計和應(yīng)用程序概要設(shè)計三方面。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計的主要步驟為:將E—R圖轉(zhuǎn)換為初始關(guān)系模式,對初始關(guān)系模式進行優(yōu)化,檢查關(guān)系表對數(shù)據(jù)庫事務(wù)的支持性,確定關(guān)系模式完整性約束,設(shè)計基于關(guān)系模式的用戶視圖。

58.D

59.D解析:本題主要是考查帶參數(shù)的宏定義及其相關(guān)運算。本題中宏運算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

60.D解析:整型變量的輸出形式有:%d,%o,%x,%u等,%x是以十六進制無符號形式輸出整數(shù)。十六進制數(shù)同樣也可以像%md一樣按%mlx輸出指定寬度的長整型數(shù)。

61.C由題目的已知條件函數(shù)fun的定義形式voidfun(charch,floatx){…)可知第一個形參為字符型,所以A不符合,第二個形參為精度型,所以D不符合,函數(shù)fun定義為void型(無論返回值型),故其沒有返回值,所以選項B錯誤。選項C的第一個實參的類型為字符型,第二個實參的類型為單精度型,與函數(shù)fun的形式參數(shù)的類型相符合,所以選項C為正確答案。

62.D

63.A

64.C

65.A軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件,因此B)、C)、D)都是系統(tǒng)軟件,只有A)是應(yīng)用軟件。

66.Af函數(shù)是值傳遞,不會改變main函數(shù)中t的值,所以結(jié)果為A)。

67.C數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導地位,所以選擇C)。

68.D解析:改變文件位置指針函數(shù)fseek()的功能:①改變文件的位置指針;②輔助實現(xiàn)文件的順序讀寫;③輔助實現(xiàn)文件的隨機讀寫。

69.AC語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個”\”開頭的字符。其中,”\

70.D本題的考查點是二維數(shù)組的定義和初始化。

選項A)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.O

選項B)定義的數(shù)組中各元素實際上是這樣的:

1,2

3.4

選項c)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.3

選項D)錯在省略了第2維的長度。C中在對數(shù)組進行初始化時,如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。

71.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。

72.Dk=0,s[k]=1,v1++,v2++,v3++,v4++;k=1,s[k]=2,v2++,v4++;k=3,s[k]=1,……,直到k=8,s[k]=0.退出循環(huán)

73.C

74.D

75.A\n解釋程序是將源程序(如BASIC)作為輸入,解釋一句后就提交計算機執(zhí)行一句,并不形成目標程序。編譯程序是把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉(zhuǎn)換,產(chǎn)生出機器語言的目標程序,然后再讓計算機執(zhí)行這個目標程序,得到計算結(jié)果。

\n

76.D

77.B

\n本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標相同,所以j=i。

\n

78.Caa是字符串,字符串的表示要用雙引號,可以賦值給字符數(shù)組和字符指針變量,但字符串不能賦值給字符變量,只能給字符變量賦值單個字符。

79.B

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

81.(1)錯誤:fun(intn)

正確:doublefun(intn)

(2)錯誤:s=s+(Double)a/b;

正確:s=s+(double)a/b;

【解析】本題考查函數(shù)的定義規(guī)則。函數(shù)定義的一般形式為類型標識符函數(shù)名(形式參數(shù)表列){函數(shù)體}。fun()函數(shù)中,最后返回的是變量s,由變量s的定義可知,返回值是double型,所以fun()函數(shù)定義時應(yīng)明確注明標識符double類型。Double為書寫問題,寫程序時切記書寫格式。

82.

【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以首先通過行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個元素,并將其放入一維數(shù)組中,最后將一維數(shù)組的長度通過形參返回到主函數(shù)當中。

2021年遼寧省朝陽市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()

A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確

2.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(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

3.若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

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

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

5.下列程序執(zhí)行后的輸出結(jié)果是()。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

6.以下選項中不屬于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

7.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

8.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

9.

10.下列程序的運行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

11.下列程序的輸出結(jié)果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

{printf("%d\n",*(a[1]+2));}

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.設(shè)有以下語句:charstr1[]="string"mstr2[8],*str3,*str4=="string";則______不是對庫函數(shù)的正確調(diào)用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

13.以下程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

14.下列4個關(guān)于C語言的結(jié)論中錯誤的是()。

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ū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同

15.

16.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

17.在下列定義語句中,編譯時會出現(xiàn)編譯錯誤的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a(chǎn)’;D.chara=“aa”;

18.以下描述中正確的是

A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復合語句

B.do-while循環(huán)由d。開始,用while結(jié)束,在while(表達式)后面不能寫分號

C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷

D.do-while循環(huán)中,根據(jù)情況可以省略while

19.在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個return語句可以返回多個值給調(diào)用函數(shù)

20.若有如下形式的函數(shù):intfun(inta[],int*p,intn){…}調(diào)用函數(shù)之前需要對函數(shù)進行聲明,則以下選項中錯誤的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

二、2.填空題(20題)21.在計算機領(lǐng)域中,通常用英文單詞“Byte'’表示【】。

22.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

23.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

24.執(zhí)行以下程序段后,s的值為【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

25.能把計算機處理好的結(jié)果轉(zhuǎn)換成為文本、圖形、圖像或聲音等形式并輸送出來的設(shè)備稱為【】設(shè)備。

26.計算機病毒除有破壞性、潛伏性和激發(fā)性外,還有一個最明顯的特性是【】

27.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

28.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

29.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù),累加的和值放入x所指的存儲單元中。請?zhí)羁铡?/p>

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

30.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

31.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

32.數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、()和數(shù)據(jù)條件。

33.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

34.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

35.若a的值為1,則表達式!a‖++a的值是______。

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

main()

{charc='z';

printf("%c",c-25);}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

38.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

39.設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為DBACFEG,則后序遍歷結(jié)果為【】。

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

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

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

42.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

43.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

44.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。

A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算

45.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序和邏輯順序相同

46.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}執(zhí)行后輸出結(jié)果是

A.28B.22C.16D.4

47.下列變量說明語句中,正確的是______。

A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;

48.SQL語言又稱為______。

A.結(jié)構(gòu)化定義語言B.結(jié)構(gòu)化控制語言C.結(jié)構(gòu)化查詢語言D.結(jié)構(gòu)化操縱語言

49.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

50.整型變量x和y的值相等,且為非。值,則以下選項中,結(jié)果為0的表達式是()

A.x||yB.x|yC.x&yD.xy

51.設(shè)a=1,b=2,c=3,d=4,則表達式a<b?a:c<d?a:d的結(jié)果為______。

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

52.有以下程序:structS{intn;inta[20];};voidf(int*a,intn){inti;for(i=0;i<n-1;i++)a[i]+=i;}mainf(){inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};if(s.a,s.n);for(i=0;i<s.n;i++)printf("%d",s.a[i]);}程序運行后的輸出結(jié)果是()。

A.2,4,3,9,12,12,11,11,18,9

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

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

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

53.下列語句執(zhí)行后的結(jié)果是______。y=5;p=;x=*p++;

A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=6

54.下面四個選項中,均是不合法的用戶標識符的選項是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

55.設(shè)有聲明語句chara='\72';,則變量a______。

A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法

56.以下能正確定義一維數(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";

57.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

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

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

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

59.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}

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

60.已有定義inta=-2;和輸出語句printf("%81x",a);以下正確的敘述是()。

A.整型變量的輸出形式只有%d一種

B.%x是格式符的一種,它可以適用于任何一種類型的數(shù)據(jù)

C.%x是格式符的一種,其變量的值按十六進制輸出,但%81x是錯誤的

D.%81x不是錯誤的格式符,其中數(shù)字8規(guī)定了輸出字段的寬度

四、選擇題(20題)61.設(shè)fun函數(shù)的定義形式為voidfun(charch,floatx){…}則下列對函數(shù)fun的調(diào)用語句中,正確的是()。

A.fun("abc",3.0);

B.t=fun(D.16.5);

C.fun(65,2.8);

D.fun(32,32);

62.

63.

64.

65.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(工具軟件)。下面屬于應(yīng)用軟件的是().

A.學生成績管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)

66.有以下程序

67.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

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

68.利用fseek函數(shù)可實現(xiàn)的操作是()。

A.實現(xiàn)文件的順序讀寫B(tài).改變文件的位置指針C.實現(xiàn)文件的隨機讀寫D.以上答案均正確

69.

A.包含l個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

70.以下不能正確定義二維數(shù)組的選項是()。

A.

B.

C.

D.

71.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

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

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

73.

74.

75.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

76.

77.

有以下程序:

main

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

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。

A.i-1B.iC.i+1D.4一i

78.有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是()。

A)

B)

A.

B.

79.(56)下列不屬于軟件調(diào)試技術(shù)的是()

A.強行排錯法

B.集成測試法

C.回溯法

D.原因排除法

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

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:求出如下分數(shù)序列的前n項之和,結(jié)果通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:132333431424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.B

3.B解析:本題考核的知識點是for循環(huán)次數(shù)的計算.本程序中for循環(huán)的次數(shù)為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c.而最開始s的值為a,故4個選項中選項B符合題意.

4.B

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

6.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。

7.A

8.B當用指數(shù)形式表示浮點數(shù)據(jù)時,E的前后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù)。

9.D

10.B解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:S=m+n+m+n*k=1+2+1+2*3=10。

11.B

12.C解析:C語言中:strcpy(st1,st2);,其兩個參數(shù)均為字符指針或字符數(shù)組,選項C中的目的串指針str3沒有指向具體有效的存儲單元,故是錯誤的調(diào)用。

13.D解析:本題考查帶參數(shù)的宏調(diào)用。a/=SQR(k+m)/SQR(k+m)進行宏替換后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

14.D解析:本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次。

15.A

16.D“max=MIN;”語句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時都重新賦值,值沒有變化。

17.DD選項中將字符串常量“aa”賦給字符變量a是錯誤的。故本題答案為D選項。

18.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達式);,其中循環(huán)體語句可以是復合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

19.D

20.AC語言中,函數(shù)聲明的函數(shù)名、返回值類型和參數(shù)列表必須與函數(shù)定義相同。其中參數(shù)列表中可以省略參數(shù)名。題干中,fun函數(shù)返回整型,3個參數(shù)分別是:整型指針、整型指針、整型。選項A中,第1個參數(shù)應(yīng)該是整型指針類型,第2個參數(shù)也應(yīng)該是指針類型,錯誤;其他選項都正確。故本題答案為A選項。

21.字節(jié)字節(jié)

22.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k)更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。

23.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

24.600600解析:程序中for循環(huán)的條件是當前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII碼值,則s=10*s+ch[a]-\'0\'。計算結(jié)果是將字符串'600'轉(zhuǎn)換為整型數(shù)600。

25.輸出輸出

26.傳染性或傳播性傳染性或傳播性

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

28.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。

29.r+b[k]*x

30.&a&bmaxintxyreturn(z)

31.模塊化模塊化

32.數(shù)據(jù)操作數(shù)據(jù)操作解析:數(shù)據(jù)模型就是現(xiàn)實世界的反映,數(shù)據(jù)模型所描述的內(nèi)容有3個部分,它們是數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作與數(shù)據(jù)約束。

33.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

34.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對字符數(shù)組s2和字符數(shù)組s1進行比較。如果s1<s2,則返回負數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

35.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。

36.aa解析:“z”的ASCII碼值為122,經(jīng)過c-25運算后得97,以字符形式輸出是a。

37.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

38.D

39.ACBEGFDACBEGFD解析:①確定根節(jié)點。在前序遍歷中,首先防問根結(jié)點,因此可以確定前序序列DBACFEG中的第一個結(jié)點D為二叉樹的根結(jié)點。

②劃分左子樹和右子樹。在中序遍歷中,訪問根結(jié)點的次序為居中,首先訪問訪問左子樹上的結(jié)點,最后訪問右子樹上的結(jié)點,可知,在中序序列ABCDEFG中,以根結(jié)點D為分界線,子序列ABC在左子樹中,子序列EFG在右子樹中。如下圖所示。

③確定左子樹的結(jié)構(gòu)。對于左子樹ABC,位于前序序列最前面的一個結(jié)點為了樹的根結(jié)點,根據(jù)前序遍歷結(jié)果,B為該了樹的根結(jié)點,中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列,所以A為該左子樹的左結(jié)點,C為右結(jié)點。現(xiàn)在可確定左子樹結(jié)構(gòu)如下:

④確定右子樹的結(jié)構(gòu)。同理,可知右子樹的結(jié)構(gòu)。

本二叉樹恢復的結(jié)果如圖所示。

根據(jù)后序遍歷的原則,該二叉樹后序遍歷的結(jié)果為ACBEGFD。

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

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

溫馨提示

  • 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

提交評論