2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.A[N][N]是對稱矩陣,將下面三角(包括對角線)以行序存儲到一維數(shù)組T[N(N+1)/2]中,則對任一上三角元素a[i][j]對應T[k]的下標k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

2.

3.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

4.

5.設ch是char型變量,值為'A',則表達式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。

A.ZB.aC.zD.A

6.設有如下定義和語句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的數(shù)據(jù)為58192765190,其中第1個數(shù)據(jù)代表的是它后面數(shù)據(jù)的個數(shù)。若文件已正確打開,則以下程序段中能將文件的最后5個數(shù)據(jù)依次正確讀入數(shù)組data[0]~data[4]中的是()。

A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);

B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);

D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

7.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。

A.可能是2B.一定是2C.可能是1D.一定是1

8.算法應該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

9.在非線性結構中,每個結點()。

A.無直接前趨

B.只有一個直接前趨和個數(shù)不受限制的直接后繼

C.只有一個直接前驅和后繼

D.有個數(shù)不受限制的直接前驅和后繼

10.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結點C.數(shù)據(jù)類型D.數(shù)據(jù)項

11.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結果是()。A.1256B.5634C.5612D.3456

12.用不帶頭結點的單鏈表存儲隊列,其頭指針指向隊頭結點,尾指針指向隊尾結點,則在進行出隊操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都可能要修改D.隊頭、隊尾指針都要修改

13.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,則對a數(shù)組元素不正確的引用是()

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

14.設變量n為f1oat類型,m為int類型,則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五人運算的表達式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

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

A.在C語言中調用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質上是一個函數(shù)內部的局部變量

16.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(“%3.Of\n”,fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是

A.編譯出錯B.9C.21D.9

17.在有序雙向鏈表中定位刪除一個元素的平均時間復雜度為()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

18.C語言源程序的擴展名是()。

A..CB..exeC..objD..cp

19.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結果是()。

A.5,5B.5,11C.11,11D.11,5

20.以下程序的輸出結果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

二、2.填空題(20題)21.若已定義inta[10],i;以下fun函數(shù)的功能是,在第一個循環(huán)中給前10個數(shù)組元素依次賦1,2,3,4,5,6,7,8,9,10;在第二個循環(huán)中使a數(shù)組前10個元素中的值對稱拆疊,變成1,2,3,4,5,5,4,3,2,1。請?zhí)羁铡?/p>

fun(inta[])

{inti;

for(i=1;i<=10;i++)【】=i;

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

}

22.軟件結構是以【】為基礎而組成的一種控制層次結構。

23.設x和y均為int型變量,且x=1,y=2,則表達式2.0+y/x的值為【】。

24.軟件是程序、數(shù)據(jù)和【】的集合。

25.診斷和改正程序中錯誤的工作通常稱為【】。

26.計算機中存儲容量的基本單位是字節(jié),它的英文名稱是【】。

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

#include<stdio.h>

main()

{charc;intn=100;

floatf=10:doublex:

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

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

}

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

29.若輸入tear、test、arj,則下列程序的運行結果為【】。

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

}

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

main()

{inta,b,c;

a=10;b=20;c=(a%b<1)||(a/b>1);

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

}

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

#include<stdio.h>

unsignedfun6(unslgnednum)

{unsignedk=1;

do{k*=mum%10;num/=10;}

while(num);

returnk;

}

main()

{unsignedn=26;

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

}

32.在數(shù)據(jù)的存儲結構中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

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

main()

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

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

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

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

}

35.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

36.數(shù)據(jù)庫存管理系統(tǒng)常見的靈敏據(jù)模型有層次、網(wǎng)狀和【】三種。

37.fwrite函數(shù)的一般調用形式是

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

39.算法的復雜度主要包括【】復雜度和空間復雜度。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

三、1.選擇題(20題)41.在數(shù)據(jù)庫的兩級映射中,從概念模式到內模式的映射一般由______實現(xiàn)。

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

42.若有以下說明和語句:structst{intn;char*ch;};structsta[3]{5,"abc",7,"def",9,"ghk"},*p=a則值為6的表達式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

43.若有以下說明和語句intc[4][5],(*p)[5];p=c;能夠正確引用c數(shù)組元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

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

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上3種描述都不對

45.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

46.以下與函數(shù)fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

47.請讀程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結果是______。

A.正數(shù)B.負數(shù)C.零D.不確定的值

48.Modem的數(shù)據(jù)傳輸速率可達到()

A.幾十KbpsB.幾十KBpsC.幾十MbpsD.幾十MBps

49.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是______。

A.23B.26C.33D.36

50.設有定義語句:intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數(shù)組6個元素中的值,不能完成此操作的語句是()。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

51.對下述程序,正確的判斷是()。main(){inta,b;scanf("%d",&a);scanf("%d",&b);if(a>b)a+=b;b++;elseb+=a;a++;printf("%d,%d",a,b);}

A.有語法錯誤,不能通過編譯

B.若輸入數(shù)據(jù)2和5,則輸出3和7

C.若輸入數(shù)據(jù)5和2,則輸出7和3

D.若輸入數(shù)據(jù)5和5,則輸出6和10

52.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

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

B.scanf("%d%d%d",a,b,C);

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

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

53.若有如下定義并賦值:charch='a',a;則執(zhí)行語句"printf("%d",a=ch+2.6);”后的輸出結果是()

A.cB.dC.99D.100

54.以下程序的運行結果為#include"stdio.h"main(){intm,n;for(m=0,n=10;m<n;m+=3,n--);printf("%d,%d\n",m,n);}

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

55.變量a中的數(shù)據(jù)用二進制表示的形式是01011101,變量b中的數(shù)據(jù)用二進制表示的形式是11110000。若要求將a的高4位取反,低4位不變,所要執(zhí)行的運算是

A.a^bB.a|bC.a&bD.a<<4

56.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

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

57.以下程序的功能是:建立一個帶有頭結點的單向鏈表,并將存儲在數(shù)組中的字符依次轉存到鏈表的各個結點中,請從與下劃線處號碼對應的一組選項中選擇出正確的選項。

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s)

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(Structnode));

p=q=h;

while(*s!=‘\0’)

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next=0;

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

A.char*B.stmctnodeC.strumnode*D.char

58.目前因特網(wǎng)(Internet)尚未提供的服務是()

A.電子郵件B.文件傳送C.遠程使用計算機D.電視廣播

59.在數(shù)據(jù)結構中,從邏輯可以把數(shù)據(jù)結構分為______。

A.動態(tài)結構和靜態(tài)結構B.緊湊結構和非緊湊結構C.線性結構和非線性結構D.內部結構和外部結構

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

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

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

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

D.上述三種說法都不對

四、選擇題(20題)61.

62.以下程序段完全正確的是()。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.intk,*p=&k;scanf("%d",p);

D.intk,*p;*p=&k;scanf("%d¨,p);

63.有以下程序

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

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

64.設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:

該語句所表示的含義是()。

A.

B.

C.

D.

65.在結構化程序設計中,模塊劃分的原則是()。

A.各模塊應包括盡量多的功能

B.各模塊的規(guī)模應盡量大

C.各模塊之間的聯(lián)系應盡量緊密

D.模塊內具有高內聚度,模塊間具有低耦合度

66.假設a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

67.

68.

69.下列數(shù)據(jù)模型中,具有堅實理論基礎的是()。A.層次模型B.網(wǎng)狀模型C.關系模型D.以上三個都是

70.

71.

下列程序的運行結果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

printf("s=%d",s);

}

A.s=3B.s=4C.s=5D.無輸出結果

72.

73.

74.若變量已正確定義,有以下程序段:

其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環(huán)

75.有以下程序:

voidf(int*x,int*y)

{int*t;

t=x;x=y;y=t;*x=*y;

}

main()

{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p>q)

{f(p,q);p++;q--}

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

}

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

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

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

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

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

76.

77.

78.在軟件設計中,不屬于過程設計工具的是()。

A.PDL(過程設計語言B.PAD圖C.N—S圖D.DFD圖

79.有以下程序

80.(40)將E-R圖轉換到關系模式時,實體與聯(lián)系都可以表示成()

A.屬性

B.關系

C.鍵

D.域

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是。用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1、1、2、3、5、8、l3、21、……

例如,若給n輸入7,則該項的斐波拉契數(shù)值為l3。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,學生的記錄由學號和成績組成,N名學生的記錄已放入主函數(shù)的結構體數(shù)組s中。請編寫函數(shù)fun(),其功能是把指定分數(shù)范圍內的學生記錄存放在b所指的數(shù)組中,分數(shù)范圍內的學生人數(shù)由函數(shù)值返回。如輸入的分數(shù)是60、69,則應當把分數(shù)在60~69的學生記錄輸出,包含60分和69分的學生記錄。主函數(shù)中把60放在low中,把69放在high中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN16typedefstruct{ charnum[10]; ints;}STREC;intfun(STREC*a,STREC*b,intl,inth)voidmain(){ STRECs[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,96},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{“GA018”,64},{“GA016”,72}}; STRECh[N]; inti,n,low,high,t; printf(“Enter2integernumberlow&high:”); scanf(“%d%d”,&low,&high); if(high<low) {t=high;high=low;low=t;} n=fun(s,h,low,high); printf(“Thestudent’sdatabetween%d--%d:\n”,low,high); for(i=0;i<=""p=""> printf(“%s%4d\n”,h[i].num,h[i].s); printf(“\n”);}

參考答案

1.B

2.D

3.D本題考查兩個知識點,按位異或左移把b左移2位化成二進制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故選擇D。

4.A

5.B

6.A由題意可知,文件abc.txt中存放了6個整數(shù)。其中第1個表示后續(xù)數(shù)據(jù)的個數(shù)。要將最后5個數(shù)據(jù)讀入數(shù)組data中,需要讀取數(shù)據(jù)的個數(shù)為5,所以首先調用fscanf函數(shù),將5讀入整型變量n中;接著通過for循環(huán),i分別取值0~n-1,調用fscanf函數(shù)將n個整數(shù)讀入data[0]~data[n-1]中。故本題答案為A選項。

7.A

8.B

9.D

10.D

11.BFunl是輸出局部變量的值,fun2是把全局變量的值改成3和4,所以輸出的結果是5634。

12.C

13.D解析:通常,引用一個數(shù)組元素可以用下標法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標是從0開始的。

14.B

15.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內存單元,而是在程序運行中,當局部變量所在的函數(shù)被調用時,編譯系統(tǒng)根據(jù)需要要臨時分配內存,調用結束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存不定的情況下,最好使用全局變量。

16.B解析:fun()函數(shù)是將傳進來的兩個整型參數(shù)相加,把和作為函數(shù)值返回,注意返回值為float型。在主函數(shù)調用了兩次fun()函數(shù),第一次調用時把表達式“a+c”和變量“b”的值求和,得到15轉換為15.0作為函數(shù)的返回值。第二次調用把第一次調用的返回值通過強制類型轉換成int型15,再和表達式“a-c”相加,得到結果9,轉換成float型作為函數(shù)值返回。由于輸出格式符為“%3.of輸出時沒有小數(shù)位,故輸出為9。

17.B

18.AC語言源程序的擴展名是.C,目標文件的擴展名是.obj,可執(zhí)行文件的擴展名是.exe。故本題答案為A選項。

19.B解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調用結束時,它們的值不釋放保持不變,所以第2次調用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。

20.B

21.a[i-1]或a[-1+i]a[9-i]或a[-i+9]a[i-1]或a[-1+i]\r\na[9-i]或a[-i+9]

22.模塊模塊

23.4.0或44.0或4

24.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關文檔的完整集合。

25.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。

26.Brte

27.220220解析:根據(jù)賦值運算符“自右至左”的結合順序,程序中賦值表達式x=f*=n/=(c=50)的求解步驟為:首先計算n/=(c=50),即n=n/c=100/50=2;然后計算f*=n,即f=f*n=10*2=20.000000,由此得到x的值為20.000000。

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

29.arjteartest

30.1020010200解析:a的初值為10,b的初值為20,因此“a%b”結果為10,“(a%b<1)”為假,“a/b”的結果為0,“(a/b>1)”為假,所以“(a%b<1)||(a/b>1)”的值為0(假),c的值為0。

31.1212解析:循環(huán)語句中,表達式num%10是取num的個位。循環(huán)直至num為0結束,這是逐一求出num+進制表示的各位數(shù)字,并累乘于變量k中。函數(shù)最后返回k,所以程序輸出12。

32.前后件關系前后件關系解析:在數(shù)據(jù)存儲結構中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關系,對于順序存儲的數(shù)據(jù)結構,前后件之間的關系,是通過存儲空間的位置來實現(xiàn)的,而對于鏈式存儲來說,數(shù)據(jù)元素之間的前后件關系是通過指針來實現(xiàn)的。

33.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從casel:后面的語句開始執(zhí)行,而cascl:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行casel:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變?yōu)?。所以最后輸出的a和b的值為21。

34.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。

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

36.關系關系

37.D

38.數(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ù)服務等。

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

40.101091101091解析:for(表達式1;表達式2:表達式3)語句的功能是:首先計算表達式1的值,然后檢測表達式2的值,若其值為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計算表達式3的值。然后再檢測表達式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語句,若為假,則退出循環(huán):第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=1,執(zhí)行y=++i操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=1,然后x的值減1,循環(huán)條件不成立,則退出循環(huán)。

41.B解析:從概念模式到內模式的映射一般由數(shù)據(jù)庫管理系統(tǒng)(DBMS)實現(xiàn)。

42.D解析:根據(jù)結構變量的存儲特點,p+1意味著增加地址值為結構體數(shù)組a的一個元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結構體變量中成員n的值使之加1。因為p指向數(shù)組a起始地址,p->n的值為5,再執(zhí)行自加1運行,結果為6。

43.D解析:本題中定義了一個二維數(shù)組c和一個指針數(shù)組p并初始化讓它指向c,顯然此時p中的各元素為地址,選項A中p+1,此時其中的1代表的長度是整個;維數(shù)組c的長度,故p+1將讓p指向c數(shù)組后面的元素,故不能引用c數(shù)組中的成員,故選項A錯誤;同理選項B和選項C都不正確,選項D中p[0]指的是指針數(shù)組中的第一個元素的地址即c的首地址,此時的1的長度代表的是數(shù)組c中一行的長度,故p[0]+2代表的是第三行的首地址,而*(p[0]+2)將代表第三行的第一個元素的地址,所以,4個選項中選項D符合題意。

44.C解析:算法的執(zhí)行效率與數(shù)據(jù)的存儲結構密切相關。算法的空間復雜度是指算法執(zhí)行過程中所需的存儲空間。

45.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據(jù)前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

46.D解析:feof函數(shù)的功能是判斷文件指針是否已指到了文件末尾,是則返回非零值,否則返回零;ftell函數(shù)的功能是得到流式文件中文件指針的當前位置,用相對于文件開頭的位移量來表示;fgetc函數(shù)的功能是從指定文件讀人一個字符;rewind函數(shù)的功能是使文件指針重新返回文件的開頭。fseek函數(shù)用于改變文件的位置指針,調用形式為:fseek(文件類型指針,位移量,起始點),“起始點”取值0(SEEK_SET)、1(SEEK_CUR)、2(SEEK_END)分別表示文件開始、文件當前位置、文件末尾?!拔灰屏俊笔且浴捌鹗键c”為基點,向前移動的字節(jié)數(shù)。函數(shù)fseek(fp,OL,SEEK_SET)的作用是將位置指針移到文件頭,所以選項D)正確。

47.A解析:本題考查字符串比較函數(shù)strcmp()的應用。strcmp(s1,s2)是中比較函數(shù),當s1>s2時返回值為正數(shù),當s1<s2時返回值為負數(shù),當s1=s2時返回值為零。本題中s1,s2分別表示兩個串中第一個字符的地址,s1++和s2++是將指針指向串的第二個字符,指針變量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指針變量s2指向的是字符'B'的地址。而在字符串比較中,寧符串大小的確定是各個字符串相應位置字符的ASCII碼值的大小決定的,字符'B'的ASCII碼值為66,字符“b”的ASCII碼值為98,所以s1>s2,返回值為正數(shù)。

48.A

49.A解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應為3。

50.D解析:*p=x的作用是將x的首地址賦給指針變量p。選項A)正確,*(P++)中括號內的++是在P的后面,所以它先取*P的值x[0],再執(zhí)行p++;選項B)正確,p+i表示x[i]的地址,*(p+i)表示x[i]的值;選項C)中的*和++處于同一優(yōu)先級別,而結合方向為自右而左,因此*p++相當于*(p++),與選項A)相同;選項D)中的(*p)++是使*p的值+1,即x[0]的值加1,它不能實現(xiàn)指針的移動,每次循環(huán)只是x[0]的值在改變,而P的值并沒有改變,所以不能實現(xiàn)6個元素的輸出。

51.A解析:本題中的else語句和if語句之間有兩條語句,并且未用大括號括起來,故編譯通不過。所以應該選擇A。

52.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正確答案是C。

53.C

54.C解析:for后一對括號中的表達式可以是任意有效的C語言表達式。該題目的循環(huán)體部分為空語句,循環(huán)控制條件為m<n,每一次m增3,n減1,每當循環(huán)體執(zhí)行結束時,循環(huán)控制變量m,n就會分別被增3和減1。

55.A解析:本題考查的是位運算的知識,對于任何二進制數(shù),和1進行異或運算會讓其取反,而和0進行異或運算不會產(chǎn)生任何變化。

56.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認,則默認為int。函數(shù)中如果有“retum(表達式):”語句,表達式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實際情況是把表達式轉換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

57.C

58.D

59.C解析:邏輯結構反映數(shù)據(jù)元素之間的邏輯關系,線性結構表示數(shù)據(jù)元素之間—對—的關系,非線性結構表示數(shù)據(jù)元素之間—對多或多對—的關系。

60.DD?!窘馕觥克惴ǖ臅r間復雜度和算法的空間復雜度是從不同的角度來衡量算法的執(zhí)行情況的,它們之間沒有內在聯(lián)系。

61.C

62.C\nA中P是指針,沒有初始化,且取P的地址即類型為指向地址的地址,與輸出參數(shù)類型不符。B中指針P沒有初始化,且P所指變量值不明。D*p是整型變量,&k是整型變量的地址。所以選C。

\n

63.A本題首先定義了3個字符數(shù)flip、q、r,并分別被初始化。數(shù)組p;}i旨定的大小為20,初始化列表為la,b,c,d},即只指定了前4個元素的內容,根據(jù)c語言的規(guī)定,初始化列表不足時,其余元素均自動初始化為0。然后通過streat()函數(shù),將字符串r連接到字符串p之后,即執(zhí)行后p中的內容為“123d123de”。因為“strlen(q)”表示求字符串q的長度,很明顯為3,所以語句“strcpy(p+strlen(q),q);”的作用就是:將字符串q復制到數(shù)9lp的第4個元素位置處。

64.C考查if語句的使用。整個語句都是以a<b為假設的,在a<b的情況下,如果c=d,則y=0;否則y=1。所以答案為選項C)。

65.D解析:本題考查軟件工程中軟件設計的概念和原理。人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經(jīng)驗,總結這些經(jīng)驗得到如下的啟發(fā)式規(guī)則:

(1)改進軟件結構,提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內聚是提高一個模塊內各元素彼此結合的緊密程度。

(2)模塊的規(guī)模應適中。一個模塊的規(guī)模不應過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統(tǒng)接口復雜。因此過小的模塊有時不值得單獨存在。

(3)模塊的功能應該可以預測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現(xiàn)模塊化設計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。

經(jīng)過上述分析,本題的正確答案是選項D。

66.D當b為10時,執(zhí)行b-=a,此時b為9,接著b--表達式值為9,b的值為8,大于0,while不成立,退出循環(huán),故選擇D選項。

67.B

68.D

69.C解析:在層次模型和網(wǎng)狀模型的系統(tǒng)研究和數(shù)據(jù)庫設計中,其性能和質量主要決定于設計者的經(jīng)驗和技術水平,而缺乏一定的理論指導。因此,系統(tǒng)的研制和數(shù)據(jù)庫的設計都比較盲目,即使是同一個數(shù)據(jù)庫管理系統(tǒng),相同的應用,不同設計者設計出來的系統(tǒng)其性能可以差別很大。關系模型是以數(shù)學理論為基礎,從而避免了層次模型和網(wǎng)狀模型系統(tǒng)中存在的問題。本題的正確答案是C。

70.B

71.B

\n運行程序,當k=7時switch(7)執(zhí)行case:7,s++后s=1,break跳出。k--,k=7繼續(xù)循環(huán)switch(6),執(zhí)行case6;直接跳出循環(huán),k--變成5,繼續(xù)循環(huán)switch(5),執(zhí)行case5后面的語句s+=2,也相當于s=s+2,此時s為3,break跳出,k變?yōu)?,繼續(xù)循環(huán),執(zhí)行case4為空,繼續(xù)執(zhí)行case7;s++為4跳出循環(huán),k--變?yōu)?,繼續(xù)循環(huán),執(zhí)行case3,空語句往下執(zhí)行case6,跳出,k--為2,繼續(xù)循環(huán),執(zhí)行case2;空語句往下執(zhí)行case3,空語句再執(zhí)行case7,跳出循環(huán),k--為1不符合循環(huán),退出,此時S=4。

\n

72.D\r\n

73.A

74.B對于do…while循環(huán),程序先執(zhí)行一次循環(huán)體,再判斷循環(huán)是否繼續(xù)。本題先輸出一次i的值”0,”,再接著判斷表達式i++的值,其值為0,所以循環(huán)結束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)閘,程序再次輸出i的值…1"。

75.C循環(huán)的條件是p>q,而p指向的是數(shù)組的首地址,q指向的是數(shù)組的最后一個元素,因此p<q,不滿足條件,不執(zhí)行循環(huán),所以結果不變。

76.A

77.A

78.D數(shù)據(jù)流圖DFD是結構化分析方法最主要的一種圖形工具,不屬于過程設計工具。

79.A本題考查的是break語句。d0…while循環(huán)是“先執(zhí)行,后判斷”,所以無論條件如何,它都至少會執(zhí)行一遍。程序首先初始化變量i為5,然后進A.d0…while循環(huán)體,首先判斷(i%3==1),因為5%3=2,所以if條件不滿足,跳過下面的if語句,執(zhí)行i++,i變?yōu)?。第l遍循環(huán)結束,判斷(i!=0)為真,繼續(xù)循環(huán)?,F(xiàn)在i%3--6%3--0,所以if語句還是不被執(zhí)行,繼續(xù)i++,i變?yōu)?,仍然滿足(if-0),繼續(xù)循環(huán)。第3遍循環(huán)i%3=7%3=1,滿足條件(i%3==1),繼續(xù)判斷條件i%5==2成立,即輸出*7,然后執(zhí)行break語句跳出循環(huán)。錯誤.

80.B

81.

【參考答案】

去掉分號

(2Casel:caBe

2:returnl;

【考點分析】

本題考查:switch語句,其一般形式為switch(表達式)

cage常量表達式l:語句l;case常量表達式2:語句2;

cm常量表達式n:語句n;default:語句n+1;

其中switch(表達式)后不應該帶有“;”,同時case語句常量后應該是“:”。

【解題思路】

C語言中,switch語句之后不能有分號,并且case語句常量后應用的是冒號。

82.intfun(STREC*a,STREC*b,intl,inth){ inti,j=0; for(i=0;i<=""p=""> if(a[i].s>=l&&a[i].s<=h)/*將分數(shù)高于l,低于h的學生記錄存入結構體數(shù)組b中*/ b[j++]=a[i]; returnj; /*返回分數(shù)范圍內的學生人數(shù)*/}本題使用循環(huán)判斷結構實現(xiàn)題目要求。循環(huán)語句用于遍歷結構體數(shù)組;條件語句用于判斷當前元素是否符合條件,若符合條件則將其存入結構體數(shù)組b中。變量j為數(shù)組b元素下標,最后變量j+1為學生人數(shù),作為函數(shù)值返回。2021-2022年陜西省延安市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.A[N][N]是對稱矩陣,將下面三角(包括對角線)以行序存儲到一維數(shù)組T[N(N+1)/2]中,則對任一上三角元素a[i][j]對應T[k]的下標k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

2.

3.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

4.

5.設ch是char型變量,值為'A',則表達式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。

A.ZB.aC.zD.A

6.設有如下定義和語句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的數(shù)據(jù)為58192765190,其中第1個數(shù)據(jù)代表的是它后面數(shù)據(jù)的個數(shù)。若文件已正確打開,則以下程序段中能將文件的最后5個數(shù)據(jù)依次正確讀入數(shù)組data[0]~data[4]中的是()。

A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);

B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);

D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

7.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。

A.可能是2B.一定是2C.可能是1D.一定是1

8.算法應該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

9.在非線性結構中,每個結點()。

A.無直接前趨

B.只有一個直接前趨和個數(shù)不受限制的直接后繼

C.只有一個直接前驅和后繼

D.有個數(shù)不受限制的直接前驅和后繼

10.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結點C.數(shù)據(jù)類型D.數(shù)據(jù)項

11.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結果是()。A.1256B.5634C.5612D.3456

12.用不帶頭結點的單鏈表存儲隊列,其頭指針指向隊頭結點,尾指針指向隊尾結點,則在進行出隊操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都可能要修改D.隊頭、隊尾指針都要修改

13.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,則對a數(shù)組元素不正確的引用是()

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

14.設變量n為f1oat類型,m為int類型,則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五人運算的表達式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

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

A.在C語言中調用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質上是一個函數(shù)內部的局部變量

16.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(“%3.Of\n”,fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是

A.編譯出錯B.9C.21D.9

17.在有序雙向鏈表中定位刪除一個元素的平均時間復雜度為()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

18.C語言源程序的擴展名是()。

A..CB..exeC..objD..cp

19.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結果是()。

A.5,5B.5,11C.11,11D.11,5

20.以下程序的輸出結果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

二、2.填空題(20題)21.若已定義inta[10],i;以下fun函數(shù)的功能是,在第一個循環(huán)中給前10個數(shù)組元素依次賦1,2,3,4,5,6,7,8,9,10;在第二個循環(huán)中使a數(shù)組前10個元素中的值對稱拆疊,變成1,2,3,4,5,5,4,3,2,1。請?zhí)羁铡?/p>

fun(inta[])

{inti;

for(i=1;i<=10;i++)【】=i;

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

}

22.軟件結構是以【】為基礎而組成的一種控制層次結構。

23.設x和y均為int型變量,且x=1,y=2,則表達式2.0+y/x的值為【】。

24.軟件是程序、數(shù)據(jù)和【】的集合。

25.診斷和改正程序中錯誤的工作通常稱為【】。

26.計算機中存儲容量的基本單位是字節(jié),它的英文名稱是【】。

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

#include<stdio.h>

main()

{charc;intn=100;

floatf=10:doublex:

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

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

}

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

29.若輸入tear、test、arj,則下列程序的運行結果為【】。

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

}

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

main()

{inta,b,c;

a=10;b=20;c=(a%b<1)||(a/b>1);

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

}

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

#include<stdio.h>

unsignedfun6(unslgnednum)

{unsignedk=1;

do{k*=mum%10;num/=10;}

while(num);

returnk;

}

main()

{unsignedn=26;

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

}

32.在數(shù)據(jù)的存儲結構中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

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

main()

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

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

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

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

}

35.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

36.數(shù)據(jù)庫存管理系統(tǒng)常見的靈敏據(jù)模型有層次、網(wǎng)狀和【】三種。

37.fwrite函數(shù)的一般調用形式是

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

39.算法的復雜度主要包括【】復雜度和空間復雜度。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

三、1.選擇題(20題)41.在數(shù)據(jù)庫的兩級映射中,從概念模式到內模式的映射一般由______實現(xiàn)。

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

42.若有以下說明和語句:structst{intn;char*ch;};structsta[3]{5,"abc",7,"def",9,"ghk"},*p=a則值為6的表達式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

43.若有以下說明和語句intc[4][5],(*p)[5];p=c;能夠正確引用c數(shù)組元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

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

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上3種描述都不對

45.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

46.以下與函數(shù)fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

47.請讀程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結果是______。

A.正數(shù)B.負數(shù)C.零D.不確定的值

48.Modem的數(shù)據(jù)傳輸速率可達到()

A.幾十KbpsB.幾十KBpsC.幾十MbpsD.幾十MBps

49.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是______。

A.23B.26C.33D.36

50.設有定義語句:intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數(shù)組6個元素中的值,不能完成此操作的語句是()。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

51.對下述程序,正確的判斷是()。main(){inta,b;scanf("%d",&a);scanf("%d",&b);if(a>b)a+=b;b++;elseb+=a;a++;printf("%d,%d",a,b);}

A.有語法錯誤,不能通過編譯

B.若輸入數(shù)據(jù)2和5,則輸出3和7

C.若輸入數(shù)據(jù)5和2,則輸出7和3

D.若輸入數(shù)據(jù)5和5,則輸出6和10

52.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

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

B.scanf("%d%d%d",a,b,C);

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

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

53.若有如下定義并賦值:charch='a',a;則執(zhí)行語句"printf("%d",a=ch+2.6);”后的輸出結果是()

A.cB.dC.99D.100

54.以下程序的運行結果為#include"stdio.h"main(){intm,n;for(m=0,n=10;m<n;m+=3,n--);printf("%d,%d\n",m,n);}

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

55.變量a中的數(shù)據(jù)用二進制表示的形式是01011101,變量b中的數(shù)據(jù)用二進制表示的形式是11110000。若要求將a的高4位取反,低4位不變,所要執(zhí)行的運算是

A.a^bB.a|bC.a&bD.a<<4

56.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

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

57.以下程序的功能是:建立一個帶有頭結點的單向鏈表,并將存儲在數(shù)組中的字符依次轉存到鏈表的各個結點中,請從與下劃線處號碼對應的一組選項中選擇出正確的選項。

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s)

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(Structnode));

p=q=h;

while(*s!=‘\0’)

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next=0;

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

A.char*B.stmctnodeC.strumnode*D.char

58.目前因特網(wǎng)(Internet)尚未提供的服務是()

A.電子郵件B.文件傳送C.遠程使用計算機D.電視廣播

59.在數(shù)據(jù)結構中,從邏輯可以把數(shù)據(jù)結構分為______。

A.動態(tài)結構和靜態(tài)結構B.緊湊結構和非緊湊結構C.線性結構和非線性結構D.內部結構和外部結構

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

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

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

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

D.上述三種說法都不對

四、選擇題(20題)61.

62.以下程序段完全正確的是()。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.intk,*p=&k;scanf("%d",p);

D.intk,*p;*p=&k;scanf("%d¨,p);

63.有以下程序

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

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

64.設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:

該語句所表示的含義是()。

A.

B.

C.

D.

65.在結構化程序設計中,模塊劃分的原則是()。

A.各模塊應包括盡量多的功能

B.各模塊的規(guī)模應盡量大

C.各模塊之間的聯(lián)系應盡量緊密

D.模塊內具有高內聚度,模塊間具有低耦合度

66.假設a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

67.

68.

69.下列數(shù)據(jù)模型中,具有堅實理論基礎的是()。A.層次模型B.網(wǎng)狀模型C.關系模型D.以上三個都是

70.

71.

下列程序的運行結果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

printf("s=%d",s);

}

A.s=3B.s=4C.s=5D.無輸出結果

72.

73.

74.若變量已正確定義,有以下程序段:

其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環(huán)

75.有以下程序:

voidf(int*x,int*y)

{int*t;

t=x;x=y;y=t;*x=*y;

}

main()

{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p>q)

{f(p,q);p++;q--}

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

}

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

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

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

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

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

76.

77.

78.在軟件設計中,不屬于過程設計工具的是()。

A.PDL(過程設計語言B.PAD圖C.N—S圖D.DFD圖

79.有以下程序

80.(40)將E-R圖轉換到關系模式時,實體與聯(lián)系都可以表示成()

A.屬性

B.關系

C.鍵

D.域

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是。用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1、1、2、3、5、8、l3、21、……

例如,若給n輸入7,則該項的斐波拉契數(shù)值為l3。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,學生的記錄由學號和成績組成,N名學生的記錄已放入主函數(shù)的結構體數(shù)組s中。請編寫函數(shù)fun(),其功能是把指定分數(shù)范圍內的學生記錄存放在b所指的數(shù)組中,分數(shù)范圍內的學生人數(shù)由函數(shù)值返回。如輸入的分數(shù)是60、69,則應當把分數(shù)在60~69的學生記錄輸出,包含60分和69分的學生記錄。主函數(shù)中把60放在low中,把69放在high中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN16typedefstruct{ charnum[10]; ints;}STREC;intfun(STREC*a,STREC*b,intl,inth)voidmain(){ STRECs[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,96},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{“GA018”,64},{“GA016”,72}}; STRECh[N]; inti,

溫馨提示

  • 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

提交評論