為大家收集整理了《2014計算機(jī)二級C++模擬試題及答案》供大家參考,希望對大家有所幫助?。?!
一、選擇題(每小題1分,共40分)1假定int類型變量占用兩個字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。 題庫A. 3B. 6C. 10D. 20
本題共1分,參考答案:D解析:x數(shù)組共有10個元素,在花括號內(nèi)只提供3個初值,這表示只給前面的3個成員賦值,后7個元素的值為0,所以,一共有20個字節(jié)。
由關(guān)系R通過運算得到關(guān)系s,則所使用的運算為( )。 題庫A. 選擇B. 投影C. 插入D. 連接
本題共1分,參考答案:B解析:投影運算是指對于關(guān)系內(nèi)的域指定可引入新的運算。本題中s是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B。
3對于循環(huán)隊列,下列敘述中正確的是( )。 題庫A. 隊頭指針是固定不變的B. 隊頭指針一定大于隊尾指針C. 隊頭指針一定小于隊尾指針D. 隊頭指針可以大于隊尾指針,也可以小于隊尾指針
本題共1分,參考答案:D解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進(jìn)行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。
4下列有關(guān)函數(shù)重載的敘述中,錯誤的是( )。 題庫A. 函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B. 重載函數(shù)的參數(shù)列表必須不同C. 重載函數(shù)的返回值類型必須不同D. 重載函數(shù)的參數(shù)可以帶有默認(rèn)值
本題共1分,參考答案:C解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應(yīng)著一個函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個數(shù)不 同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個數(shù)和類型相同的重載。所以本題答案為c。
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 并C. 交D. 差
本題共1分,參考答案:D解析:關(guān)系T中的元組是關(guān)系R中有而關(guān)系s中沒有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差的運算。
6下面關(guān)于類和對象的描述中,錯誤的是( )。 題庫A. 類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量B. 類和對象之間的關(guān)系是抽象和具體的關(guān)系C. 對象是類的實例,一個對象必須屬于一個已知的類D. 類是具有共同行為的若干對象的統(tǒng)一描述體
本題共1分,參考答案:A解析:在c++語言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。
7有如下程序:
#inClude using namespaCe std; Class test{
private: int a;
publiC:
test( ){Cout<<”ConstruCtor”<<<< test(int>
test(Const test&_test){ a=test.a:
Cout<<”Copy ConstruCtor”<<>
test( ){Cout<<”destruCtor”<< p>
};
int main( ){ test A(3); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。題庫A. 3B. ConstruCtor
destruCtorC. Copy ConstruCtor
destruCtorD. 3
destruCtor
本題共1分,參考答案:D解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù),本題中定義了一個對象A(3),對象帶著參數(shù),所以執(zhí)行帶參數(shù)的構(gòu)造函數(shù).輸出3,然后執(zhí)行析構(gòu)溺數(shù),輸出destructor。所以本題答案為D。
8有如下函數(shù)模板:
template
T east(U u)i return u;}
其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是( )。 題庫A. cast(i);B. cast<>(i);C. east(i);D. east(i);
本題共1分,參考答案:D解析:本題考查函數(shù)模板的基本運用,屬于基礎(chǔ)知識。函數(shù)模板實際上是建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認(rèn)參數(shù),這樣在調(diào)用模板函數(shù)時就可以省略實參,函數(shù)模板的實例就是一個函數(shù)的定義。所以本題答案為D。
9下面程序的運行結(jié)果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout<<<< p>
}題庫A. 12 12B. 12 21C. 21 12D. 21 21
本題共1分,參考答案:D解析:本題考查的是指針和引用,函數(shù)fun完成把x和Y互換的操作。
10在C++語言中,打開一個文件就是將這個文件與一個( )建立關(guān)聯(lián)。 題庫A. 流B. 類C. 結(jié)構(gòu)D. 對象
本題共1分,參考答案:A解析:c++的V0系統(tǒng)是通過一一種稱為流的機(jī)制來實現(xiàn)文件和控制臺的I/0操作的。簡單地說,在C++中,輸入/輸出操作是通過流來完成的。而文件流以磁盤文件及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入/輸出對象。每個文件流都應(yīng)當(dāng)與一個打開的文件相聯(lián)系;關(guān)閉卟文件就是取消這種聯(lián)系?!?BR> 11下列語句中,錯誤的是( )。 題庫A. const int buffer:256;B. const int temp;C. const double*point;D. const double*rt=new double(5.5);
本題共1分,參考答案:B解析:eonst是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化:,B選項中沒有初始化,C選項為指向常量的指針,定義時初始化與否均可,如果是const*double point形式,則為常指針,必須在定義時進(jìn)行初始化,A、c、D都正確。
12下列程序的輸出結(jié)果為( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa<< p>
}題庫A. helloB. theC. worldD. hellotheworld
本題共1分,參考答案:B解析:本題主要考查的是指針數(shù)組和指向指針的指針之間的關(guān)系,其中a是指針數(shù)組,pa是指向指針數(shù)組行的指針,所以pa自加l相當(dāng)于指向下一行。
13關(guān)于運算符重載,下列表述中正確的是( )。 題庫A. C++已有的任何運算符都可以重載B. 運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C. 在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D. 可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自已定義新的運算符,只能對已有的c++運算符進(jìn)行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用.至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。
14可以用P.a的形式訪問派生類對象P的基類成員a,其中a是( )。 題庫A. 私有繼承的公有成員B. 公有繼承的私有成員C. 公有繼承的保護(hù)成員D. 公有繼承的公有成員
本題共1分,參考答案:D解析:只有公有繼承的公有成員才能被派生類的對象直接訪問,其他的情況都會因為訪問權(quán)限問題產(chǎn)生錯誤。
15在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是( )。 題庫A. void fl(int X);B. void t2(int*X);C. void f3(Const int*X);D. void f4(int&x);
本題共1分,參考答案:A解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。其中B、C選項都是傳遞變量指針,D選項為引用形參,所以本題答案為A。
16以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是( )。 題庫A. publicB. staticC. protectedD. private
本題共1分,參考答案:B解析:類的成員訪問權(quán)限有3種:public(公用)、protected(保護(hù))、private(私有)。
17下面程序的運行結(jié)果為( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout(<>
void main()
A a(1),b(A.; a.print();
A print();題庫A. 11B. 12C. 21D. 22
本題共1分,參考答案:C解析:本題考查考生對拷貝構(gòu)造函數(shù)的掌握。因為++運算是右結(jié)合的,所以在使用a對b賦值時,b的nnm變?yōu)?,而a的nnm變?yōu)?(先賦值再自加)。
18下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是( )。 題庫A. Fraction operator+(Fraction,F(xiàn)raction);B. Fraction operator一(Fraction);C. Fraction&operator=(Fraction&,F(xiàn)raction);D. Fraction&operator+=(Fraction&,F(xiàn)raction);
本題共1分,參考答案:C解析:本題考查四種運算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為c,c項正確原型為:Fraction operator=(Fraction&)。
19下列語句中錯誤的是( )。 題庫A. Const int a;B. Const int a=10;C. Const int * point=0;D. Const int * point=new int(10);
本題共1分,參考答案:A解析:const是一個c++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量照能被讀,必須初始化。A選項沒有初始化,B、C、D選項都正確。
20下列關(guān)于函數(shù)的描述中,錯誤的是( )。 題庫A. 函數(shù)可以沒有返回值B. 函數(shù)可以沒有參數(shù)C. 函數(shù)可以是一個類的成員D. 函數(shù)不能被定義為模板
本題共1分,參考答案:D解析:本題考查函數(shù)的基礎(chǔ)知識,函數(shù)可以沒有返回值,沒有參數(shù),也可以是一個類的成員,函數(shù)可以定義為模板,即模板函數(shù)。
21下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。 題庫A. cout<<<12345;B. p 公開我的筆記22有三個關(guān)系R、S和T如下:< 150提交 糾錯收藏我要提問參考答案:D解析:本題考查控制輸出格式,A、B、c選項都會輸出“12345”,只有D選項輸出“12345”,所以本題答案為D。我的筆記查看網(wǎng)友筆記》支持大字?jǐn)?shù):0 cout<<<12345;本題共1分,您的得分 cout<<<12345;D. eout<<<12345;C.>
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 差C. 交D. 并
本題共1分,參考答案:B解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<<< p>
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 題庫A. 53B. 35C. 55D. 33
本題共1分,參考答案:A解析:本題考查常對象及常成員函數(shù)及構(gòu)造函數(shù),常塒象只能凋用常成員函數(shù),所以本題中,對象v1為普通對象,執(zhí)行v1.f()后,會執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對象v2為常列象,執(zhí)行v2.f()后,會執(zhí)行常構(gòu)造函數(shù),輸出3。
24一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( )。題庫A. 一對一B. 一對多C. 多對一D. 多對多
本題共1分,參考答案:B解析:因為一間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)生只能住一間宿舍,所以實體宿舍和學(xué)生之間是一對多的關(guān)系。
25下列關(guān)于二叉樹的敘述中,正確的是( )。 題庫A. 葉子結(jié)點總是比度為2的結(jié)點少一個B. 葉子結(jié)點總是比度為2的結(jié)點多一個C. 葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D. 度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
本題共1分,參考答案:B解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。
26有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a; 題庫A. a[P-a]B. *(&a[i])C. P[i]D. *(*(a+i))
本題共1分,參考答案:D解析:選項D第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
27下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout<<< p>
}
void main()
{
print(1.2);
eout<<””:
print(3,4);
}題庫A. 1.2 34B. 2.2 34C. 1.2 43D. 2.2 43
本題共1分,參考答案:D解析:本題考查的是對重載函數(shù)的掌握,因為
++a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。
28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。 題庫A. x=*pa;B. x=*(a+1);C. x=*(pa+l)D. x=a[1];
本題共1分,參考答案:A解析:本題考查的是數(shù)組和指向數(shù)組的指針之問的關(guān)系,選項A中x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦值。
29下列敘述中正確的是( )。題庫A. 循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B. 在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C. 在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D. 循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
本題共1分,參考答案:D解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A錯誤;在循環(huán)隊列中需要隊頭指針與隊尾指針來共同反映隊列中元素的動態(tài)變化情況,所以B與C錯誤。
30通??截悩?gòu)造函數(shù)的參數(shù)是( )。 題庫A. 某個對象名B. 某個對象的成員名C. 某個對象的引用名D. 某個對象的指針名
本題共1分,參考答案:C解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個已知的對象來初始化一個被創(chuàng)建的同類的對象,該函數(shù)只有一個參數(shù),并且是對同類的某個對象的引用。
21下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。 題庫A. cout<<<12345;B. p 公開我的筆記22有三個關(guān)系R、S和T如下:< 150提交 糾錯收藏我要提問參考答案:D解析:本題考查控制輸出格式,A、B、c選項都會輸出“12345”,只有D選項輸出“12345”,所以本題答案為D。我的筆記查看網(wǎng)友筆記》支持大字?jǐn)?shù):0 cout<<<12345;本題共1分,您的得分 cout<<<12345;D. eout<<<12345;C.>
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 差C. 交D. 并
本題共1分,參考答案:B解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<<< p>
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 題庫A. 53B. 35C. 55D. 33
本題共1分,參考答案:A解析:本題考查常對象及常成員函數(shù)及構(gòu)造函數(shù),常塒象只能凋用常成員函數(shù),所以本題中,對象v1為普通對象,執(zhí)行v1.f()后,會執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對象v2為常列象,執(zhí)行v2.f()后,會執(zhí)行常構(gòu)造函數(shù),輸出3。
24一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( )。題庫A. 一對一B. 一對多C. 多對一D. 多對多
本題共1分,參考答案:B解析:因為一間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)生只能住一間宿舍,所以實體宿舍和學(xué)生之間是一對多的關(guān)系。
25下列關(guān)于二叉樹的敘述中,正確的是( )。 題庫A. 葉子結(jié)點總是比度為2的結(jié)點少一個B. 葉子結(jié)點總是比度為2的結(jié)點多一個C. 葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D. 度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
本題共1分,參考答案:B解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。
26有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a; 題庫A. a[P-a]B. *(&a[i])C. P[i]D. *(*(a+i))
本題共1分,參考答案:D解析:選項D第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
27下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout<<< p>
}
void main()
{
print(1.2);
eout<<””:
print(3,4);
}題庫A. 1.2 34B. 2.2 34C. 1.2 43D. 2.2 43
本題共1分,參考答案:D解析:本題考查的是對重載函數(shù)的掌握,因為
++a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。
28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。 題庫A. x=*pa;B. x=*(a+1);C. x=*(pa+l)D. x=a[1];
本題共1分,參考答案:A解析:本題考查的是數(shù)組和指向數(shù)組的指針之問的關(guān)系,選項A中x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦值。
29下列敘述中正確的是( )。題庫A. 循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B. 在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C. 在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D. 循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
本題共1分,參考答案:D解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A錯誤;在循環(huán)隊列中需要隊頭指針與隊尾指針來共同反映隊列中元素的動態(tài)變化情況,所以B與C錯誤。
30通??截悩?gòu)造函數(shù)的參數(shù)是( )。 題庫A. 某個對象名B. 某個對象的成員名C. 某個對象的引用名D. 某個對象的指針名
本題共1分,參考答案:C解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個已知的對象來初始化一個被創(chuàng)建的同類的對象,該函數(shù)只有一個參數(shù),并且是對同類的某個對象的引用。
31如果在表達(dá)式++x/y中,“++”是作為友元函數(shù)重載的,…/”是作為成員函數(shù)重載的,則該表達(dá)式還可為( )。題庫A. (operator++(x)).operator/(Y)B. (operator++(0)).operator/(Y)C. operator/((operator++(x,0)),Y)D. operator/((operator++(0)),Y)
本題共1分,參考答案:A解析:c++中用成員函數(shù)重載++X為:x.oper-ator++(),用友元函數(shù)重載++x為:0perator++(x),用成員函數(shù)重載x/y為:x.operator/(Y),用友元函數(shù)重載x/y為:operator/(X,Y)。
32一個函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。 題庫A. 內(nèi)聯(lián)函數(shù)B. 重載函數(shù)C. 遞歸函數(shù)D. 嵌套函數(shù)
本題共1分,參考答案:A解析:本題考查的是內(nèi)聯(lián)函數(shù)的使用,它的引入是為了,解決程序中函數(shù)調(diào)用的效率問題,在編譯時,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來替換。
33數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是( )。 題庫A. 數(shù)據(jù)庫設(shè)計B. 數(shù)據(jù)庫系統(tǒng)設(shè)計C. 數(shù)據(jù)庫維護(hù)D. 數(shù)據(jù)庫管理員培訓(xùn)
本題共1分,參考答案:A解析:數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計。
34有如下程序: Class Base{ publiC:
int data; };
Class Derivedl:publiC Base{};
Class Derived2:proteCted Base{};
int main( ) {
Derivedl dl; Derived2 d2; dl.data=0;//①
d2.data=0;//② retum 0;
}
下列關(guān)于程序編譯結(jié)果的描述中,正確的是( )。 題庫A. ①②皆無編譯錯誤B. ①有編譯錯誤,②無編譯錯誤C. ①無編譯錯誤,②有編譯錯誤D. ①②皆有編譯錯誤
本題共1分,參考答案:C解析:本題考查公用繼承和保護(hù)繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在 派生類中保持原有訪問屬性,其私有成員仍為基類私有、稿.受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有。本題中Derived1公用繼承Base.所以①編譯正確,Derived2保護(hù)繼承Base,所以②編譯不 正確。
35下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是( )。 題庫A. 每個類多只能有一個直接基類B. 派生類中的成員可以訪問基類中的任何成員C. 基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用D. 派生類除了繼承基類的成員,還可以定義新的成員
本題共1分,參考答案:D解析:本題考查派生類與基類的關(guān)系,派生類可以有多個直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問基類的成員。如果基類中定義了缺省構(gòu)造函數(shù)或根本沒有定義任何一一個構(gòu)造函數(shù)時,在派生類構(gòu)造函數(shù)的定義中可以省略對基類構(gòu)造函數(shù)的調(diào)用。所以本題答案為D。
36結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。 題庫A. 順序結(jié)構(gòu)B. GOT0跳轉(zhuǎn)C. 選擇(分支)結(jié)構(gòu)D. 重復(fù)(循環(huán))結(jié)構(gòu)
本題共1分,參考答案:B解析:1966年Boehm和Jacopini證明了程序沒計語言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。
37將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為( )。題庫A. 屬性B. 鍵C. 關(guān)系D. 域
本題共1分,參考答案:C解析:從E—R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E—R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。
38下面是一個模板聲明的開始部分:
templatedouble…由此可知( )。 題庫A. 這可能是一個函數(shù)模板的聲明B. 這可能是一個類模板的聲明C. 這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明D. 這肯定是一個錯誤的模板聲明
本題共1分,參考答案:A解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,從templatedouble這里就可以看出這是·個函數(shù)模板的聲明。
39有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n;
void setK(int k){this一>k=k;}
public:
void setN(int n){this一>n=n;}
};
class BB:public AA{/*類體略*" >;
int main()
}
BB X;
A n=1;//1
B setN(2);//2
C k=3;//3
D setK(4);//4
return 0;
}
在標(biāo)注號碼的四條語句中正確的是( )。題庫A. 1B. 2C. 3D. 4
本題共1分,參考答案:B解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯誤,所以B選項正確。
40有如下頭文件:
int fl();
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函數(shù)中,具有隱含的this指針的是( )。 題庫A. flB. f2C. f3D. f4
本題共1分,參考答案:C解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針。其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。
二、基本操作題(18分)41請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found ****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:
打開503號門…門是鎖著的,打不開。
打開503號門的鎖…鎖開了。
打開503號門…門打開了。
打開503號門…門是開著的,無須再開門。
鎖上503號門…先關(guān)門...門鎖上了。
注意:只修改每個“//ERROR***********found **********”下的那一行,不要改動程序中的其他內(nèi)容。
#include
using namespace std;
class Door{
int Bum;//門號
bool closed;//true表示門關(guān)著
bool locked://true表示門鎖著
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//門關(guān)著時返回true,否則返回false
bool isOpened()const{return!closed;}
//門開著時返回true,否則返回false
b001 isLocked()const{retum locked;}
//門鎖著時返回true,否則返回false
bool isUnlocked()const{return!locked;}
//門未鎖時返回true,否則返回false
void open(){ //開門
cout<<<<< p>
//ERROR***********found***********
if(closed)
cout<<”門是開著的,無須再開門?!?
else if(10cked)
cout<<”門是鎖著的,打不開?!?
else{
closed=false;
eout<<”門打開了?!?
}
}
void close(){//關(guān)門
cout<<<<< p>
if(closed)
cout<<”門是關(guān)著的,無須再關(guān)門。”;
else{
closed=true;
cout<<”門關(guān)上了.";
}
}
//ERROR************found************
void lock()const{//鎖門
cout<<<<< p>
if(locked)
cout<<”門是鎖著的,無須再鎖門。”;
else{
if(!closed){
cout<<”先關(guān)門...”;
closed=true;
}
locked=true:
cout<<”門鎖上了?!?
}
}
wild unlock(){//開鎖
cout<<<<< p>
if(!locked)
cout<<”門沒有上鎖,無須再開鎖?!?
else{
locked=false;
cout<<”鎖開了?!?
}
};
int main(){
Door door(503);
door.open();
door.unlock();
door.open();
door.open();
floor.10ck();
return 0;
}
本題共18分,參考答案:(1)this—>num=num;
(2)if(!closed)
(3)void lock()
三、簡單應(yīng)用題(24分)42請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。 #include
{tout<<——<< w,int CRe&angle(int CPolygon{ CRectangle:public>
int area(void){return(width *height);}
class CTriangle:public CPolygon{
int length;//三角形一邊長 int height;//該邊上的高
public:
CTriangle(int l,int h):length(1),height(h){}
//*********found*********
int area(void){return(——)/2;}
};
int main(){
CRectangle rect(4,5); CTriangle trgl(4,5);
//*********found********* ______ *ppolyl,* ppoly2; ppolyl=▭
ppoly2=&trgl;
ppolyl->printarea(); ppoly2->printarea(); retun 0;
本題共24分,參考答案:(1)virtual int area(void)=0;
(2)area()
(3)length*height
(4)CPolygon
四、綜合應(yīng)用題(18分)43請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。s0rt成員函數(shù)的功能是將當(dāng)前數(shù)據(jù)表中的元素升序排列。請編寫這個sort函數(shù)。程序的正確輸出應(yīng)為: .
排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12
要求:
補充編制的內(nèi)容寫在“//********33********”與“//********666********”兩行之問。不得修
改程序的其他部分。
注意:程序后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。obj文件,并且在本程序
調(diào)用。
//DataList.h
#inClude using namespaCe std; Class DataList{//數(shù)據(jù)表類
int len;
double*d: publiC:
DataList(int len,double data[]=NULL);。DataList(){delete[]d;}
int length(Constt retum len;}//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個數(shù)) double getElement(int i)Const{return d[i];}
void sort();//數(shù)據(jù)表排序
void show()Const;//顯示數(shù)據(jù)表}.
void writeToFile(Char*,Const DataList&).//main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(1en){ d=new double[1en];
for(int i_0;i< p>
d[i]=(data==NULL?0.0:data[i]);
}
void DataList::sort(){//數(shù)據(jù)表排序//********333********
//********666********}
void DataList::show()Const{//顯示數(shù)據(jù)表
for(int i=0;i<<<<<>
}
int main(){
double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S);
Cout<<”排序前:”; list.show();
list.sort();
Cout<<<>
writeToFile(””,list); return 0;
參考答案:for(inti=0;i<>
for(int j=i;j< p>
//從i+1處遍歷數(shù)組d
if(d[i]>d[j])
//d[j]和d[j]比較人,如果大于,就d[i]和d[j]值交換
{
inttemp=d[i];
//把臨時整型變量temp賦值為cJ[i]
d[i]=d[j];//把d[j]賦值給d[i]
d[j]=temp;//把temp值賦給d[j]
}
一、選擇題(每小題1分,共40分)1假定int類型變量占用兩個字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。 題庫A. 3B. 6C. 10D. 20
本題共1分,參考答案:D解析:x數(shù)組共有10個元素,在花括號內(nèi)只提供3個初值,這表示只給前面的3個成員賦值,后7個元素的值為0,所以,一共有20個字節(jié)。
由關(guān)系R通過運算得到關(guān)系s,則所使用的運算為( )。 題庫A. 選擇B. 投影C. 插入D. 連接
本題共1分,參考答案:B解析:投影運算是指對于關(guān)系內(nèi)的域指定可引入新的運算。本題中s是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B。
3對于循環(huán)隊列,下列敘述中正確的是( )。 題庫A. 隊頭指針是固定不變的B. 隊頭指針一定大于隊尾指針C. 隊頭指針一定小于隊尾指針D. 隊頭指針可以大于隊尾指針,也可以小于隊尾指針
本題共1分,參考答案:D解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進(jìn)行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。
4下列有關(guān)函數(shù)重載的敘述中,錯誤的是( )。 題庫A. 函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B. 重載函數(shù)的參數(shù)列表必須不同C. 重載函數(shù)的返回值類型必須不同D. 重載函數(shù)的參數(shù)可以帶有默認(rèn)值
本題共1分,參考答案:C解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應(yīng)著一個函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個數(shù)不 同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個數(shù)和類型相同的重載。所以本題答案為c。
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 并C. 交D. 差
本題共1分,參考答案:D解析:關(guān)系T中的元組是關(guān)系R中有而關(guān)系s中沒有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差的運算。
6下面關(guān)于類和對象的描述中,錯誤的是( )。 題庫A. 類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量B. 類和對象之間的關(guān)系是抽象和具體的關(guān)系C. 對象是類的實例,一個對象必須屬于一個已知的類D. 類是具有共同行為的若干對象的統(tǒng)一描述體
本題共1分,參考答案:A解析:在c++語言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。
7有如下程序:
#inClude using namespaCe std; Class test{
private: int a;
publiC:
test( ){Cout<<”ConstruCtor”<<<< test(int>
test(Const test&_test){ a=test.a:
Cout<<”Copy ConstruCtor”<<>
test( ){Cout<<”destruCtor”<< p>
};
int main( ){ test A(3); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。題庫A. 3B. ConstruCtor
destruCtorC. Copy ConstruCtor
destruCtorD. 3
destruCtor
本題共1分,參考答案:D解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù),本題中定義了一個對象A(3),對象帶著參數(shù),所以執(zhí)行帶參數(shù)的構(gòu)造函數(shù).輸出3,然后執(zhí)行析構(gòu)溺數(shù),輸出destructor。所以本題答案為D。
8有如下函數(shù)模板:
template
T east(U u)i return u;}
其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是( )。 題庫A. cast(i);B. cast<>(i);C. east(i);D. east(i);
本題共1分,參考答案:D解析:本題考查函數(shù)模板的基本運用,屬于基礎(chǔ)知識。函數(shù)模板實際上是建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認(rèn)參數(shù),這樣在調(diào)用模板函數(shù)時就可以省略實參,函數(shù)模板的實例就是一個函數(shù)的定義。所以本題答案為D。
9下面程序的運行結(jié)果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout<<<< p>
}題庫A. 12 12B. 12 21C. 21 12D. 21 21
本題共1分,參考答案:D解析:本題考查的是指針和引用,函數(shù)fun完成把x和Y互換的操作。
10在C++語言中,打開一個文件就是將這個文件與一個( )建立關(guān)聯(lián)。 題庫A. 流B. 類C. 結(jié)構(gòu)D. 對象
本題共1分,參考答案:A解析:c++的V0系統(tǒng)是通過一一種稱為流的機(jī)制來實現(xiàn)文件和控制臺的I/0操作的。簡單地說,在C++中,輸入/輸出操作是通過流來完成的。而文件流以磁盤文件及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入/輸出對象。每個文件流都應(yīng)當(dāng)與一個打開的文件相聯(lián)系;關(guān)閉卟文件就是取消這種聯(lián)系?!?BR> 11下列語句中,錯誤的是( )。 題庫A. const int buffer:256;B. const int temp;C. const double*point;D. const double*rt=new double(5.5);
本題共1分,參考答案:B解析:eonst是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化:,B選項中沒有初始化,C選項為指向常量的指針,定義時初始化與否均可,如果是const*double point形式,則為常指針,必須在定義時進(jìn)行初始化,A、c、D都正確。
12下列程序的輸出結(jié)果為( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa<< p>
}題庫A. helloB. theC. worldD. hellotheworld
本題共1分,參考答案:B解析:本題主要考查的是指針數(shù)組和指向指針的指針之間的關(guān)系,其中a是指針數(shù)組,pa是指向指針數(shù)組行的指針,所以pa自加l相當(dāng)于指向下一行。
13關(guān)于運算符重載,下列表述中正確的是( )。 題庫A. C++已有的任何運算符都可以重載B. 運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C. 在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D. 可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自已定義新的運算符,只能對已有的c++運算符進(jìn)行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用.至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。
14可以用P.a的形式訪問派生類對象P的基類成員a,其中a是( )。 題庫A. 私有繼承的公有成員B. 公有繼承的私有成員C. 公有繼承的保護(hù)成員D. 公有繼承的公有成員
本題共1分,參考答案:D解析:只有公有繼承的公有成員才能被派生類的對象直接訪問,其他的情況都會因為訪問權(quán)限問題產(chǎn)生錯誤。
15在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是( )。 題庫A. void fl(int X);B. void t2(int*X);C. void f3(Const int*X);D. void f4(int&x);
本題共1分,參考答案:A解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。其中B、C選項都是傳遞變量指針,D選項為引用形參,所以本題答案為A。
16以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是( )。 題庫A. publicB. staticC. protectedD. private
本題共1分,參考答案:B解析:類的成員訪問權(quán)限有3種:public(公用)、protected(保護(hù))、private(私有)。
17下面程序的運行結(jié)果為( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout(<>
void main()
A a(1),b(A.; a.print();
A print();題庫A. 11B. 12C. 21D. 22
本題共1分,參考答案:C解析:本題考查考生對拷貝構(gòu)造函數(shù)的掌握。因為++運算是右結(jié)合的,所以在使用a對b賦值時,b的nnm變?yōu)?,而a的nnm變?yōu)?(先賦值再自加)。
18下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是( )。 題庫A. Fraction operator+(Fraction,F(xiàn)raction);B. Fraction operator一(Fraction);C. Fraction&operator=(Fraction&,F(xiàn)raction);D. Fraction&operator+=(Fraction&,F(xiàn)raction);
本題共1分,參考答案:C解析:本題考查四種運算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為c,c項正確原型為:Fraction operator=(Fraction&)。
19下列語句中錯誤的是( )。 題庫A. Const int a;B. Const int a=10;C. Const int * point=0;D. Const int * point=new int(10);
本題共1分,參考答案:A解析:const是一個c++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量照能被讀,必須初始化。A選項沒有初始化,B、C、D選項都正確。
20下列關(guān)于函數(shù)的描述中,錯誤的是( )。 題庫A. 函數(shù)可以沒有返回值B. 函數(shù)可以沒有參數(shù)C. 函數(shù)可以是一個類的成員D. 函數(shù)不能被定義為模板
本題共1分,參考答案:D解析:本題考查函數(shù)的基礎(chǔ)知識,函數(shù)可以沒有返回值,沒有參數(shù),也可以是一個類的成員,函數(shù)可以定義為模板,即模板函數(shù)。
21下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。 題庫A. cout<<<12345;B. p 公開我的筆記22有三個關(guān)系R、S和T如下:< 150提交 糾錯收藏我要提問參考答案:D解析:本題考查控制輸出格式,A、B、c選項都會輸出“12345”,只有D選項輸出“12345”,所以本題答案為D。我的筆記查看網(wǎng)友筆記》支持大字?jǐn)?shù):0 cout<<<12345;本題共1分,您的得分 cout<<<12345;D. eout<<<12345;C.>
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 差C. 交D. 并
本題共1分,參考答案:B解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<<< p>
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 題庫A. 53B. 35C. 55D. 33
本題共1分,參考答案:A解析:本題考查常對象及常成員函數(shù)及構(gòu)造函數(shù),常塒象只能凋用常成員函數(shù),所以本題中,對象v1為普通對象,執(zhí)行v1.f()后,會執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對象v2為常列象,執(zhí)行v2.f()后,會執(zhí)行常構(gòu)造函數(shù),輸出3。
24一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( )。題庫A. 一對一B. 一對多C. 多對一D. 多對多
本題共1分,參考答案:B解析:因為一間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)生只能住一間宿舍,所以實體宿舍和學(xué)生之間是一對多的關(guān)系。
25下列關(guān)于二叉樹的敘述中,正確的是( )。 題庫A. 葉子結(jié)點總是比度為2的結(jié)點少一個B. 葉子結(jié)點總是比度為2的結(jié)點多一個C. 葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D. 度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
本題共1分,參考答案:B解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。
26有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a; 題庫A. a[P-a]B. *(&a[i])C. P[i]D. *(*(a+i))
本題共1分,參考答案:D解析:選項D第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
27下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout<<< p>
}
void main()
{
print(1.2);
eout<<””:
print(3,4);
}題庫A. 1.2 34B. 2.2 34C. 1.2 43D. 2.2 43
本題共1分,參考答案:D解析:本題考查的是對重載函數(shù)的掌握,因為
++a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。
28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。 題庫A. x=*pa;B. x=*(a+1);C. x=*(pa+l)D. x=a[1];
本題共1分,參考答案:A解析:本題考查的是數(shù)組和指向數(shù)組的指針之問的關(guān)系,選項A中x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦值。
29下列敘述中正確的是( )。題庫A. 循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B. 在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C. 在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D. 循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
本題共1分,參考答案:D解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A錯誤;在循環(huán)隊列中需要隊頭指針與隊尾指針來共同反映隊列中元素的動態(tài)變化情況,所以B與C錯誤。
30通??截悩?gòu)造函數(shù)的參數(shù)是( )。 題庫A. 某個對象名B. 某個對象的成員名C. 某個對象的引用名D. 某個對象的指針名
本題共1分,參考答案:C解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個已知的對象來初始化一個被創(chuàng)建的同類的對象,該函數(shù)只有一個參數(shù),并且是對同類的某個對象的引用。
21下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。 題庫A. cout<<<12345;B. p 公開我的筆記22有三個關(guān)系R、S和T如下:< 150提交 糾錯收藏我要提問參考答案:D解析:本題考查控制輸出格式,A、B、c選項都會輸出“12345”,只有D選項輸出“12345”,所以本題答案為D。我的筆記查看網(wǎng)友筆記》支持大字?jǐn)?shù):0 cout<<<12345;本題共1分,您的得分 cout<<<12345;D. eout<<<12345;C.>
則由關(guān)系R和S得到關(guān)系T的操作是( )。 題庫A. 自然連接B. 差C. 交D. 并
本題共1分,參考答案:B解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<<< p>
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 題庫A. 53B. 35C. 55D. 33
本題共1分,參考答案:A解析:本題考查常對象及常成員函數(shù)及構(gòu)造函數(shù),常塒象只能凋用常成員函數(shù),所以本題中,對象v1為普通對象,執(zhí)行v1.f()后,會執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對象v2為常列象,執(zhí)行v2.f()后,會執(zhí)行常構(gòu)造函數(shù),輸出3。
24一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( )。題庫A. 一對一B. 一對多C. 多對一D. 多對多
本題共1分,參考答案:B解析:因為一間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)生只能住一間宿舍,所以實體宿舍和學(xué)生之間是一對多的關(guān)系。
25下列關(guān)于二叉樹的敘述中,正確的是( )。 題庫A. 葉子結(jié)點總是比度為2的結(jié)點少一個B. 葉子結(jié)點總是比度為2的結(jié)點多一個C. 葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D. 度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
本題共1分,參考答案:B解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。
26有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a; 題庫A. a[P-a]B. *(&a[i])C. P[i]D. *(*(a+i))
本題共1分,參考答案:D解析:選項D第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
27下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout<<< p>
}
void main()
{
print(1.2);
eout<<””:
print(3,4);
}題庫A. 1.2 34B. 2.2 34C. 1.2 43D. 2.2 43
本題共1分,參考答案:D解析:本題考查的是對重載函數(shù)的掌握,因為
++a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。
28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。 題庫A. x=*pa;B. x=*(a+1);C. x=*(pa+l)D. x=a[1];
本題共1分,參考答案:A解析:本題考查的是數(shù)組和指向數(shù)組的指針之問的關(guān)系,選項A中x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦值。
29下列敘述中正確的是( )。題庫A. 循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B. 在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C. 在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D. 循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
本題共1分,參考答案:D解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A錯誤;在循環(huán)隊列中需要隊頭指針與隊尾指針來共同反映隊列中元素的動態(tài)變化情況,所以B與C錯誤。
30通??截悩?gòu)造函數(shù)的參數(shù)是( )。 題庫A. 某個對象名B. 某個對象的成員名C. 某個對象的引用名D. 某個對象的指針名
本題共1分,參考答案:C解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個已知的對象來初始化一個被創(chuàng)建的同類的對象,該函數(shù)只有一個參數(shù),并且是對同類的某個對象的引用。
31如果在表達(dá)式++x/y中,“++”是作為友元函數(shù)重載的,…/”是作為成員函數(shù)重載的,則該表達(dá)式還可為( )。題庫A. (operator++(x)).operator/(Y)B. (operator++(0)).operator/(Y)C. operator/((operator++(x,0)),Y)D. operator/((operator++(0)),Y)
本題共1分,參考答案:A解析:c++中用成員函數(shù)重載++X為:x.oper-ator++(),用友元函數(shù)重載++x為:0perator++(x),用成員函數(shù)重載x/y為:x.operator/(Y),用友元函數(shù)重載x/y為:operator/(X,Y)。
32一個函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。 題庫A. 內(nèi)聯(lián)函數(shù)B. 重載函數(shù)C. 遞歸函數(shù)D. 嵌套函數(shù)
本題共1分,參考答案:A解析:本題考查的是內(nèi)聯(lián)函數(shù)的使用,它的引入是為了,解決程序中函數(shù)調(diào)用的效率問題,在編譯時,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來替換。
33數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是( )。 題庫A. 數(shù)據(jù)庫設(shè)計B. 數(shù)據(jù)庫系統(tǒng)設(shè)計C. 數(shù)據(jù)庫維護(hù)D. 數(shù)據(jù)庫管理員培訓(xùn)
本題共1分,參考答案:A解析:數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計。
34有如下程序: Class Base{ publiC:
int data; };
Class Derivedl:publiC Base{};
Class Derived2:proteCted Base{};
int main( ) {
Derivedl dl; Derived2 d2; dl.data=0;//①
d2.data=0;//② retum 0;
}
下列關(guān)于程序編譯結(jié)果的描述中,正確的是( )。 題庫A. ①②皆無編譯錯誤B. ①有編譯錯誤,②無編譯錯誤C. ①無編譯錯誤,②有編譯錯誤D. ①②皆有編譯錯誤
本題共1分,參考答案:C解析:本題考查公用繼承和保護(hù)繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在 派生類中保持原有訪問屬性,其私有成員仍為基類私有、稿.受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有。本題中Derived1公用繼承Base.所以①編譯正確,Derived2保護(hù)繼承Base,所以②編譯不 正確。
35下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是( )。 題庫A. 每個類多只能有一個直接基類B. 派生類中的成員可以訪問基類中的任何成員C. 基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用D. 派生類除了繼承基類的成員,還可以定義新的成員
本題共1分,參考答案:D解析:本題考查派生類與基類的關(guān)系,派生類可以有多個直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問基類的成員。如果基類中定義了缺省構(gòu)造函數(shù)或根本沒有定義任何一一個構(gòu)造函數(shù)時,在派生類構(gòu)造函數(shù)的定義中可以省略對基類構(gòu)造函數(shù)的調(diào)用。所以本題答案為D。
36結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。 題庫A. 順序結(jié)構(gòu)B. GOT0跳轉(zhuǎn)C. 選擇(分支)結(jié)構(gòu)D. 重復(fù)(循環(huán))結(jié)構(gòu)
本題共1分,參考答案:B解析:1966年Boehm和Jacopini證明了程序沒計語言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。
37將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為( )。題庫A. 屬性B. 鍵C. 關(guān)系D. 域
本題共1分,參考答案:C解析:從E—R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E—R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。
38下面是一個模板聲明的開始部分:
templatedouble…由此可知( )。 題庫A. 這可能是一個函數(shù)模板的聲明B. 這可能是一個類模板的聲明C. 這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明D. 這肯定是一個錯誤的模板聲明
本題共1分,參考答案:A解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,從templatedouble這里就可以看出這是·個函數(shù)模板的聲明。
39有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n;
void setK(int k){this一>k=k;}
public:
void setN(int n){this一>n=n;}
};
class BB:public AA{/*類體略*" >;
int main()
}
BB X;
A n=1;//1
B setN(2);//2
C k=3;//3
D setK(4);//4
return 0;
}
在標(biāo)注號碼的四條語句中正確的是( )。題庫A. 1B. 2C. 3D. 4
本題共1分,參考答案:B解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯誤,所以B選項正確。
40有如下頭文件:
int fl();
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函數(shù)中,具有隱含的this指針的是( )。 題庫A. flB. f2C. f3D. f4
本題共1分,參考答案:C解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針。其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。
二、基本操作題(18分)41請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found ****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:
打開503號門…門是鎖著的,打不開。
打開503號門的鎖…鎖開了。
打開503號門…門打開了。
打開503號門…門是開著的,無須再開門。
鎖上503號門…先關(guān)門...門鎖上了。
注意:只修改每個“//ERROR***********found **********”下的那一行,不要改動程序中的其他內(nèi)容。
#include
using namespace std;
class Door{
int Bum;//門號
bool closed;//true表示門關(guān)著
bool locked://true表示門鎖著
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//門關(guān)著時返回true,否則返回false
bool isOpened()const{return!closed;}
//門開著時返回true,否則返回false
b001 isLocked()const{retum locked;}
//門鎖著時返回true,否則返回false
bool isUnlocked()const{return!locked;}
//門未鎖時返回true,否則返回false
void open(){ //開門
cout<<<<< p>
//ERROR***********found***********
if(closed)
cout<<”門是開著的,無須再開門?!?
else if(10cked)
cout<<”門是鎖著的,打不開?!?
else{
closed=false;
eout<<”門打開了?!?
}
}
void close(){//關(guān)門
cout<<<<< p>
if(closed)
cout<<”門是關(guān)著的,無須再關(guān)門。”;
else{
closed=true;
cout<<”門關(guān)上了.";
}
}
//ERROR************found************
void lock()const{//鎖門
cout<<<<< p>
if(locked)
cout<<”門是鎖著的,無須再鎖門。”;
else{
if(!closed){
cout<<”先關(guān)門...”;
closed=true;
}
locked=true:
cout<<”門鎖上了?!?
}
}
wild unlock(){//開鎖
cout<<<<< p>
if(!locked)
cout<<”門沒有上鎖,無須再開鎖?!?
else{
locked=false;
cout<<”鎖開了?!?
}
};
int main(){
Door door(503);
door.open();
door.unlock();
door.open();
door.open();
floor.10ck();
return 0;
}
本題共18分,參考答案:(1)this—>num=num;
(2)if(!closed)
(3)void lock()
三、簡單應(yīng)用題(24分)42請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。 #include
{tout<<——<< w,int CRe&angle(int CPolygon{ CRectangle:public>
int area(void){return(width *height);}
class CTriangle:public CPolygon{
int length;//三角形一邊長 int height;//該邊上的高
public:
CTriangle(int l,int h):length(1),height(h){}
//*********found*********
int area(void){return(——)/2;}
};
int main(){
CRectangle rect(4,5); CTriangle trgl(4,5);
//*********found********* ______ *ppolyl,* ppoly2; ppolyl=▭
ppoly2=&trgl;
ppolyl->printarea(); ppoly2->printarea(); retun 0;
本題共24分,參考答案:(1)virtual int area(void)=0;
(2)area()
(3)length*height
(4)CPolygon
四、綜合應(yīng)用題(18分)43請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。s0rt成員函數(shù)的功能是將當(dāng)前數(shù)據(jù)表中的元素升序排列。請編寫這個sort函數(shù)。程序的正確輸出應(yīng)為: .
排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12
要求:
補充編制的內(nèi)容寫在“//********33********”與“//********666********”兩行之問。不得修
改程序的其他部分。
注意:程序后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。obj文件,并且在本程序
調(diào)用。
//DataList.h
#inClude using namespaCe std; Class DataList{//數(shù)據(jù)表類
int len;
double*d: publiC:
DataList(int len,double data[]=NULL);。DataList(){delete[]d;}
int length(Constt retum len;}//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個數(shù)) double getElement(int i)Const{return d[i];}
void sort();//數(shù)據(jù)表排序
void show()Const;//顯示數(shù)據(jù)表}.
void writeToFile(Char*,Const DataList&).//main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(1en){ d=new double[1en];
for(int i_0;i< p>
d[i]=(data==NULL?0.0:data[i]);
}
void DataList::sort(){//數(shù)據(jù)表排序//********333********
//********666********}
void DataList::show()Const{//顯示數(shù)據(jù)表
for(int i=0;i<<<<<>
}
int main(){
double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S);
Cout<<”排序前:”; list.show();
list.sort();
Cout<<<>
writeToFile(””,list); return 0;
參考答案:for(inti=0;i<>
for(int j=i;j< p>
//從i+1處遍歷數(shù)組d
if(d[i]>d[j])
//d[j]和d[j]比較人,如果大于,就d[i]和d[j]值交換
{
inttemp=d[i];
//把臨時整型變量temp賦值為cJ[i]
d[i]=d[j];//把d[j]賦值給d[i]
d[j]=temp;//把temp值賦給d[j]
}