一、選擇題
1.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行運(yùn)算,及( )
A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) B.計(jì)算方法
C.數(shù)據(jù)映象 D.邏輯存儲(chǔ)
【參考答案】 A
2.在計(jì)算機(jī)中,算法是指( )
A.加工方法 B.解題方案的準(zhǔn)確而完整的描述 C.排序方法 D.查詢方法
【參考答案】 B
3.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做( )
A.軟件投機(jī) B.軟件危機(jī) C.軟件工程 D.軟件產(chǎn)生
【參考答案】 B
4.開發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是( )
A.大系統(tǒng)的復(fù)雜性 B.人員知識(shí)不足 C.客觀世界千變?nèi)f化 D.時(shí)間緊、任務(wù)重
【參考答案】 A
5.數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是( )
A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)
B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)
D.3者沒有明顯的包含關(guān)系
【參考答案】 B
6.下列敘述中正確的是( )
A.線性表是線性結(jié)構(gòu) B.棧與隊(duì)列是非線性結(jié)構(gòu)
C.線性鏈表是非線性結(jié)構(gòu) D.二叉樹是線性結(jié)構(gòu)
【參考答案】 A
7.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是( )
A.堆排序 B.直接插入排序 C.快速排序 D.直接選擇排序
【參考答案】 B
8.下列不屬于結(jié)構(gòu)化分析的常用工具的是( )
A.數(shù)據(jù)流圖 B.數(shù)據(jù)字典 C.判定樹 D.PAD圖
【參考答案】 A
9.下列工具中為需求分析常用工具的是( )
A.PAD B.PFD C.N-S D.DFD
【參考答案】 D
10.數(shù)據(jù)庫的故障恢復(fù)一般是由( )
A.數(shù)據(jù)流圖完成的 B.數(shù)據(jù)字典完成的
C.DBA完成的 D.PAD圖完成的
【參考答案】 C
11.關(guān)于C++與C語言關(guān)系描述中錯(cuò)誤的是( )
A.C++語言是C語言的超集
B.C++語言對(duì)C語言進(jìn)行了擴(kuò)充
C.C++語言包含C語言的全部語法特征
D.C++語言與C語言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言
【參考答案】 D
12.在C++語言中,不合法的實(shí)型數(shù)據(jù)的是( )
A.0.123 B.123e3 C.2.1e3.5 D.123.0
【參考答案】 C
13.下面有關(guān)于for循環(huán)的正確描述是( )
A.for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B.for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
C.在for循環(huán)中,不能用break語句跳出循環(huán)體
D.for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號(hào)括起來
【參考答案】 D
14.假定int類型變量占用兩個(gè)字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )
A.3 B.6 C.10 D.20
【參考答案】 D
15.以下敘述正確的是( )
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
【參考答案】 D
16.下面的語句中錯(cuò)誤的是( )
A.int a=5;int x[a]; B.const int a=5;int x[a];
C.int n=5;int *p=new int[a]; D.const int n=5;int *p=new int[a];
【參考答案】 A
17.關(guān)于二義性的描述錯(cuò)誤的是( )
A.一個(gè)子類的兩個(gè)父類中都有某個(gè)同名成員,在子類中對(duì)該成員訪問可能出現(xiàn)二義性 B.解決二義性可以用對(duì)成員名的限定法
C.父類和子類中同時(shí)出現(xiàn)同名函數(shù),也可能存在二義性
D.一個(gè)子類是從兩個(gè)父類派生出來的,而這兩個(gè)父類又有一個(gè)共同的父類,對(duì)該父類成員進(jìn)行訪問時(shí),可能出現(xiàn)二義性
【參考答案】 C
18.函數(shù)模板:template T add(T x,T y) {return x+y;}
下列對(duì)add函數(shù)的調(diào)用不正確的是( )
A.add< >(1,2) B.add(1,2)
C.add(1.0,2) D.add(1.0,2.0)
【參考答案】 C
19.this指針是C++實(shí)現(xiàn)什么的一種機(jī)制?( )
A.抽象 B.封裝 C.繼承 D.重載
【參考答案】 B
20.下列程序的輸出結(jié)果是( )
#include class Myclass{
public:Myclass(int i=0,int j=0)
{
y=j;
}
void show(){cout<<″x=″<
void show()const{cout<<″x=″<<″ ″<<″y=″<
privated:
int x;int y;
};
void main()
{yclass my1(3,4);
const my2(7,8);
my1.show();my2.show();}
A.x=4,y=3;x=7,y=8 B.x=3,y=4;x=7,y=8 C.x=7,y=8;x=4,y=3 D.x=8,y=7;x=7,y=8
【參考答案】 A
21.在C++語言中,打開一個(gè)文件就是將這個(gè)文件與一個(gè)什么建立關(guān)聯(lián)( )
A.流 B.類 C.結(jié)構(gòu) D.對(duì)象
【參考答案】 A
22.執(zhí)行語句for(i=1;i++<4;);,后變量i的值是( )
A.3 B.4 C.5 D.不定
【參考答案】 C
23.下列哪個(gè)是C++語言的有效標(biāo)識(shí)符?( )
A._No1 B.No.1 C.12345 D.int
【參考答案】 A
24.下列程序的執(zhí)行結(jié)果為( )
#include void main()
{int a=3,b=0;
int *p=&a;
b=+a++;
cout<<*p<<″,″<
A.3,4 B.4,3 C.3,-4 D.4,4
【參考答案】 B
25.下列選項(xiàng),不正確的是( )
A.for(int a=1;a<=10;a++); B.int a=1;
do
{a++}
while(a<=10)
C.int a=1; D.for(int a=1;a<=10;a++)a++;
while(a<=10)
{a++}
【參考答案】 B
26.下列程序的輸出結(jié)果為( )
#include void main()
{char *a[]={″hello″,″the″,″world″};
char **pa=a;
pa++;
cout<<*pa<
A.hello B.the C.world D.hellotheworld
【參考答案】 B
27.下列程序的輸出結(jié)果是( )
#include int min(int a,int b)
{if(a
else return b;
return 0;}
void main()
{cout<
A.0 B.1 C.2 D.3
【參考答案】 B
28.對(duì)類成員訪問權(quán)限的控制,是通過設(shè)置成員的訪問控制屬性實(shí)現(xiàn)的,下列不是訪問控制屬性的是( )
A.公有類型 B.私有類型
C.保護(hù)類型 D.友元類型
【參考答案】 D
29.類的析構(gòu)函數(shù)的作用是( )
A.一般成員函數(shù)的初始化 B.類的初始化
C.對(duì)象的初始化 D.刪除類創(chuàng)建的對(duì)象
【參考答案】 D
30.下面對(duì)靜態(tài)數(shù)據(jù)成員的描述中,正確的是( )
A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進(jìn)行初始化
B.靜態(tài)數(shù)據(jù)成員不可以被類的對(duì)象調(diào)用
C.靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
【參考答案】 D
31.在公有派生情況下,有關(guān)派生類對(duì)象和基類對(duì)象的關(guān)系,下列敘述不正確的是( )
A.派生類的對(duì)象可以賦給基類的對(duì)象
B.派生類的對(duì)象可以初始化基類的引用
C.派生類的對(duì)象可以直接訪問基類中的成員
D.派生類的對(duì)象的地址可以賦給指向基類的指針
【參考答案】 C
32.下列關(guān)于虛基類的描述,錯(cuò)誤的是( )
A.設(shè)置虛基類的目的是為了消除二義性
B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用
C.若同一層中包含多個(gè)虛基類,這些基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用
D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)
【參考答案】 B
33.下列運(yùn)算符中,在C++語言中不能重載的是( )
A.* B.>= C.:: D./
【參考答案】 C
34.下列程序的運(yùn)行結(jié)果是( )
#include class A
{ int a;
public:
A() {a=0;}
A(int aa)
{a=aa;
cout<
void main()
{A x,y(2),z(3);
cout<
A.00 B.23 C.34 D.25
【參考答案】 B
35.判斷char型變量c是否為小寫字母的正確表達(dá)式是( )
A.′a′<=c<=′z′ B.(c>+A)&&(c<=z)
C.(′a′>=c)||(′z′<=c) D.(c>=′a′)&&(c<=′z′)
【參考答案】 D
二、填空題
1.長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【1】。
【參考答案】
【1】n/2
2.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象的類的【2】。
【參考答案】
【2】實(shí)例
3.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【3】。
【參考答案】
【3】物理獨(dú)立性
4.若串s=″MathTypes″,則其子串的數(shù)目是【4】。
【參考答案】
【4】46
5.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【5】為基礎(chǔ)的DML語言。
【參考答案】
【5】謂詞演算
6.程序
#include″inostream.h″
void main()
{int i=10;
int j=5;
cout<
的結(jié)果為【6】。
【參考答案】
【6】15
7.語句int *i;i=new int[10];,釋放指針i的語句是【7】。
【參考答案】
【7】delete[]I
8.在C++語言中每個(gè)類都有一個(gè)【8】指針,該指針指向正在調(diào)用成員函數(shù)的對(duì)象。
【參考答案】
【8】this
9.程序的結(jié)果為【9】。
#include ″iostream.h″
template T total(T *data)
{ T s=0;
while( *data)
{s+=*data++;}
return s; }
int main()
{ int x[]={2,4,6,8,0,12,14,16,18};
cout<
return 0;
cout<
【參考答案】
【9】20
10.一個(gè)C++語言程序的開發(fā)步驟通常包括編輯、【10】、鏈接、運(yùn)行和調(diào)試。
【參考答案】
【10】編譯
11.下面程序的運(yùn)行結(jié)果是【11】和【12】。
#include #define N 10
#define s(x)x*x
#define f(x)(x*x)
void main()
{ int i1,i2;
i1=1000/s(N);i2=1000/f(N);
cout<
【參考答案】
【11】1000 【12】10
12.【13】是實(shí)現(xiàn)C++語言編譯時(shí)多態(tài)性的機(jī)制,【14】是實(shí)現(xiàn)C++語言運(yùn)行時(shí)多態(tài)性的要制。
【參考答案】
【13】靜態(tài)聯(lián)編或靜態(tài)綁定 【14】動(dòng)態(tài)聯(lián)編或動(dòng)態(tài)綁定
13.以下程序的輸出結(jié)果是【15】。
#include void main()
{ int a=0;
a+=(a=8);
cout<
【參考答案】
【15】16
上機(jī)部分
一、改錯(cuò)題
使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個(gè)源程序文件kt8_1.cpp,但該程序運(yùn)行有問題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清單如下:
#include classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"<
virtualvoidf2(){cout<<"f2functionofbase"<
virtualvoidf3(){cout<<"f3functionofbase"<
voidf4(){cout<<"f4functionofbase"<
/**********found**********/
classderive::publicbase
{ voidf1(){cout<<"f1functionofderive"<
voidf2(intx){cout<<"f2functionofderive"<
voidf4(){cout<<"f4functionofderive"<
voidmain()
{ base*p;
deriveobj2;
/**********found**********/
p=obj2;
p->f1();
p->f2();
p->f4(); }
【參考答案】
(1)將void f1(){ cout<<"f1 function of base"<
改為:virtual void f1(){ cout<<"f1 function of base"<
(2)將class derive::public base
改為:class derive:public base
(3)將p=obj2;
改為:p=&obj2;
【試題解析】
(1)主要考查對(duì)虛函數(shù)的深刻理解,虛函數(shù)是動(dòng)態(tài)聯(lián)編的基礎(chǔ),也是實(shí)現(xiàn)多態(tài)性的重要方法,它可以根據(jù)不同的情況動(dòng)態(tài)的選擇執(zhí)行哪一個(gè)函數(shù)。在派生類中實(shí)現(xiàn)虛函數(shù)應(yīng)該滿足與基類的同名函數(shù)完全相同,并且使用關(guān)鍵字virtual修飾,本題中由輸出結(jié)果中的f1 function of derive可知,必須將基類base的成員函數(shù)f1()定義為虛函數(shù);
(2)主要考查對(duì)派生類定義格式的掌握,應(yīng)該使用“:”后面是繼承列表,而“::”是作用域符;
(3)主要考查類對(duì)象的定義與使用,p是一個(gè)指針類型的變量,給它的賦值應(yīng)該是一個(gè)地址,即使用取地址操作符&。
二、簡(jiǎn)單應(yīng)用題
已知考生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名考生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:找出成績(jī)最低的考生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給予出函數(shù)的首部,請(qǐng)完成該函數(shù)。
注意:部分源程序已存在文件kt8_2.cpp中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
文件kt8_2.cpp的內(nèi)容如下:
#include #include #include #defineN10
typedefstructss
{charnum[10];
ints;
}STU;
voidfun(STUa[],STU*s)
{
}
voidmain()
{STU
a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
fun(a,&m);
cout<<"*****Theoriginaldate*****"<
cout<<"Thelowest:"<
【參考答案】
fun(STU a[],STU *s)
{int i, min;
min=a[0].s;
for(i=0;i
if(a[i].s
{min=a[i].s;
*s=a[i];}}
【試題解析】
解題思路為:先假設(shè)第一個(gè)考生的成績(jī),通過循環(huán)找到最低成績(jī),并將最低成績(jī)的考生記錄傳給指針s,帶回主函數(shù)。
三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt8_3,此工程包含一個(gè)源程序文件kt8_3.cpp,該文件設(shè)計(jì)了用于輸出乘法九九表的類。請(qǐng)認(rèn)真閱讀已有的代碼,按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類Table的私有數(shù)據(jù)成員x和y,分別用于表示九九表中的兩個(gè)乘數(shù)(x*y),它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句;
(2)完成類Table的成員函數(shù)print()的定義,該函數(shù)以"x*y=z"的格式打印出九九表中的一個(gè)乘法算式,請(qǐng)使用格式化輸出函數(shù)printf實(shí)現(xiàn),在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句;
(3)完成類Table9的成員函數(shù)print()的定義,該函數(shù)調(diào)用基類Table的print()函數(shù),將九九表輸出到屏幕,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句;
(4)補(bǔ)充主函數(shù),在屏幕上輸出九九表,以便測(cè)試所定義的類的正確性。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件kt8_3.cpp清單如下:
#include #include classTable
{//**1**
intz;
public:
voidprint(intx,inty,intz);};
voidTable::print(intx,inty,intz)
{//**2**}
classTable9:publicTable
{public:
voidprint();};
voidTable9::print()
{//**3**
intx,y,z;
for(i=1;i<10;i++)
{for(j=1;j
{x=i;
y=j;
z=i*j;
Table::print(y,x,z);}
printf("\n");}}
main()
{//**4**
return0;}
【參考答案】
(1)int x;
int y;
(2)printf( "%d*%d=%d ",x,y,z);
if(z<10) printf(" ");
(3)int i,j;
(4)Table9 t_9;
t_9.print();
【試題解析】
主要考查將具體問題抽象為類,將類的定義補(bǔ)充完整,并進(jìn)行類定義測(cè)試的能力。
1.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行運(yùn)算,及( )
A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) B.計(jì)算方法
C.數(shù)據(jù)映象 D.邏輯存儲(chǔ)
【參考答案】 A
2.在計(jì)算機(jī)中,算法是指( )
A.加工方法 B.解題方案的準(zhǔn)確而完整的描述 C.排序方法 D.查詢方法
【參考答案】 B
3.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做( )
A.軟件投機(jī) B.軟件危機(jī) C.軟件工程 D.軟件產(chǎn)生
【參考答案】 B
4.開發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是( )
A.大系統(tǒng)的復(fù)雜性 B.人員知識(shí)不足 C.客觀世界千變?nèi)f化 D.時(shí)間緊、任務(wù)重
【參考答案】 A
5.數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是( )
A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)
B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)
D.3者沒有明顯的包含關(guān)系
【參考答案】 B
6.下列敘述中正確的是( )
A.線性表是線性結(jié)構(gòu) B.棧與隊(duì)列是非線性結(jié)構(gòu)
C.線性鏈表是非線性結(jié)構(gòu) D.二叉樹是線性結(jié)構(gòu)
【參考答案】 A
7.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是( )
A.堆排序 B.直接插入排序 C.快速排序 D.直接選擇排序
【參考答案】 B
8.下列不屬于結(jié)構(gòu)化分析的常用工具的是( )
A.數(shù)據(jù)流圖 B.數(shù)據(jù)字典 C.判定樹 D.PAD圖
【參考答案】 A
9.下列工具中為需求分析常用工具的是( )
A.PAD B.PFD C.N-S D.DFD
【參考答案】 D
10.數(shù)據(jù)庫的故障恢復(fù)一般是由( )
A.數(shù)據(jù)流圖完成的 B.數(shù)據(jù)字典完成的
C.DBA完成的 D.PAD圖完成的
【參考答案】 C
11.關(guān)于C++與C語言關(guān)系描述中錯(cuò)誤的是( )
A.C++語言是C語言的超集
B.C++語言對(duì)C語言進(jìn)行了擴(kuò)充
C.C++語言包含C語言的全部語法特征
D.C++語言與C語言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言
【參考答案】 D
12.在C++語言中,不合法的實(shí)型數(shù)據(jù)的是( )
A.0.123 B.123e3 C.2.1e3.5 D.123.0
【參考答案】 C
13.下面有關(guān)于for循環(huán)的正確描述是( )
A.for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B.for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
C.在for循環(huán)中,不能用break語句跳出循環(huán)體
D.for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號(hào)括起來
【參考答案】 D
14.假定int類型變量占用兩個(gè)字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )
A.3 B.6 C.10 D.20
【參考答案】 D
15.以下敘述正確的是( )
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
【參考答案】 D
16.下面的語句中錯(cuò)誤的是( )
A.int a=5;int x[a]; B.const int a=5;int x[a];
C.int n=5;int *p=new int[a]; D.const int n=5;int *p=new int[a];
【參考答案】 A
17.關(guān)于二義性的描述錯(cuò)誤的是( )
A.一個(gè)子類的兩個(gè)父類中都有某個(gè)同名成員,在子類中對(duì)該成員訪問可能出現(xiàn)二義性 B.解決二義性可以用對(duì)成員名的限定法
C.父類和子類中同時(shí)出現(xiàn)同名函數(shù),也可能存在二義性
D.一個(gè)子類是從兩個(gè)父類派生出來的,而這兩個(gè)父類又有一個(gè)共同的父類,對(duì)該父類成員進(jìn)行訪問時(shí),可能出現(xiàn)二義性
【參考答案】 C
18.函數(shù)模板:template T add(T x,T y) {return x+y;}
下列對(duì)add函數(shù)的調(diào)用不正確的是( )
A.add< >(1,2) B.add(1,2)
C.add(1.0,2) D.add(1.0,2.0)
【參考答案】 C
19.this指針是C++實(shí)現(xiàn)什么的一種機(jī)制?( )
A.抽象 B.封裝 C.繼承 D.重載
【參考答案】 B
20.下列程序的輸出結(jié)果是( )
#include class Myclass{
public:Myclass(int i=0,int j=0)
{
y=j;
}
void show(){cout<<″x=″<
void show()const{cout<<″x=″<<″ ″<<″y=″<
privated:
int x;int y;
};
void main()
{yclass my1(3,4);
const my2(7,8);
my1.show();my2.show();}
A.x=4,y=3;x=7,y=8 B.x=3,y=4;x=7,y=8 C.x=7,y=8;x=4,y=3 D.x=8,y=7;x=7,y=8
【參考答案】 A
21.在C++語言中,打開一個(gè)文件就是將這個(gè)文件與一個(gè)什么建立關(guān)聯(lián)( )
A.流 B.類 C.結(jié)構(gòu) D.對(duì)象
【參考答案】 A
22.執(zhí)行語句for(i=1;i++<4;);,后變量i的值是( )
A.3 B.4 C.5 D.不定
【參考答案】 C
23.下列哪個(gè)是C++語言的有效標(biāo)識(shí)符?( )
A._No1 B.No.1 C.12345 D.int
【參考答案】 A
24.下列程序的執(zhí)行結(jié)果為( )
#include void main()
{int a=3,b=0;
int *p=&a;
b=+a++;
cout<<*p<<″,″<
A.3,4 B.4,3 C.3,-4 D.4,4
【參考答案】 B
25.下列選項(xiàng),不正確的是( )
A.for(int a=1;a<=10;a++); B.int a=1;
do
{a++}
while(a<=10)
C.int a=1; D.for(int a=1;a<=10;a++)a++;
while(a<=10)
{a++}
【參考答案】 B
26.下列程序的輸出結(jié)果為( )
#include void main()
{char *a[]={″hello″,″the″,″world″};
char **pa=a;
pa++;
cout<<*pa<
A.hello B.the C.world D.hellotheworld
【參考答案】 B
27.下列程序的輸出結(jié)果是( )
#include int min(int a,int b)
{if(a
else return b;
return 0;}
void main()
{cout<
A.0 B.1 C.2 D.3
【參考答案】 B
28.對(duì)類成員訪問權(quán)限的控制,是通過設(shè)置成員的訪問控制屬性實(shí)現(xiàn)的,下列不是訪問控制屬性的是( )
A.公有類型 B.私有類型
C.保護(hù)類型 D.友元類型
【參考答案】 D
29.類的析構(gòu)函數(shù)的作用是( )
A.一般成員函數(shù)的初始化 B.類的初始化
C.對(duì)象的初始化 D.刪除類創(chuàng)建的對(duì)象
【參考答案】 D
30.下面對(duì)靜態(tài)數(shù)據(jù)成員的描述中,正確的是( )
A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進(jìn)行初始化
B.靜態(tài)數(shù)據(jù)成員不可以被類的對(duì)象調(diào)用
C.靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
【參考答案】 D
31.在公有派生情況下,有關(guān)派生類對(duì)象和基類對(duì)象的關(guān)系,下列敘述不正確的是( )
A.派生類的對(duì)象可以賦給基類的對(duì)象
B.派生類的對(duì)象可以初始化基類的引用
C.派生類的對(duì)象可以直接訪問基類中的成員
D.派生類的對(duì)象的地址可以賦給指向基類的指針
【參考答案】 C
32.下列關(guān)于虛基類的描述,錯(cuò)誤的是( )
A.設(shè)置虛基類的目的是為了消除二義性
B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用
C.若同一層中包含多個(gè)虛基類,這些基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用
D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)
【參考答案】 B
33.下列運(yùn)算符中,在C++語言中不能重載的是( )
A.* B.>= C.:: D./
【參考答案】 C
34.下列程序的運(yùn)行結(jié)果是( )
#include class A
{ int a;
public:
A() {a=0;}
A(int aa)
{a=aa;
cout<
void main()
{A x,y(2),z(3);
cout<
A.00 B.23 C.34 D.25
【參考答案】 B
35.判斷char型變量c是否為小寫字母的正確表達(dá)式是( )
A.′a′<=c<=′z′ B.(c>+A)&&(c<=z)
C.(′a′>=c)||(′z′<=c) D.(c>=′a′)&&(c<=′z′)
【參考答案】 D
二、填空題
1.長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【1】。
【參考答案】
【1】n/2
2.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象的類的【2】。
【參考答案】
【2】實(shí)例
3.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【3】。
【參考答案】
【3】物理獨(dú)立性
4.若串s=″MathTypes″,則其子串的數(shù)目是【4】。
【參考答案】
【4】46
5.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【5】為基礎(chǔ)的DML語言。
【參考答案】
【5】謂詞演算
6.程序
#include″inostream.h″
void main()
{int i=10;
int j=5;
cout<
的結(jié)果為【6】。
【參考答案】
【6】15
7.語句int *i;i=new int[10];,釋放指針i的語句是【7】。
【參考答案】
【7】delete[]I
8.在C++語言中每個(gè)類都有一個(gè)【8】指針,該指針指向正在調(diào)用成員函數(shù)的對(duì)象。
【參考答案】
【8】this
9.程序的結(jié)果為【9】。
#include ″iostream.h″
template T total(T *data)
{ T s=0;
while( *data)
{s+=*data++;}
return s; }
int main()
{ int x[]={2,4,6,8,0,12,14,16,18};
cout<
return 0;
cout<
【參考答案】
【9】20
10.一個(gè)C++語言程序的開發(fā)步驟通常包括編輯、【10】、鏈接、運(yùn)行和調(diào)試。
【參考答案】
【10】編譯
11.下面程序的運(yùn)行結(jié)果是【11】和【12】。
#include #define N 10
#define s(x)x*x
#define f(x)(x*x)
void main()
{ int i1,i2;
i1=1000/s(N);i2=1000/f(N);
cout<
【參考答案】
【11】1000 【12】10
12.【13】是實(shí)現(xiàn)C++語言編譯時(shí)多態(tài)性的機(jī)制,【14】是實(shí)現(xiàn)C++語言運(yùn)行時(shí)多態(tài)性的要制。
【參考答案】
【13】靜態(tài)聯(lián)編或靜態(tài)綁定 【14】動(dòng)態(tài)聯(lián)編或動(dòng)態(tài)綁定
13.以下程序的輸出結(jié)果是【15】。
#include void main()
{ int a=0;
a+=(a=8);
cout<
【參考答案】
【15】16
上機(jī)部分
一、改錯(cuò)題
使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個(gè)源程序文件kt8_1.cpp,但該程序運(yùn)行有問題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清單如下:
#include classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"<
virtualvoidf2(){cout<<"f2functionofbase"<
virtualvoidf3(){cout<<"f3functionofbase"<
voidf4(){cout<<"f4functionofbase"<
/**********found**********/
classderive::publicbase
{ voidf1(){cout<<"f1functionofderive"<
voidf2(intx){cout<<"f2functionofderive"<
voidf4(){cout<<"f4functionofderive"<
voidmain()
{ base*p;
deriveobj2;
/**********found**********/
p=obj2;
p->f1();
p->f2();
p->f4(); }
【參考答案】
(1)將void f1(){ cout<<"f1 function of base"<
改為:virtual void f1(){ cout<<"f1 function of base"<
(2)將class derive::public base
改為:class derive:public base
(3)將p=obj2;
改為:p=&obj2;
【試題解析】
(1)主要考查對(duì)虛函數(shù)的深刻理解,虛函數(shù)是動(dòng)態(tài)聯(lián)編的基礎(chǔ),也是實(shí)現(xiàn)多態(tài)性的重要方法,它可以根據(jù)不同的情況動(dòng)態(tài)的選擇執(zhí)行哪一個(gè)函數(shù)。在派生類中實(shí)現(xiàn)虛函數(shù)應(yīng)該滿足與基類的同名函數(shù)完全相同,并且使用關(guān)鍵字virtual修飾,本題中由輸出結(jié)果中的f1 function of derive可知,必須將基類base的成員函數(shù)f1()定義為虛函數(shù);
(2)主要考查對(duì)派生類定義格式的掌握,應(yīng)該使用“:”后面是繼承列表,而“::”是作用域符;
(3)主要考查類對(duì)象的定義與使用,p是一個(gè)指針類型的變量,給它的賦值應(yīng)該是一個(gè)地址,即使用取地址操作符&。
二、簡(jiǎn)單應(yīng)用題
已知考生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名考生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:找出成績(jī)最低的考生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給予出函數(shù)的首部,請(qǐng)完成該函數(shù)。
注意:部分源程序已存在文件kt8_2.cpp中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
文件kt8_2.cpp的內(nèi)容如下:
#include #include #include #defineN10
typedefstructss
{charnum[10];
ints;
}STU;
voidfun(STUa[],STU*s)
{
}
voidmain()
{STU
a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
fun(a,&m);
cout<<"*****Theoriginaldate*****"<
cout<<"Thelowest:"<
【參考答案】
fun(STU a[],STU *s)
{int i, min;
min=a[0].s;
for(i=0;i
if(a[i].s
{min=a[i].s;
*s=a[i];}}
【試題解析】
解題思路為:先假設(shè)第一個(gè)考生的成績(jī),通過循環(huán)找到最低成績(jī),并將最低成績(jī)的考生記錄傳給指針s,帶回主函數(shù)。
三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt8_3,此工程包含一個(gè)源程序文件kt8_3.cpp,該文件設(shè)計(jì)了用于輸出乘法九九表的類。請(qǐng)認(rèn)真閱讀已有的代碼,按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類Table的私有數(shù)據(jù)成員x和y,分別用于表示九九表中的兩個(gè)乘數(shù)(x*y),它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句;
(2)完成類Table的成員函數(shù)print()的定義,該函數(shù)以"x*y=z"的格式打印出九九表中的一個(gè)乘法算式,請(qǐng)使用格式化輸出函數(shù)printf實(shí)現(xiàn),在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句;
(3)完成類Table9的成員函數(shù)print()的定義,該函數(shù)調(diào)用基類Table的print()函數(shù),將九九表輸出到屏幕,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句;
(4)補(bǔ)充主函數(shù),在屏幕上輸出九九表,以便測(cè)試所定義的類的正確性。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件kt8_3.cpp清單如下:
#include #include classTable
{//**1**
intz;
public:
voidprint(intx,inty,intz);};
voidTable::print(intx,inty,intz)
{//**2**}
classTable9:publicTable
{public:
voidprint();};
voidTable9::print()
{//**3**
intx,y,z;
for(i=1;i<10;i++)
{for(j=1;j
{x=i;
y=j;
z=i*j;
Table::print(y,x,z);}
printf("\n");}}
main()
{//**4**
return0;}
【參考答案】
(1)int x;
int y;
(2)printf( "%d*%d=%d ",x,y,z);
if(z<10) printf(" ");
(3)int i,j;
(4)Table9 t_9;
t_9.print();
【試題解析】
主要考查將具體問題抽象為類,將類的定義補(bǔ)充完整,并進(jìn)行類定義測(cè)試的能力。