2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021年云南省保山市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環境

2.

3.若有以下程序

則程序的輸出結果是

A.China!B.toChina!C.meyoutoChina!D.youtoChina!

4.若在線性表中采用折半查找法查找元素,該線性表應該()。

A.元素按值有序B.采用順序存儲結構C.元素按值有序,且采用鏈式存儲結構D.元素按值有序,且采用順序存儲結構

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

A.C程序由函數和過程組成B.C程序由主函數組成C.C程序由函數組成D.C程序中,主函數必須放在其他函數之前

6.下列二維數組初始化語句中,不正確的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

7.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

8.下列敘述中錯誤的是()。

A.C語言函數中定義的自動變量,系統不自動賦確定的初值

B.在C語言的同一函數中,各復合語句內可以定義變量,其作用域僅限于本復合語句內

C.C語言函數中定義的賦有初值的靜態變量,每調用一次函數為其賦一次初值

D.C語言函數的形參不可以說明為static型變量

9.

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

A.一個邏輯數據結構只能有一種存儲結構

B.邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構不影響數據處理的效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構影響數據處理的效率

11.參加百年阿里培訓的n位同學結伴去西湖旁邊為游人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學一組,請給出一個算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優的算法時間復雜度為?(假設體重均為整數)()

A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)

12.以下選項中能用作數據常量的是()。

A.115LB.0118C.1.5e1.5D.o115

13.在深度為5的滿二叉樹葉中,葉子結點的個數為()。

A.32B.31C.16D.15

14.

15.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結果正確

C.軟件測試的目的是盡可能多地發現程序中的錯誤

D.軟件測試的目的是使程序符合結構化原則

16.一個順序棧一旦聲明,其占用空間的大小()。

A.已固定B.可以變動C.不能固定D.動態變化

17.若以“a+”方式打開一個已存在的文件,以下敘述正確的是()。

A.文件打開時,原有文件內容不被刪除,可以進行添加和讀操作

B.文件打開時,原有文件內容不被刪除,位置指針移到文件開頭,可以進行重寫和讀操作

C.文件打開時,原有文件內容不被刪除,位置指針移到文件中間,可以進行重寫和讀操作

D.文件打開時,原有文件內容被刪除,只可進行寫操作

18.

19.設有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數fun返回值的類型是()。

A.T類型的結構體B.指向結構體類型的指針C.int類型的元素D.int類型的指針

20.已知8個數據元素為(34,76,45,18,26,54,92,65),按照依次插入結點的方法生成一棵二叉排序樹后,最后2層上的結點總數為______。

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

二、2.填空題(20題)21.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

22.以下sum函數的功能是計算下列級數之和。請給函數中的各變量正確賦初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

23.二分法查找僅限于這樣的表:表中的數據元素必須有序,其存儲結構必須是______。

24.以下程序從終端輸入一行字符放在s數組中,輸入以回車符作為結束,函數fun統計存放在s數組中每個數字字符的個數。形參ch指向s數組,形參n給出了s數組中字符的個數。在acc數組中用下標為0的元素統計字符“0”的個數,下標為1的元素統計字符“1”的個數,…。請填空。

#include<stdio.h>

voidfun(int*,char*,int);

main()

{chars[80],c;intacc[10],i=0;

printf("Entercharacters:\n");

while((c=getchar())!='\n')s[【】]=c;

fun(【】);

for(i=0;i<10;i++)printf("%c:%d\n",'0'+i,acc[i]);

printf("\n\n");

}

voidfun(int*a,char*ch,intn)

{inti,d;

for(i=0;i<10;i++)a[i]=【】;

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

{d=【】;a[d]++;}

}

25.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

26.下列程序的運行結果是______。

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

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

27.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請填空。

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=______;

}

returnm;

}

main()

{printf("%d\n",【】);}

28.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

30.數據結構包括數據的邏輯結構、數據的【】以及對數據的操作運算。

31.下列程序的輸出結果是【】。

voidfun(int*n)

{while((*n)--);

printf("%d",++(*n));

}

main()

{inta=1000;

fun(&a);

}

32.若下面程序的輸出結果是4,請填空。

main()

{inti,j,k;

k=0;i=j=【】;

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

}

33.有以下程序:

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

執行后輸出結果是上【】。

34.Jackson方法是一種面向【】的結構化方法。

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

36.以下程序是從終端讀入數據到數組中,統計其中正數的個數,并計算它們的和。請填空。

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d",【】);

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

{

if(a[i]>0)

{count++:

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum.count);

}

37.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請填空以實現拷貝。(注:不使用逗號表達式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

38.以下程序運行后的輸出結果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

39.設一棵完全二叉樹共有700個結點,則在該二叉樹中有【】個葉子結點。

40.有以下程序:

#include<stdio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運行時,如果從鍵盤輸入Y?N?<回車>,則輸出結果為【】。

三、1.選擇題(20題)41.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}執行后的輸出結果是

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

42.數據獨立性是數據庫技術的重要特點之一。所謂數據獨立性是指()

A.數據與程序獨立存放

B.不同的數據被存放在不同的文件中

C.不同的數據只能被對應的應用程序所使用

D.以上三種說法都不對

43.程序中若有如下說明和定義語句

Charfun(char*);

main()

{

char*s="one",a[5]={0}.(*f1)()=fun,ch;

}

以下選項中對函數fun的正確調用語句是

A.(*f1)(A);B.*fl(*s);C.fun(&A);D.ch=*fl(s);

44.若有說明intm[3][4]={3,9,7,8.5},(*q)[4];和賦值語句q=m;,則對數組元素m[i][j](其中0<=i<3,0<=j<4)值的正確引用為()。

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

45.十六進制數FF.1轉換成十進制數是()

A.255.625B.250.1625C.255.0625D.250.0625

46.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。

A.自頂向下B.由外向內C.由內向外D.自底向上

47.為了提高軟件模塊的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內容耦合D.數據耦合

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

A.內聚程度要盡量高,耦臺程度要盡量強

B.內聚程度要盡量高,耦合程度要盡量弱

C.內聚程度要盡量低,耦合程度要盡量弱

D.內聚程度要盡量低,耦合程度要盡最強

49.數據的存儲結構是指______。

A.數據所占的存儲空間量B.數據的邏輯結構在計算機中的表示C.數據在計算機中的順序存儲方式D.存儲在外存中的數據

50.在下列選項中,______不是一個算法一般應該具有的基本特征。

A.確定性B.可行性C.無窮性D.擁有足夠的情報

51.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

52.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

53.可在C程序中用作用戶標識符的一組標識符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

54.關系模型允許定義三類數據約束,下列不屬于數據約束的是()。A.A.實體完整性約束B.參照完整性約束C.域完整性約束D.用戶自定義的完整性約束

55.信息隱蔽的概念與下述哪一種概念直接相關()。

A.軟件結構定義B.模塊獨立性C.模塊類型劃分D.模塊耦合度

56.表示“在使用x之后,再使x的值加1”的正確方式是()

A.++xB.x++C.+xD.+x+

57.下列4組選項中,均不是C語言關鍵字的選項是______。

A.definesumtype

B.getccharprintf

C.includescanfcase

D.whilegopow

58.設有定義:structsk{inta;floatb;}data,*p;若有p=&data;,則對data中的a域的正確引用是()

A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a

59.以下程序的輸出結果是_______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7});Print("%d%d%d%d\n",a[0][3],a[l][2],a[2][1],a[3][0]);}

A.650B.1470C.5430D.輸出值不定

60.若有以下調用語句,則不正確的fun函數的首部是()。main(){inta[50],n;fun(n,&a[9]);┆}

A.voidfun(intm,intx[])

B.voidfun(ints,inth[41])

C.voidfun(intp,int*s)

D.voidfun(intn,inta)

四、選擇題(20題)61.

有下列程序:

fun(intX,inty){return(x+y);}

main

{inta=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

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

}

執行后的輸出結果是()。

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

62.以下關于return語句的敘述中正確的是()。

A.一個自定義函數中必須有一條return語句

B.一個白定義函數中可以根據不同情況設置多條return語句

C.定義成void類型的函數中可以有帶返回值的return語句

D.沒有return語句的自定義函數在執行結束時不能返回到調用處

63.

64.

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

A.一個邏輯數據結構只能有一種存儲結構

B.邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構不影響數據處理的效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構影響數據處理的效率

66.有三個關系R、S和t如下:由關系R和s通過運算得到關系T,則所使用的運算為()。

A.笛卡兒積B.交C.并D.自然連接

67.

68.

69.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

70.下列關于棧的描述錯誤的是()。

A.棧按“先進后出”組織數據B.棧是特殊的線性表,只能在一端插入或刪除數據C.棧具有記憶功能D.棧只能順序存儲

71.

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

73.

74.下面程序段的運行結果是()。

A.8B.12C.4D.7

75.C語言中用于結構化程序設計的三種基本結構是A.順序結構、選擇結構、循環結構

B.if、switch、break

C.for、while、do-while

D.if、for、continue

76.設有定義:

則以下賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

77.在深度為5的滿二叉樹葉中,葉子結點的個數為()。

A.32B.31C.16D.15

78.

(19)關系表中的每一橫行稱為一個()

A.元組

B.字段

C.屬性

D.碼

79.有以下程序:

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

A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf

80.

下列程序的輸出結果是()。

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

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

五、程序改錯題(1題)81.假如整數數列中的數不重復,并存放在數組中。下列給定的程序中,函數proc()的功能是:刪除數列中值為x的元素。n中存放的是數列中元素的個數。請修改程序中的錯誤,使它能夠得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放入結構體數組stu中,請編寫函數proc(),該函數的功能是:把高于等于平均分的學生數據放在b所指的數組中,高于等于平均分的學生人數通過形參n傳回,平均分通過函數值返回。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發、管理和文檔生成;過程支持軟件開發的各個環節的控制和管理。

2.C

3.D該程序首先定義*a和b[],并進行初始化。主函數中通過外層for循環語句,遍歷字符數組b[],并且將符合if條件語句的字符賦給數組p;for內層循環語句,遍歷字符數組a[]。再將符合if條件語句的結果輸出。因此D選項正確。

4.D

5.C

6.D解析:在對二維數組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規定,對于二維數組,只可以省略第1個方括號中的常量表達式,而不能省略第2個方括號中的常量表達式;賦的初值不能多于事先定義好的數組元素個數。

在選項D)賦值表達式中,對每一維的元素賦初值應用{},而不是()。

7.A本題考查了函數的調用。首先主函數定義了兩個字符型數據b和a,給b賦值為字母a.a賦值為字母A,調用fun(&.b,a)函數,*C=*c十1,a的ASCIl碼值加1后為b,A的ASCIl碼值加1后為B。輸出第一組值,排除C、D選項。B選項的值此時為小b,排除B選項,所以本題答案為A。

8.CA選項描述正確,自動變量未被賦初值,為隨機值;B選項描述正確,除在函數開始位置定義變量外,在復合語句內也可以定義變量;C選項描述錯誤,函數內的靜態變量只在第1次調用時賦值,以后調用保留上次的值;D選項描述正確,形參屬于局部變量,占用動態存儲區,而static型變量占用靜態存儲區。故本題答案為C選項。

9.C

10.D數據的存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式,一種數據結構可以根據需要采用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。

11.B

12.AA選項中“115L”表示長整型數據。B選項是八進制常量的表示方法,但是在八進制中不能含有數字8,所以B選項錯誤。C選項中e后面應該是整數,而不能是小數1.5,所以C選項錯誤。D選項中八進制常量應該是以數字“0”開始,而不是以字母“o”開始。故本題答案為A選項。

13.C根據二叉樹的性質及定義,一棵深度為k且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最后一層的結點數,又根據滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度為5的滿二叉樹的葉子結點數為25-1=16個。

14.D

15.C解析:關于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發現錯誤而執行程序的過程;一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的用例;一個成功的測試是發現了至今尚未發現的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發現程序中的錯誤。本題答案為C。

16.A

17.AC語言中,文件打開方式“a+”表示打開一個文本文件,從文件開始位置讀,在文件尾部添加數據,如果指定的文件不存在,系統將使用調用fopen時指定的文件名創建一個新的文件;如果指定的文件存在,那么文件原有內容將被保存,新的數據追加到原有文件之后。故本題答案為A選項。

18.D

19.B由題意可知:使用typedef將類型“struct{intx,y;}*”重命名為“USER”,所以函數fun的返回類型為“struct{intx,y;}*”,即指向結構體類型的指針。故本題答案為B選項。

20.B

21.概念設計階段(數據庫概念設計階段)概念設計階段(數據庫概念設計階段)

22.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數的功能是求表達式s的級數之和,該函數的大致思路是:在該函數中,定義了—個整型變量i用作循環計數器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環將題目中的數學表達式的各個子項求出來并累加到s中,所以說,在該題的空格處應該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達式的順序可任意)給a,b,s賦1或1.0或1都可以。

23.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數據元素有序,第二要求是按順序方式存儲。

24.i++accsi0ch[i]-'0'

25.可重用性可重用性解析:繼承的優點:相似的對象可以共享程序代碼和數據結構,從而大大減少了程序中的冗余,提高軟件的可重用性。

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

27.fun中的答案為-fmain函數中的答案為fun(10)fun中的答案為-f,main函數中的答案為fun(10)解析:根據題意可知函數fun的功能是計算12+3-4+…+n的和,所以空格處應填入-f,main函數中輸出1-2+3-4+…+9-10的結果,所以函數的實參為10,函數調用為fun(10)。

28.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

29.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數fread和fwrite的用法。fwrite函數將數組a的前5個元素輸出到文件fp中兩次,共10個字節,再調用fread函數從文件fp中讀取這10個字節的數據到數組a中,此時數組a的內容就變為{1,2,3,0,0,1,2,3,0,0},最后的輸出結果為'1,2,3,0,0,1,2,3,0,0,'。

30.存儲結構數據結構包括3個方面,即數據的邏輯結構、數據的存儲結構及對數據的操作運算。

31.00解析:while循環的條件為即當*n非零時執行循環,(*n)一是先使用*n的值再對*n減1,結束while循環后*n的值為-1。++(*n)是先對*n加1再使用*n的值,-1+1=0,輸出*n的值即輸出0。

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

33.8484解析:函數f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調用該函數后,作為實參的y的值將不改變,而實參x的值將改變,故最后輸出的y的值為4,而x的值為8。

34.數據結構數據結構解析:Jackson方法是—‘種面向數據結構的結構化方法。

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

36.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本題要求從終端讀入數據到數組中,統計其中正數的個數,井計算它們的和。程序中首先要對存放正數個數的變量count及存放和值的變量sum初始化為0,所以第一空應填0。接著要求從終端讀入數據到數組中,可以通過scanf函數實現,因此第二空應填&a[i]。最后通過sum+=a[i];語句累加正數a[i]的值到sum中,因此第三空應填a[i]。

37.s[i++]s[i++]解析:本題中為了能實現字符串的拷貝,需要使字符數組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現。

38.136136解析:本題考核的知識點是函數遞歸。主函數調用函數fun(6),由于6/2>0為真遞歸調用fun(3),接著遞歸調用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應該填136。

39.350350解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。在根據完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結點。因此,設一棵完全二叉樹具有n個結點,若n為偶數,則在該二叉樹中有n/2個葉子結點以及n/2-1個度為2的結點,還有1個是度為1的結點:若n為奇數,則在該二叉樹中有[n/2]+1個葉子結點以及[n/2]個度為2的結點,沒有度為1的結點。本題中,完全二叉樹共有700個結點,700是偶數,所以,在該二叉樹中有350個葉子結點以及349個度為2的結點,還有1個是度為1的結點。所以,本題的正確答案為350。

40.XX解析:程序是從鍵盤緩沖區循環接收字符,并輸出接收到的字符在ASCII碼表中的前一個字符,直到接收到‘?’為止。

41.A解析:本題考核的知識點是數組的定義、賦初值以及函數調用的組合應用.本題中函數sum(int*A)的作用是:將形參a所指的數組中的第二個元素的值a[1]賦給第一個元素a[0]。主函數中定義一個長度為10的整型數組并賦初值,接著執行一個for循環,該循環共執行了3次.當i=2時,調用函數sum(&aa[2]),主函數中將&aa[2]作為實參傳給行參a,所以此時形參a所指的數組的第一個元素和第二個元素分別為aa[2]和aa[3],故執行完該函數后將aa[3]的值賦給aa[2],即aa[1]=aa[3]=4,當i=1時,調用函數sum(&aa[1]),主函數中將&aa[1]作為實參傳給行參a,所以此時形參a所指的數組的第一個元素和第二個元素分別為aa[1]和aa[2],故執行完該函數后將aa[2]的值賦給aa[1],即aa[1]=aa[2]=4;當i=0時;調用函數sum(&aa[0]),,主函數中將&aa[0]作為實參傳給行參a,所以此時形參a所指的數組的第一個元素和第二個元素分別為aa[0]和aa[1],故執行完該函數后將aa[1]的值賦給aa[0],即aa[0]=aa[1]=4;故最后輸出的aa[0]的值為4,所以,4個選項中選項A符合題意。

42.D解析:在數據庫系統中,通過系統提供的映象功能,使數據具有兩方面的獨立性:一是物理獨立性。即由于數據的存儲結構與邏輯結構之間由系統提供映象,使得當數據的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改。二是邏輯獨立性。即由于數據的局部邏輯結構(它是總體邏輯結構的一個子集,由具體的應用程序所確定,并且根據具體的需要可以作一定的修改)與總體邏輯結構之間也由系統提供映象,使得當總體邏輯結構改變時,其局部邏輯結構可以不變,從而根據局部邏輯結構編寫的應用程序也可以不必修改。由此可知,選項A.B與C中的說法都是錯誤的。

43.A解析:在C語言中函數名代表該函數的入口地址,因此可以定義一種指向函數的指針來存放這種地址.其定義形式為:

函數類型(*函數指針名)(函數參數列表);

其中,函數參數列表可以省略。通過函數指針調用函數的形式為:

(*函數指針)(函數參數列表)

調用時函數的參數列表是不能省略的。所以本題的正確答案為選項A。

44.D解析:*(q+i)指向第i行首地址,*(*(q+i)+j)代表第i行第j個元素。

45.C

46.B解析:視圖設汁一般有3種設計次序,它們分別是自頂向下、自底向上和由內

向外,它們又為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握,可以

單獨使用也可混合使用。

注意:數據庫概念設計的過程:首先選擇局部應用,再進行局部視圖設計,最后

對局部視圖進行集成得到概念模式。

47.D解析:耦合性與內聚性是模塊獨立性的兩個定性標準,是互相關聯的。在程序設計中,各模塊間的內聚性越強,則耦合性越弱。一般較優秀的軟件設計,應盡量做到高內聚、低耦合,有利于提高模塊的獨立性。

48.B

49.B解析:數據元素在計算機存儲空間中的位置關系與它們的邏輯關系不一定是相同的,而且一般不可能相同。數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構,也稱數據的物理結構。

50.C解析:作為一個算法,一般應具有以下幾個基本特征。①可行性②確定性③有窮性④擁有足夠的情報

51.A解析:C語言的字符常量是用單引號(\')括起來的一個字符,也可以用以一個“\\”開頭的字符序列來表示字符常量。其中形式\\ddd表示1到3位8進制數所代表的字符;形式\\xhh表示1到2位16進制數所代表的字符。在本題中\'\\x13\'表示回車符,是一個字符常量;而\'\\081\'用8進制數所代表的字符形式不正確,因為8進制數所表示的字符中不會出現數字“8”;\'65\'單引號(即撇號)括起來的不是一個字符,而是一個十進制數字;'\\n'是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。

52.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

53.A解析:在C語言中,合法標識符的命名規則是:標識符可以由字母、數字和下畫線3種字符組成,且第一個字符必須為字母或下畫線。C語言的標識符可以分為關鍵字、預定義標識符和用戶標識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關鍵字。

54.C數據約束是用來確保數據的準確性和一致性的。常見的四種數據約束如下:

(1)實體完整性約束:規定表的每一行在表中是唯一的實體。

(2)域完整性約束:是指表中的列必須滿足某種特定的數據類型約束,其中約束又包括取值范圍、精度等規定。

(3)參照完整性約束:是指兩個表的主關鍵字和外關鍵字的數據應一致,保證了表之間數據的一致性,防止了數據丟失或無意義的數據在數據庫中擴散。

(4)用戶定義的完整性約束:不同的關系數據庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關系數據庫的約束條件,它反映某一具體應用必須滿足的語義要求。

在上述四種數據約束中,不屬于關系模型定義的三種數據約束的是域完整性約束。

55.B解析:信息隱蔽是指在一個模塊內包含的信息(過程或數據),對于不需要這些信息的其他模塊來說是不能訪問的。模塊獨立性是指每個模塊只完成系統要求的獨立的子功能,并且與其他模塊的聯系最少且接口簡單。衡量軟件的模塊獨立性的度量標準是耦合性和內聚性。一個模塊的耦合性越強,則該模塊的模塊獨立性越強。

56.B

57.A解析:本題各選項中的關鍵字只有三個:char,case,while。

58.B

59.A解析:對未給出初始值的整數數組元素,被默認初始化為零。

60.D解析:根據main函數中的fun函數調用語句可知,fun函數的第二個參數是一個地址值,對應的形參可以是指針變量或一維數組,所以D)不正確。

61.C解析:函數fun(intx,inty)的功能是返回兩個整型數據的和。在主函數中,變量a,b,c的初始值分別為1,2,3。因此逗號表達式“a++,b++,a+b”的值等于5,表達式c++的值為3,調用子函數的表達式為“fun(5,3);”,其返回

溫馨提示

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

評論

0/150

提交評論