一、選擇題((1)~(10)每小題2分,(11)~(50)每小題1分,共60分)
下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請將正確選項(xiàng)涂寫 在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)算法一般都可以用________控制結(jié)構(gòu)組合而成。
A)循環(huán)、分支、遞歸 B)順序、循環(huán)、嵌套
C)循環(huán)、遞歸、選擇 D)順序、選擇、循環(huán)
答案:D
評析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計(jì)是否符合結(jié)構(gòu)化原則。一個(gè)算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。
(2)數(shù)據(jù)的存儲結(jié)構(gòu)是指________。
A)數(shù)據(jù)所占的存儲空間量
B)數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示
C)數(shù)據(jù)在計(jì)算機(jī)中的順序存儲方式
D)存儲在外存中的數(shù)據(jù)
答案:B
評析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)。
(3)設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為________。
A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA
答案:B
評析:中序遍歷是指首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且在遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹的一種二叉樹遍歷算法。
(4)在面向?qū)ο蠓椒ㄖ,一個(gè)對象請求另一對象為其服務(wù)的方式是通過發(fā)送________。
A)調(diào)用語句 B)命令 C)口令 D)消息
答案:D
評析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動(dòng)的,對象間的這種相互合作需要一個(gè)機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消息。消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
(5)檢查軟件產(chǎn)品是否符合需求定義的過程稱為________。
A)確認(rèn)測試 B)集成測試 C)驗(yàn)證測試 D)驗(yàn)收測試
答案:A
評析:確認(rèn)測試的任務(wù)是驗(yàn)證軟件的功能和性能及其他特性是否滿足了需求規(guī)格說明中的確定的各種需求,以及軟件配置是否完全、正確。
(6)下列工具中為需求分析常用工具的是________。
A)PAD B)PFD C)N-S D)DFD
答案:D
評析:常見的需求分析方法有:結(jié)構(gòu)化分析方法和面向?qū)ο蟮姆治龇椒ā=Y(jié)構(gòu)化分析的常用工具有:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表等。
(7)下面不屬于軟件設(shè)計(jì)原則的是________。
A)抽象 B)模塊化 C)自底向上 D)信息隱蔽
答案:C
評析:在軟件設(shè)計(jì)過程中,必須遵循軟件工程的基本原則:這些原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可靠性。
(8)索引屬于_________。
A)模式 B)內(nèi)模式 C)外模式 D)概念模式
答案:B
評析:內(nèi)模式(Internal Schema)又稱物理模式(Physical Schema),它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑。
(9)在關(guān)系數(shù)據(jù)庫中,用來表示實(shí)體之間聯(lián)系的是_________。
A)樹結(jié)構(gòu) B)網(wǎng)結(jié)構(gòu) C)線性表 D)二維表
答案:D
評析:在關(guān)系數(shù)據(jù)庫中,用二維表來表示實(shí)體之間聯(lián)系。
(10)將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成_________。
A)屬性 B)關(guān)系 C)鍵 D)域
答案:B
評析:關(guān)系是由若干個(gè)不同的元組所組成,因此關(guān)系可視為元組的集合,將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成關(guān)系。
(11)有如下程序
main()
{
char ch[2][5]={"6937","8254"},*p[2];
int I,j,s=0;
for(I=O;i<2;i++)p[i]=ch[I];
for(I=O;i<2;i++)
for(j=0;p[i][j]>'\0';j+=2)
s=10*s+(p[i][j].'0');
printf("%d\n",s);
}
該程序的輸出結(jié)果是_________。
A)69825 B)63825 C)6385 D)693825
答案:C
評析:本題"ch[2][5]={"6937","8254"}"用于2行5列的二維數(shù)組初始化,ch[O][0]-ch[O][4]的值分別為:6,9,3,7,\0;ch[1][0]-ch[1][4]的值分別為:8,2,5,4,\0;第一個(gè)for循環(huán)用于將數(shù)組指針分別指向二給數(shù)組的第一行和第二行;第二個(gè)for嵌套循環(huán)用于取出p[O][0],p[O][2],p[1][0],p[1][2]四個(gè)存儲單元的數(shù)組成一個(gè)四位數(shù)進(jìn)行輸出。
(12)以下敘述不正確的是_________。
A)分號是C語言的必要組成部分
B)C程序的注釋可以寫在句的后面
C)函數(shù)是C程序的基本單位
D)主函數(shù)的名字不一定用main表示
答案:D
評析:c語言的程序是由主函數(shù)main()開始運(yùn)行,由主函數(shù)來調(diào)用其他函數(shù),所以D是錯(cuò)誤的。
(13)若變量已正確定義并賦值,下面符合c語言的表達(dá)式是_________。
A)a:_b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b
答案:B
評析:選項(xiàng)A和c一望而知其錯(cuò):對于表達(dá)式a=a+7=c+b(答案D),是先執(zhí)行賦值表達(dá)式a+7=c+b,再把這個(gè)表達(dá)式的值賦給a,顯然,表達(dá)式a+7=c+b非法,因?yàn)橘x值表達(dá)式的左側(cè)不能為常量或表達(dá)式。
(14)C語言運(yùn)算對象必須是整型的運(yùn)算符是_________。
A)%= B)/ C)= D)<:
答案:A
評析:在C語言中,模運(yùn)算(即取余運(yùn)算%)的運(yùn)算對象必須是整型數(shù)據(jù)(常量、變量或表達(dá)式)。
(15)下面一組中都是C語言關(guān)鍵字的是_________。
A)double Int for B)main while goto
C)volatile break static D)malloc sizeof new
答案:C
評析:c語言中的關(guān)鍵字有32個(gè)關(guān)鍵字(參見c語言教程),本題中只有C符合題意。
(16)若已定義x和y為double類型,則表達(dá)式x=1,y=x+3/2的值是_________。
A)l B)2 C)2.0 D)2.5
答案:C
評析:這是一個(gè)逗號表達(dá)式,它的值應(yīng)為表達(dá)式y(tǒng)=x+3/2的值,而前一個(gè)表達(dá)式已給x賦值l,在沒有進(jìn)行類型轉(zhuǎn)換的t留下,3/2的值為1,所以x+3/2的值應(yīng)為2.0。
(17)執(zhí)行語句:for(、i=1;i++<4;);后變量i的值是_________。
A)3 B)4 C)5 D)不定
答案:C
評析:for語句的一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句,循環(huán)結(jié)束的條件是i++<4,所以當(dāng)i++_4時(shí),循環(huán)結(jié)束,此時(shí)變量i的值為5。
(18)若變量a、i已正確定義,且i已正確賦值,合法的語句是_________。
A)a==l B)++i; C)a=a++=5; D)a=int(i);
答案:B
評析:選項(xiàng)D顯然是錯(cuò)的,而選項(xiàng)A沒有分號結(jié)束,不是c語句;a++=5違反了賦值表達(dá)式左側(cè)必須為一個(gè)變量(不能是常量或表達(dá)式)的規(guī)定.
(19)有如下程序
main()
{ int y=3,x=3,z=l;
printf("%d %d\n",(++x,y++),z+2);
}
運(yùn)行該程序的輸出結(jié)果是________。
A)3 4 B)4 2 C)4 3 D)3 3
答案:D
評析:逗號表達(dá)式(++X,y++)的值應(yīng)該是y++的值,由于y++是先引用后自增,所以y++的值是3。
(20)運(yùn)行以下程序后,如果從鍵盤上輸入65 14<回車>,則輸出結(jié)果為________。
main()
{
int m,n;
printf("Enter m,n:");
scanf("%d%dt.,&m,&n);
while(mI-n)
{
while(m>n)re-=n,
while(n>m)n-=m;
}
printf("m=%d\n",m);
}
A)m=3 B)m=2 C)m=l D)m=O
答案:C
評析:分析程序可知,該程序?qū)崿F(xiàn)的功能是對數(shù)m,n求其最大公約數(shù)。在本題中m與n的值分別為65與14,其最大公約數(shù)為1,故其輸出結(jié)果為m=l。
(21)能正確表示邏輯關(guān)系:""a≥10或a≤0""的C語言表達(dá)式是________。
A)a>=10 or a<=O B)a>=0 I a<=10
C)a>=10&&a<=0 D)a>=10 ll a<=10
答案:D
評析:c語言中的"或"關(guān)系用"‖"表示,其它相關(guān)邏輯運(yùn)算符"與"用"&&"表示;運(yùn)算符"非"用"!"來表示。
(22)已經(jīng)定義ch為字符型變量,以下賦值表達(dá)式中錯(cuò)誤的是________。
A)ch='\' B)ch=62+3 C)ch=NULL D)ch='\xaa'
答案:A
評析:反斜杠字符"\"賦給字符,應(yīng)該寫成ch='\\',所以A是錯(cuò)誤的。
(23)有如下程序
main()
{ int x=l,a=0,b=0;
switch(x){
case 0:b++:
case 1:a++:
case 2:a++;b++;
}
printf("a=%d,b。%d\n",a,b);
)
該程序的輸出結(jié)果是__________。
A)a:2,b=1 B)a=l,b=1 C)a=l,b:O D)a=2,b=2
答案:A
評析:在這個(gè)switch語句中,因?yàn)閤的值為1,所以執(zhí)行case 1:后面的a++,這樣a=1。但又由于其下沒有break語句,所以其后面的語句"a++;b++"也將被執(zhí)行,這樣一來,a=2,b=1。
(24)有如下程序
main()
{ float x=2.0,y;
if(x<O.O)y=0.0;
else if(x<lO.O)y=1.O/x;
else y=1.O;
printf(%f\n",y);
}
該程序輸出結(jié)果是_________。
A)0.000000 B)0.250000 C)0.500000 D)1.000000
答案:C
評析:本題考查的是if..else語句的使用。x=2.0,符合第二個(gè)IF語句的條件x<lO.O,所以執(zhí)行y=1.0/x語句,即y=1.0/2.0=0.500000。
(25)有以下函數(shù)定義:
void fun(int n,double x){……}
若以下選項(xiàng)中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用語句是_______。
A)fun(int y,double m); B)k=fun(10,12.5);
C)fun(x,n); D)void fun(n,x);
答案:C
評析:函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)參表列);,實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致,在調(diào)用函數(shù)時(shí),不要指定其返回類型,對于返回類型為void的函數(shù),不能作為賦值表達(dá)式的組成部分,所以選C。
(26)有如下程序
main()
{ int i,sum;
for(i=l;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
該程序的執(zhí)行結(jié)果是_________。
A)6 B)3 C)死循環(huán) D)O
答案:C
評析:在循環(huán)過程中,i的值一直沒有被改變,所以這是一個(gè)死循環(huán)。
(27)下列函數(shù)定義中,會(huì)出現(xiàn)編譯錯(cuò)誤的是_________。
A)max(int x,int y,int*z) B)int max(im x,y)
{ *z=x>y?x:y;} { int z;
z=x>y?x:y;
return z;}
C)max(intx,inty) D)intmax(intx,inty)
{int z; {return x>y?x:y;}
z=x>y?x:y;
return(z);}
答案:B
評析:在c語言中,不可以在函數(shù)的參數(shù)聲明列表中用一個(gè)類型名指定多個(gè)參數(shù)。故選項(xiàng)B是錯(cuò)誤的。
其正確的表示方式應(yīng)為
int max(int x,int y){……}
或
int max(x,y)
int x,y;
{……}