2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計_第1頁
2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計_第2頁
2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計_第3頁
2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計_第4頁
2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩99頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.C語言中函數(shù)返回值的類型是由()決定的。

A.return語句中的表達式類型B.調(diào)用該函數(shù)的主調(diào)函數(shù)類型C.定義函數(shù)時所指定的函數(shù)類型D.以上說法都不正確

2.有n個結(jié)點的二叉樹鏈表共有__________個空指針域。

A.n-1B.nC.n+1D.n+2

3.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責(zé)的是()。

A.數(shù)據(jù)庫維護B.數(shù)據(jù)庫設(shè)計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉(zhuǎn)換

4.若a是數(shù)值類型,則邏輯表達式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

5.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

6.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結(jié)構(gòu)

7.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。

A.3B.5C.7D.9

8.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

9.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

10.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。

A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式

11.

有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

12.以下程序的輸出結(jié)果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

13.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。

A.abcB.28cC.abc28D.因類型不一致而出錯

14.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

15.下列運算符中優(yōu)先級最高的是()。

A.!B.%C.-=D.&&

16.有以下程序:#include<stdio.h>voidfun(int*s){staticinti=0;do{s[J]=s[J]+s[j+I];}while(++j<2);}main(){intk.a(chǎn)[l0]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)pfintf("%d",a[k]);printf("\n");}程序運行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

17.若果要求一個線性表既能較快查找,又能適應(yīng)動態(tài)變化的要求,可以采用()查找方法。

A.分塊B.順序C.二分D.散列

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

19.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

20.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

二、2.填空題(20題)21.設(shè)二進制數(shù)A是00101101,若想通過異或運算ab使A的高4位取反,低4位不變,則二進制數(shù)B應(yīng)是【】。

22.如果一個工人可管理多個設(shè)備,而一個設(shè)備只被一個工人管理,則賣體“工人”與實體“設(shè)備”之間存在【】關(guān)系。

23.當(dāng)所有結(jié)點的權(quán)值都相等時,用這些結(jié)點構(gòu)造的二叉排序樹是【】。

24.算法的執(zhí)行過程中,所需要的存儲空間稱為算法的【】。

25.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復(fù)制,即將t所指字符串復(fù)制兩次到s所指內(nèi)存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調(diào)用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

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

}

26.解題方案的準(zhǔn)確而完整的描述稱為______。

27.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

28.下列程序的運行結(jié)果是______。

#include<stdio.h>

func(a,b)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{intk=5,m=3,p;

p=fune(k,m);

printf("%d",p);

p=func(k,m);

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

}

29.在面向?qū)ο蠓椒ㄖ校畔㈦[蔽是通過對象的______性來實現(xiàn)的。

30.在關(guān)系運算中,【】運算是對兩個具有公共屬性的關(guān)系所進行的運算。

31.下面程序中函數(shù)fun的功能是:找出一維數(shù)組元素中的最大值和它所在的下標(biāo),并將最大值和其下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。請?zhí)羁铡?/p>

#include<stdlib.h>

#include<sldio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];*d=0;

for(i=0;【】;i++)

if(*max<【】)

{*max=a[i];*d=i;}

}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max.&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

32.fseek函數(shù)的正確調(diào)用形式是【】。

33.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

34.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

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

36.棧滿時,再作入棧操作會產(chǎn)生【】,棧空時,刪除操作會產(chǎn)生【】。

37.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。

38.用復(fù)合的賦值運算符將變量x中的值增大2的賦值表達式是【】。

39.已知a為8位二進制數(shù),要想通過ab運算使a的低5位變反(即0變1,1變0),高3位不變,b的值應(yīng)為【】。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.選擇題(20題)41.設(shè)有如下三個關(guān)系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

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

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

43.判斷char型變量c1是否為大寫字母的正確表達式是

A.'A'<=c1<='Z'

B.(c1>=A)&&(c1<=Z)

C.('A'>=c1)||('Z'<=c1)

D.(c1>='A')&&(c1<='Z')

44.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

45.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

46.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

47.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

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

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

49.有以下程序:main(){intx=0,y=5,z=31while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是______。

A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

50.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

51.若有定義:intx=0,*p=&x;則語句printf("%d\n",*p);的輸出結(jié)果是()。

A.隨機值B.0C.x的地址D.p的地址

52.以下程序的輸出結(jié)果是()main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1,k<3;k++)printf("%s\n",w[k]);}

A.ABCDFGHKL

B.ABCEFGIJM

C.EFGJKO

D.EFGHIJKL

53.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}

A.xyzabcABCB.abcABCC.xyzabcD.xyzABC

54.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

55.下列選項中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()

A.數(shù)據(jù)類型B.數(shù)據(jù)操作C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)約束

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

A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作

B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

57.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x>10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結(jié)果是

A.0.000000B.0.250000C.0.500000D.1.000000

58.合法的數(shù)組定義是()

A.inta[]="string";

B.inta[5]={0,1,2,3,4,5};

C.chara="string";

D.chara={0,1,2,3,4,5};

59.下列關(guān)于關(guān)系運算的敘述中正確的是()。

A.投影、選擇、連接是從二維表的行的方向來進行運算

B.并、交、差是從二維表的列的方向來進行運算

C.投影、選擇、連接是從二維表的列的方向來進行運算

D.以上三種說法都不對

60.有以下程序

#include<stdio.h>

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{intz;

z=f(3);printf("%d\n",z);

}

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

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

四、選擇題(20題)61.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

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

62.

63.結(jié)構(gòu)化分析可以使用的工具是()。

A.N—s圖B.DFD圖C.PAD圖D.程序流程圖

64.(17)軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()

A.階段性報告

B.需求評審

C.總結(jié)

D.都不正確

65.有以下程序:

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

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

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

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對

67.數(shù)據(jù)庫設(shè)計中反映用戶對數(shù)據(jù)要求的模式是()。

A.內(nèi)模式B.概念模式C.外模式D.設(shè)計模式

68.

當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)罘是()。

#include<stdio.h>

#include<string.h>

main()

{charss[10]="1,2,3,4,5":

gets(ss);strcat(ss,"6789");printf("%s\n",ss);

}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

69.

70.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

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

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

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

72.

73.

74.有以下程序:

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

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

75.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

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

A.143B.197C.33D.28

77.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp),的返回值為()。

A.0B.\0C.非0值D.NULL

78.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

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

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

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

79.有以下程序:

main()

{char*p[]={"3697","2584"};

inti,j;longnum=0;

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

{j=0;

while(p[i][j]!=’\0’)

{if((p[i][j]-’0’)%2==0)num=10*num+p[i][j]-’0’;

j+=2;

}

}

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

}

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

A.35B.37

C.39D.28

80.有以下程序:

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

A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)

參考答案

1.C

2.C

3.DD)【解析】數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設(shè)計。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計,具體地說是進行數(shù)據(jù)模式的設(shè)計;數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。

4.A由于a==l和a!=1兩者互斥,即總有一個為真,因此二者的或也必定為真。

5.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲文件中的記錄,列稱為屬性,對應(yīng)存儲文件中的字段,所以本題答案為D。

6.A

7.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。

8.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實體集也可以轉(zhuǎn)換成關(guān)系。

9.D

10.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。

11.B

\n本題考查結(jié)構(gòu)體指針變量的賦值方法,要把結(jié)點b連接到結(jié)點;l的后面,必須把b的地址給a的next指針。故8正確。

\n

12.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

13.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項。

14.C

15.A

16.D本題考查靜態(tài)變量,靜態(tài)變量有儲存已經(jīng)操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

17.A

18.A解析:局部變量在執(zhí)行到它所在的程序塊時產(chǎn)生,執(zhí)行完時被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運行結(jié)束,故選項A正確;全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運行結(jié)束,故選項B不正確:未賦初值的局部變量的初值是隨機的,故選項C不正確;形參只能是一般局部變量,不能使用任何存儲類說明符,故選項D不正確。所以,4個選項中選項A符合題意。

19.D

20.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。

21.1111000011110000解析:按位異或運算的一個重要應(yīng)用是讓某個整型變量的二進制位取反,0變成1,而1變成0。這只要設(shè)計這樣一個位串信息,讓要變反的位為1,不要改變的位為0,用這個位串信息與整型變量按位加就能得到希望的結(jié)果。要使字節(jié)的高4位取反,低4位不變,則需要位串信息是11110000。

22.一對多一對多解析:實體之間的聯(lián)系有3類:一對一,一對多,多對多。設(shè)有兩個實體集E1和E2,如果E2中的每一個實體與E1中的任意個實體(包括零個)有聯(lián)系,而E1中的每一個實體最多與E2中的一個實體有聯(lián)系,則稱這樣的聯(lián)系為“從E2到E1的一對多的聯(lián)系”,通常表示為“l(fā):n的聯(lián)系”。由此可見,工人和設(shè)備之間是一對多關(guān)系。

23.右子樹(單支樹)右子樹(單支樹)解析:二叉排序樹對于任意新結(jié)點,若大于等于根結(jié)點,則在右子樹上建立。

24.空間復(fù)雜度空間復(fù)雜度解析:算法執(zhí)行時所需要的存儲空間,稱為算法的空間復(fù)雜度。

25.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函數(shù)。strcpy2()中,首先將指針t保存到指針p中,然后進入第1個while()循環(huán),其循環(huán)條件為*s++=*t++,其中“*”和“++”運算符的優(yōu)先級相同,但他們的結(jié)合性為從右至左,而“=”運算符優(yōu)先級比較低,所以原表達式等價于(*s++)=(*(t++)),即將t當(dāng)前所指內(nèi)容復(fù)制到s當(dāng)前所指地址中,然后讓s和t同時往后移動一位,整個表達式返回的是復(fù)制給s的值。所以,當(dāng)t所指內(nèi)容是字符串結(jié)束符'\\0',時,while循環(huán)結(jié)束,原先t所指的整個字符串也就復(fù)制到s所指的地址中去了。但是,while循環(huán)最后一次判斷也會讓s和t往后移動一位,即此時s指向了字符串結(jié)束符'\\0'的后一位。所以第2次復(fù)制字符串之前,應(yīng)先將s指針往回移動一位,故前一空應(yīng)該填入s-1或其他等價形式。接下來的while循環(huán)實現(xiàn)第二次復(fù)制,照抄第1次的while循環(huán)就行,故后一空應(yīng)填入*s++。

26.算法算法解析:算法是指對解題方案的準(zhǔn)確而完整的描述。

27.測試實例測試實例解析:進行軟件測試時,應(yīng)精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進行全面測試。

28.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因為在于函數(shù)中將m和i定義成了static類型,所以在于函數(shù)中對m和i進行的改變在下一次調(diào)用子函數(shù)時能進行保存,所以第二次調(diào)用于函數(shù)時,m=11,i=3,則i=i+m+1=15,m=i+a+b=15+5+3=23。

29.封裝封裝

30.自然連接自然連接解析:在關(guān)系運算中,自然連接運算是對兩個具有公共屬性的關(guān)系所進行的運算。

31.i<na[i]i<na[i]解析:在main函數(shù)中,randomize是為了生成隨機種子,以便在使用rand函數(shù)時產(chǎn)生不同的數(shù)。通過循環(huán)用rand函數(shù)產(chǎn)生10個隨機數(shù)。在fun函數(shù)中,要在n個數(shù)中找最大值,所以第一處填寫i<n,每次將當(dāng)前最大值與數(shù)組中的某元素比較,第二處填寫a[i]。

32.fseek(文件指針位移量起始點)fseek(文件指針,位移量,起始點)解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點)

“起始點”用0,1或2代替,其中,0代表“文件開始”;1為“當(dāng)前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c”為基點,向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件的長度大于64k時不致出現(xiàn)問題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字的末尾加一個字母L,就表示long型。

33.p!=NULLp->nextp!=NULL,p->next解析:考查了單鏈表的相關(guān)知識。NULL的ASCII碼的值和'\\0'的ASCII碼的值相等,條件到NULL停止循環(huán)。把下一個節(jié)點的地址賦給p,這樣循環(huán),節(jié)點可以依次向后取值。

34.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:

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

36.上溢下溢上溢\r\n下溢

37.數(shù)據(jù)存儲數(shù)據(jù)存儲

38.x+=2

39.1F1F解析:11=0,01=1,實現(xiàn)了按位的求反。

40.99解析:本題的字符串中共有9個字符,它們分別是\'I\'、\'B\'、\'M\'、\'\\n\'、\'0\'、\'1\'、\'2\'、\'\\1\'、\'\\\\\',其中,'\\n'表示換行,'\\\\'表示反斜杠字符'\\',所以本題的最后輸出結(jié)果為9。

41.C解析:本題考查數(shù)據(jù)庫的關(guān)系代數(shù)運算。R表中只有一個域名A,有兩個記錄(也叫元組),分別是m和n;S表中有兩個域名,分別是B和C,其所對應(yīng)的記錄分別為1和3。注意觀察表T,它是由R的第一個記錄依次與S的所有記錄組合,然后再由R的第二個記錄與S的所有記錄組合,形成的一個新表。上述運算恰恰符合關(guān)系代數(shù)的笛卡兒積運算規(guī)則。關(guān)系代數(shù)中,笛卡兒積運算用“×”來表示。因此,上述運算可以表示為T=R×S。因此,本題的正確答案為C。

42.D自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,因此B錯誤。笛卡兒積是用R集合中的元素為第一元素,s集合中的元素為第二元素構(gòu)成的有序?qū)Γ虼薈錯誤。根據(jù)關(guān)系T可以很明顯地看出是從關(guān)系R與是系s中取得相同的關(guān)系組,所以使用的是交運算,選擇D。

43.D解析:字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A到Z是從65到90,所以只要變量c1大于A并且小于Z就能保證其為大寫字母。注意:邏輯運算符的功能與作用。

44.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故本題答案為C。

45.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

46.C解析:for語句中的表達式可以部分或全部省略,但兩個“;”不能省略,若3個表達式均省略,會因為缺少條件判斷,導(dǎo)致循環(huán)無限執(zhí)行,而形成死循環(huán)。本題中當(dāng)i的值為5的時候,循環(huán)終止。

47.CC。【解析】結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是結(jié)構(gòu)化設(shè)計理論,其中包括:結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化編程方法。

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

49.B解析:第一次執(zhí)行while語句時,z=3>0,然后執(zhí)行z--得z=2,執(zhí)行++x得x=1<5,條件成立,執(zhí)行y=y-1=5

-1=4;第二次執(zhí)行while語句時,z=2>0,然后執(zhí)行z--得z=1,執(zhí)行++x得x=2<5,條件成立,執(zhí)行y=y-1=4-1=3;第三次執(zhí)行while語句時,z=1>0,然后執(zhí)行z--得x=0,執(zhí)行++x得x=3<5,條件成立,執(zhí)行y=y-1=3-1=2;第四次執(zhí)行while語句時因z=0,z<0條件不成立,同時執(zhí)行c--得z=-1。即執(zhí)行完while循環(huán)后x=3、y=2、z=-1。

50.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。

51.B解析:本題考查的是指針的運用。語句intx=O,*p=&x;定義7一個int型變量x并初始化為0,同時還定義了一個int型指針p指向變量x。語句ptintf('%d\\n',*p);是按十進制整數(shù)格式輸出指針p所指向的內(nèi)容,即x的值0。故本題應(yīng)該選擇B。

52.D

53.B解析:strcpy(str1,s1):作用是將字符串s1拷貝到字符數(shù)組str1中去。strcat(字符數(shù)組1,字符數(shù)組2):把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后返回字符數(shù)組1的地址。本題定義了三個字符數(shù)組p1,p2,sir,strcat(p1,p2)函數(shù)的作用是將字符串?dāng)?shù)組p2接到字符串p1的后面,結(jié)果放在字符數(shù)組p1中,再通過strcpy()函數(shù)將該字符串拷貝到str數(shù)組中,原str數(shù)組中的字符串xyz被覆蓋,因此打印輸出字符串str即可得到abcABC。

54.D解析:20世紀(jì)70年代以來,提出了許多軟件設(shè)計方法,主要有①逐步求精:對復(fù)雜的問題,應(yīng)設(shè)計一些子目標(biāo)作過渡,逐步細(xì)化;②自頂向下:程序設(shè)計時應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計,逐步使問題具體化;⑧模塊化:一個復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進一步分解為具體的小目標(biāo),把每個小目標(biāo)稱為一個模塊,而可復(fù)用是面向?qū)ο蟪绦蛟O(shè)計的一個優(yōu)點。

55.AA)【解析】數(shù)據(jù)模型描述的內(nèi)容包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。

56.C解析:一個算法應(yīng)該具有以下5個特性:有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出。因此一個算法可以沒有輸入(程序的功能確定),但必須要有輸出,沒有輸出的算法是沒有意義的。

57.D解析:本題考查if語句中的一種表達方式,即:if卐lseif叀

該表達式的語句是:

if(表達式1)

語句1

elseif(表達式2)

語句2

elseif(表達式3)

語句3

else

語句4

本題執(zhí)行elsey=1.0,并且以'%f'輸出。

58.D

59.C解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運用常規(guī)的集合運算(并、交、差、笛卡爾積等)外,還定義了一些專門的關(guān)系運算,如投影、選擇、連接等運算。前者是將關(guān)系(即二維表)看成是元組的集合,這些運算主要是從二維表的行的方向來進行的;后者主要是從二維表的列的方向來進行運算。因此,選項A與B中的說法都是錯誤的,而選項C中的說法是正確的。

60.C解析:函數(shù)intf(intx)是一個遞歸函數(shù)調(diào)用,當(dāng)x的值等于0或1時,函數(shù)值等于3,其他情況下y=x2-f(x-2),所以在主函數(shù)中執(zhí)行語句z=f(3)時,y=3*3-f(3-2)=9-f(1)=9-3=6。

61.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

62.C

63.B\n數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典、判定表和判定樹是結(jié)構(gòu)化分析常用的工具。程序流程圖、N—S圖、PAD圖是詳細(xì)設(shè)計過程中常用的圖形工具。

\n

64.B

65.B在f(int+P,int4q)函數(shù)中,執(zhí)行P=P+1是將P所對應(yīng)的地址加1,而0q=+q+1是將q所指向的n的地址所對應(yīng)的值加1,所以m的得知所對應(yīng)的值沒有變,而n的值則為3了。因此B選項正確。

66.D算法是指解題方案的準(zhǔn)確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運算和操作,還要考慮算法的控制結(jié)構(gòu)。故答案為D選項。

67.C數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述,所以選擇C。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。

68.A

\n當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,'6789'),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項。

\n

69.C

70.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)的變量值。

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.D

73.B

74.D該題目中首先區(qū)別++n和n++,第一次調(diào)用f函數(shù)時,將++n(n自增l后再參與運算)作為參數(shù)進行傳遞,此時變量m的值為1,執(zhí)行n+=m;后,n=1,將l返回主函數(shù),并輸出。第二次調(diào)用f函數(shù)時,將n++(n參與運算后再自增1)作為參數(shù)進行傳遞,此時變量m的值為1,執(zhí)行語句n+=m;,由于n是靜態(tài)存儲變量,因此n=2,將2返回主函數(shù)并輸出。因此D選項正確。

75.D本題給出的兩個關(guān)系R與S的表結(jié)構(gòu)是不同的(R是二元關(guān)系,S是三元關(guān)系),它們不能進行∩、∪、一運算。而兩個不同結(jié)構(gòu)的關(guān)系是可以進行笛卡兒積(×)運算的。

76.As(k+j)展開后為4+(1(+j)·k+j+1結(jié)果為143,選擇A)。

77.C本題考查文件的定位,feof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達文件末尾(遇文件結(jié)束符),eof函數(shù)值為非零值,否則為0,所以選項C正確。

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

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

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

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

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

79.Di=0,i<2,j=0,p[i][j]=3,不滿足if判斷條件,j+2=2,p[i][j]=9,不滿足條件,j+2=4,不滿足while循環(huán)條件,i+1=1,j=0,p[1][0]=2,滿足if判斷條件,num=10*num+p[i][j]-‘0’=2,j+2=2,p[1][2]=8,滿足條件,num=10*2+p[i][j]-‘0’=28

80.A本題中由fun函數(shù)可知,b[0]=a[0][0]-a[0][3]=1-4=-3,b[1]=a[1][1]-[1][2]=6-7=-1,b[2]=a[2][2]-[2][1]=11-10=1,b[3]=8[3][3]-[3][1]=16-13=3。所以主函數(shù)中打印Y數(shù)組元素的值為A選項。

81.(1)錯誤:if((tt[i]>=ˊaˊ)||(tt[i]<=ˊzˊ))

正確:if((tt[i]>=ˊaˊ)&&(tt[i]<=ˊzˊ))

(2)錯誤:tt[i]+=32;

正確:tt[i]-=32;

【解析】題目要求將小寫字母改為對應(yīng)的大寫字母,要判斷是否是小寫字母,只需判斷字母是否在ˊaˊ~ˊzˊ,因此應(yīng)該是“(tt[i]>=ˊaˊ)&&(tt[i]<=ˊzˊ)”;又已知小寫字母的ASCⅡ碼值比對應(yīng)大寫字母的ASCⅡ值大32,因此本題的解題思路是從字符串的第一個字母開始遍歷,判斷是否為小寫字母,如果是,則ASCⅡ碼值減32。

82.\n#include”stdio.h”

\nmain

\n{intI,n;

\nfor(n=0,I=1900;I<=2000;I++)

\n{if(I%4==0I0!=0||I@0==0)

\n{printf(“%d”,I);n++;}

\nif(n%3==0)

\nprintf(“\\n”);}}}

\n2021-2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.C語言中函數(shù)返回值的類型是由()決定的。

A.return語句中的表達式類型B.調(diào)用該函數(shù)的主調(diào)函數(shù)類型C.定義函數(shù)時所指定的函數(shù)類型D.以上說法都不正確

2.有n個結(jié)點的二叉樹鏈表共有__________個空指針域。

A.n-1B.nC.n+1D.n+2

3.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責(zé)的是()。

A.數(shù)據(jù)庫維護B.數(shù)據(jù)庫設(shè)計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉(zhuǎn)換

4.若a是數(shù)值類型,則邏輯表達式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

5.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

6.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結(jié)構(gòu)

7.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。

A.3B.5C.7D.9

8.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

9.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

10.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。

A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式

11.

有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

12.以下程序的輸出結(jié)果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

13.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。

A.abcB.28cC.abc28D.因類型不一致而出錯

14.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

15.下列運算符中優(yōu)先級最高的是()。

A.!B.%C.-=D.&&

16.有以下程序:#include<stdio.h>voidfun(int*s){staticinti=0;do{s[J]=s[J]+s[j+I];}while(++j<2);}main(){intk.a(chǎn)[l0]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)pfintf("%d",a[k]);printf("\n");}程序運行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

17.若果要求一個線性表既能較快查找,又能適應(yīng)動態(tài)變化的要求,可以采用()查找方法。

A.分塊B.順序C.二分D.散列

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

19.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

20.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

二、2.填空題(20題)21.設(shè)二進制數(shù)A是00101101,若想通過異或運算ab使A的高4位取反,低4位不變,則二進制數(shù)B應(yīng)是【】。

22.如果一個工人可管理多個設(shè)備,而一個設(shè)備只被一個工人管理,則賣體“工人”與實體“設(shè)備”之間存在【】關(guān)系。

23.當(dāng)所有結(jié)點的權(quán)值都相等時,用這些結(jié)點構(gòu)造的二叉排序樹是【】。

24.算法的執(zhí)行過程中,所需要的存儲空間稱為算法的【】。

25.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復(fù)制,即將t所指字符串復(fù)制兩次到s所指內(nèi)存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調(diào)用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

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

}

26.解題方案的準(zhǔn)確而完整的描述稱為______。

27.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

28.下列程序的運行結(jié)果是______。

#include<stdio.h>

func(a,b)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{intk=5,m=3,p;

p=fune(k,m);

printf("%d",p);

p=func(k,m);

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

}

29.在面向?qū)ο蠓椒ㄖ校畔㈦[蔽是通過對象的______性來實現(xiàn)的。

30.在關(guān)系運算中,【】運算是對兩個具有公共屬性的關(guān)系所進行的運算。

31.下面程序中函數(shù)fun的功能是:找出一維數(shù)組元素中的最大值和它所在的下標(biāo),并將最大值和其下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。請?zhí)羁铡?/p>

#include<stdlib.h>

#include<sldio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];*d=0;

for(i=0;【】;i++)

if(*max<【】)

{*max=a[i];*d=i;}

}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max.&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

32.fseek函數(shù)的正確調(diào)用形式是【】。

33.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

34.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

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

36.棧滿時,再作入棧操作會產(chǎn)生【】,棧空時,刪除操作會產(chǎn)生【】。

37.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。

38.用復(fù)合的賦值運算符將變量x中的值增大2的賦值表達式是【】。

39.已知a為8位二進制數(shù),要想通過ab運算使a的低5位變反(即0變1,1變0),高3位不變,b的值應(yīng)為【】。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.選擇題(20題)41.設(shè)有如下三個關(guān)系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

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

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

43.判斷char型變量c1是否為大寫字母的正確表達式是

A.'A'<=c1<='Z'

B.(c1>=A)&&(c1<=Z)

C.('A'>=c1)||('Z'<=c1)

D.(c1>='A')&&(c1<='Z')

44.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

45.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

46.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

47.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

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

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

49.有以下程序:main(){intx=0,y=5,z=31while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是______。

A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

50.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

51.若有定義:intx=0,*p=&x;則語句printf("%d\n",*p);的輸出結(jié)果是()。

A.隨機值B.0C.x的地址D.p的地址

52.以下程序的輸出結(jié)果是()main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1,k<3;k++)printf("%s\n",w[k]);}

A.ABCDFGHKL

B.ABCEFGIJM

C.EFGJKO

D.EFGHIJKL

53.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}

A.xyzabcABCB.abcABCC.xyzabcD.xyzABC

54.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

55.下列選項中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()

A.數(shù)據(jù)類型B.數(shù)據(jù)操作C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)約束

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

A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作

B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

57.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x>10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結(jié)果是

A.0.000000B.0.250000C.0.500000D.1.000000

58.合法的數(shù)組定義是()

A.inta[]="string";

B.inta[5]={0,1,2,3,4,5};

C.chara="string";

D.chara={0,1,2,3,4,5};

59.下列關(guān)于關(guān)系運算的敘述中正確的是()。

A.投影、選擇、連接是從二維表的行的方向來進行運算

B.并、交、差是從二維表的列的方向來進行運算

C.投影、選擇、連接是從二維表的列的方向來進行運算

D.以上三種說法都不對

60.有以下程序

#include<stdio.h>

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{intz;

z=f(3);printf("%d\n",z);

}

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

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

四、選擇題(20題)61.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

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

62.

63.結(jié)構(gòu)化分析可以使用的工具是()。

A.N—s圖B.DFD圖C.PAD圖D.程序流程圖

64.(17)軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()

A.階段性報告

B.需求評審

C.總結(jié)

D.都不正確

65.有以下程序:

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

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

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

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對

67.數(shù)據(jù)庫設(shè)計中反映用戶對數(shù)據(jù)要求的模式是()。

A.內(nèi)模式B.概念模式C.外模式D.設(shè)計模式

68.

當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)罘是()。

#include<stdio.h>

#include<string.h>

main()

{charss[10]="1,2,3,4,5":

gets(ss);strcat(ss,"6789");printf("%s\n",ss);

}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

69.

70.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

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

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

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

72.

73.

74.有以下程序:

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

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

75.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

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

A.143B.197C.33D.28

77.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp),的返回值為()。

A.0B.\0C.非0值D.NULL

78.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

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

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

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

79.有以下程序:

main()

{char*p[]={"3697","2584"};

inti,j;longnum=0;

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

{j=0;

while(p[i][j]!=’\0’)

{if((p[i][j]-’0’)%2==0)num=10*num+p[i][j]-’0’;

j+=2;

}

}

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

}

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

A.35B.37

C.39D.28

80.有以下程序:

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

A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)

參考答案

1.C

2.C

3.DD)【解析】數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設(shè)計。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計,具體地說是進行數(shù)據(jù)模式的設(shè)計;數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。

4.A由于a==l和a!=1兩者互斥,即總有一個為真,因此二者的或也必定為真。

5.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲文件中的記錄,列稱為屬性,對應(yīng)存儲文件中的字段,所以本題答案為D。

6.A

7.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。

8.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實體集也可以轉(zhuǎn)換成關(guān)系。

9.D

10.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。

11.B

\n本題考查結(jié)構(gòu)體指針變量的賦值方法,要把結(jié)點b連接到結(jié)點;l的后面,必須把b的地址給a的next指針。故8正確。

\n

12.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

13.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項。

14.C

15.A

16.D本題考查靜態(tài)變量,靜態(tài)變量有儲存已經(jīng)操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

17.A

18.A解析:局部變量在執(zhí)行

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論