- 相關(guān)推薦
計算機二級C++考試測試卷及答案
選擇題(每小題1分,共40小題,共40分)
1.下列關(guān)于棧的敘述正確的是( )。
A.棧頂元素最先被刪除
B.棧頂元素最后才能被刪除
C.棧底元素永遠不能被刪除
D.以上三種說法都不對
2.下列敘述中正確的是( )。
A.有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)
B.只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)
C.循環(huán)鏈表是非線性結(jié)構(gòu)
D.雙向鏈表是非線性結(jié)構(gòu)
3.某二叉樹共有七個結(jié)點,其中葉子結(jié)點只有一個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)( )。
A.3
B.4
C.6
D.7
4.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是( )。
A.軟件集成測試計劃
B.軟件詳細設(shè)計說明書
C.用戶手冊
D.軟件需求規(guī)格說明書
5.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。
A.順序結(jié)構(gòu)
B.GOTO跳轉(zhuǎn)
C.選擇(分支)結(jié)構(gòu)
D.重復(fù)(循環(huán))結(jié)構(gòu)
6.下面描述中錯誤的是( )。
A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計
B.軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程
C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一
D.PAD圖是軟件詳細設(shè)計的表示工具
7,負責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是( )。
A.數(shù)據(jù)定義語言
B.數(shù)據(jù)管理語言
C.數(shù)據(jù)操縱語言
D.數(shù)據(jù)控制語言
8.一個教師可講多門課程,一門課程可由多個教師講授,則實體教師和課程間的聯(lián)系是:( )。
A.1:1聯(lián)系
B.1:m聯(lián)系
C.m:1聯(lián)系
D.m:n聯(lián)系
9.有三個關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.交
C.除
D.并
10.定義無符號整數(shù)為Uint,下面可以作為類Uint實例化值的是( )。
A.-369
B.369
C.0.369
D.整數(shù)集合{1,2,3,4,5}
11.在對函數(shù)進行原型聲明時,下列語法成分中,不需要的是( )。
A.函數(shù)返回類型
B.函數(shù)參數(shù)列表
C.函數(shù)名
D.函數(shù)體
12.下列關(guān)于this指針的描述中,正確的是( )。
A.類的成員函數(shù)都有this指針
B.類的友元函數(shù)都有this指針
C.任何與類相關(guān)的函數(shù)都有this指針
D.類的非靜態(tài)成員函數(shù)都有this指針
13.有如下類定義:
classAA{
inta:
public:
AA(intn=0):a(n)()
};
classBB:publicAA{
pubilc:
BB(intn)____
};
其中橫線處缺失部分是()。
A.:a(n){}B.:AA(n){}
C.{a(n);}D.{a=n;}
14.為類Matrix重載下列運算符號時,只能作為Matrix類成員函數(shù)重載的運算符是( )。
A.+
B.=
C.<<
D.++
15.下列關(guān)于函數(shù)模板的描述中,正確的是( )。
A.函數(shù)模板是一個實例函數(shù)
B.使用函數(shù)模板定義的函數(shù)沒有返回類型
C.函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同
D.通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)
16.C++系統(tǒng)預(yù)定義了四個用于標準數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是( )。
A.cout
B.cin
C.cerr
D.cset
17.Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是( )。
A.cpp
B.exe
C.obj
D.1ik
18.若有定義語句“inti=2,j=3;”,則表達式i/j的結(jié)果是( )。
A.0
B.0.7
C.0.66667
D.0.66666667
19.有如下程序:
#include
usingnamespacestd;
intmain(){
intf,f1=0,f2=1
for(inti=3;i<=6;i++){
f=f1+f2:
f1=f2:f2=f
}
cout< return0;
}
運行時的輸出結(jié)果是()。
A.2
B.3
C.5
D.8
20.有如下語句序列:
intx=100,&r=x;
cout< 已知其中變量x的地址為0012FF2C,則執(zhí)行該語句序列的輸出結(jié)果為( )。
A.100—100
B.100—0012FF7C
C.0012FF7C一100
D.0012FF7C一0012FF7C
21.已知函數(shù)f的原型是“voidf(int*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是( )。
A.f(v1,v2)
B.t(v1,&v2)
C.f(&v1,v2)
D.f(&v1,&v2);
22.有如下類定義:
classSample{
public:
Sample(intx):ref(x){}//①
private:
Sample():ref(0){}//②
staticintva1=5;//③
constintref;//④
};
上述程序段中,錯誤的語句是( )。
A.①B.②
C.③D.④
23.有如下程序:
#include
usingnamespacestd;
classPoint{
intX,Y;
public
point(intx1=0,inty1=O)tx(x1),y(y1){}
intget(){returnx+y;}
};
classCircle{
pointcenter;
intradius;
public
circle(intCX,intcy,intr):center(cx,cy),radius(r)
{}
intget(){returncenter.get()+radius;)
};
intmain(){
circlec(3,4,5);
cout< return0;
}
運行時的輸出結(jié)果是( )。
A.5
B.7
C.9
D.12
24.若是對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,下列選項中正確的是( )。
A.operatorlong()const;
B.operatorlong(BigNumber);
C.10ngoperatorlong()const;
D.10ngoperatorlong(BigNumber);
25.有如下函數(shù)模板定義:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型數(shù)據(jù)9作為函數(shù)實參調(diào)用該模板,并返回一個double型數(shù)據(jù),則該調(diào)用應(yīng)表示為( )。
A.FUN(9)
B.FUN<9>
26.下列語句都是程序運行時的第一條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。
A.cout< B.cout< C.cout< D.cout< 27.下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是( )。
A.析構(gòu)函數(shù)可以重載
B.析構(gòu)函數(shù)由系統(tǒng)自動調(diào)用
C.每個對象的析構(gòu)函數(shù)只被調(diào)用一次
D.每個類都有析構(gòu)函數(shù)
28.下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是( )。
A.構(gòu)造函數(shù)名與類名相同
B.構(gòu)造函數(shù)可以有返回值
C.構(gòu)造函數(shù)可以重載
D.每個類都有構(gòu)造函數(shù)
29.若PAT是一個類,則程序運行時,語句“PAT(*ad){3};”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是( )。
A.0
B.1
C.2
D.3
30.有如下程序:
ClassBase{
public:
intdata;
};
ClassDerived1:publicBase{};
ClassDerived2:protectedBase{};
intmain(){
Derived1d1;
Derived2d2;
d1.data=0;//①
d2.data=0;//②
return0;
}
下列關(guān)于程序編譯結(jié)果的描述中,正確的是( )。
A.①②皆無編譯錯誤
B.①有編譯錯誤,②無編譯錯誤
C.①無編譯錯誤,②有編譯錯誤
D.①②皆有編譯錯誤
31.有如下程序;
#include
usingnamespacestd;
clasBasel{
public:
Basel(intd){cout< -Basel(){}
};
classBase2{
public:
Base2(intd){out< ~Base2(){}
};
classDerived:publicBase1,Base2{
public:
Derived(inta,intb,intC,intd):
Basel(b),Base2(a),b1(d),b2(c){}
private:
intb1;
intb2;
};
intmain(){
Derivedd(1,2,3,4);
return0;
}
運行時的輸出結(jié)果是( )。
A.1234
B.2134
C.12
D.21
32.有如下程序:
#include
usingnamespacestd;
classBase{
public:
virtualvoidfunctionl(){cout<<’0’;}
voidfunction2(){out<<’1’;}
};
classDerived:publicBase{
oublic:
voidfunctionl(){cout<<’2’;}
voidfunction2(){cout<<’3’;}
};
intmain(){
Base*p=newDerived();
p->functionl();
p->function2();
return0;
}
運行時的輸出結(jié)果是( )。
A.01
B.21
C.03
D.23
33.有如下類模板定義:
template
classBigNumber{
longn;
public;
BigNumber{Ti}:n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber{n+b.n);
}
};
已知b1、b2是BigNumber的兩個對象,則下列表達中踏誤的是( )。
A.b1+b2
B.b1+3
C.3+b1
D.3+3
34.下列關(guān)于文件流的描述中,正確的是( )。
A.文件流只能完成針對磁盤文件的輸入、輸出
B.建立一個文件流對象時,必須同時打開一個文件
C.若輸入流要打開的文件不存在,將建立一個新文件
D.若輸出流要打開的文件不存在,將建立一個新文件
35.有如下程序:
#include
usingnamespacestd;
classPair{
intm,n;
public;
Pair(intj,intk):m(j),n(k){}
intget(){returnm;}
intget()const{returnm+n;}
};
intmain(){
Paira(3,5);
constPairb(3,5);
cout< return0;
}
運行時的輸出結(jié)果是( )。
A.33
B.38
C.83
D.88
36.有如下程序:
#include
usingnamespacestd;
voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){
intx=10,y=26;
f1(x,y);
f2(x,y);
cout< return0;
}
運行時的輸出結(jié)果是( )。
A.10
B.16
C.26
D.36
37.有如下程序:
#include
usingnamespacestd;
classXA{
inta;
public:
staticintb;
XA(intaa):a(aa){b++;}
~XA(){}
intget(){returna;}
};
intXA::b=0
intmain(){
XAd1(1),d2(3);
cout< return0;
}
運行時的輸出結(jié)果是( )。
A.5
B.6
C.7
D.8
38.有如下程序:
#include
usingnamespacestd;
classPoint{
intX,y;
public:
Point(intx1=0,inty1=0):X(x1),y(y1){}
intget(){returnx+y;}
};
classCircle{
Pointcenter;
intradius;
public:
Circle(intCX,intcy,intr):center(CX,cy),radius(r)
{}
intget(){returncenter.get()+radius;}
};
intmain(){
Circlec(3,4,5);
cout< return0;
}
運行時的輸出結(jié)果是( )。
A.5
B.7
C.9
D.12
39.若是對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,下列選項中正確的是( )。
A.operatorlong()const;
B.operatorlong(BigNumber);
C.10ngoperatorlong()const;
D.longoperatorlong(BigNumber);
40.有如下函數(shù)模板定義:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型數(shù)據(jù)9作為函數(shù)實參調(diào)用該模板,并返回一個double型數(shù)據(jù),則該調(diào)用應(yīng)表示為( )。
A.FUN(9)
B.FUN<9>
【參考答案及解析】
1.A。【解析】棧是限定在一端進行插入刪除的先入后出的線性表數(shù)據(jù)結(jié)構(gòu),棧頂元素最后插入到棧中,但是最先被刪除;而棧底元素最先插入,最后被刪除。
2.D!窘馕觥烤性表的特點是:在數(shù)據(jù)元素的非空有限集合中1)存在唯一的一個被稱為”第一個”的數(shù)據(jù)元素2)存在唯一個被稱為”最后一個”的數(shù)據(jù)元素3)除第一個以外,集合中的每個數(shù)據(jù)元素均只有一個后繼4)除最后一個以外,集合中的每個數(shù)據(jù)元素均只有一個后繼。因此,雙向表是非線性結(jié)構(gòu)。
3.D!窘馕觥繉τ谌我庖豢枚鏄銽,如果葉子節(jié)點數(shù)為nO,度為2的結(jié)點數(shù)為n2,二者之間的關(guān)系是nO=n2+1,該題中度為2的結(jié)點數(shù)為0,且只有一個葉子節(jié)點,因此,樹中度為1的結(jié)點有6個,很容易想到樹的深度為7。
4.D!窘馕觥啃枨蠓治鲭A段只能產(chǎn)生需求分析規(guī)格說明書,A測試說明書是軟件測試階段生成的,B軟件詳細設(shè)計說明數(shù)是設(shè)計階段生產(chǎn),C用戶手冊是軟件發(fā)布時隨軟件一同交付給用戶的。
5.B!窘馕觥拷Y(jié)構(gòu)化程序設(shè)計的三種結(jié)構(gòu)是順序、分支和循環(huán),不包括goto跳轉(zhuǎn),它只是分支結(jié)構(gòu)的一種,也是一個關(guān)鍵字。
6.A!窘馕觥寇浖到y(tǒng)的總體結(jié)構(gòu)圖是軟件架構(gòu)設(shè)計的依據(jù),它并不能支持軟件的詳細設(shè)計。
7.C。【解析】數(shù)據(jù)庫操縱語言專門負責(zé)查詢,增加,刪除等數(shù)據(jù)操作。
8.D!窘馕觥恳粋教師可以上多門課程,一門課程也可以由多個教師教授,這是典型的多對多的E-R關(guān)系。
9.C!窘馕觥縎中的關(guān)系全部出現(xiàn)在R中,只有做除法操作才會出現(xiàn)關(guān)系T。
10.B!窘馕觥緼是有符號數(shù),C是浮點數(shù),D是集合,并不是類的實例化對象,只有B完全符臺。
11.D!窘馕觥亢瘮(shù)聲明的時候,是不需要實現(xiàn)部分的,也就是函數(shù)體。
12.D。【解析】類的非靜態(tài)成員都是有this指針的?梢酝ㄟ^obj非靜態(tài)成員訪問。
13.B!窘馕觥啃枰獙崿F(xiàn)父類構(gòu)造函數(shù)。
14.B!窘馕觥抠x值運算符只能作為重載函數(shù)的成員函數(shù),其他運算符都可以作為友元函數(shù)重載。
15.D!窘馕觥亢瘮(shù)模板只是聲明,一個函數(shù)的描述即模板,不是一個可以直接執(zhí)行的函數(shù),只有根據(jù)實際情況用實參的數(shù)據(jù)類型參數(shù)標識符之后,才能產(chǎn)生真正的函數(shù)。
16.D!窘馕觥緾++的標準數(shù)據(jù)流對象有三個:cout標注輸出流,ein標準輸入流,cerr標準錯誤流。
17.C!窘馕觥縞pp是C++源文件的擴展名,exe是可執(zhí)行文件的擴展名,lik是鏈接文件的的擴展名。
18.A!窘馕觥空麛(shù)相除為整數(shù),所以結(jié)果為0。
19.C:【解析】循環(huán)3次,分別每次計算出fl,f2和f的值,該題較簡單,只需細心即可。
20.B!窘馕觥縳的值為100,而r代表x的地址。&r=x等同于r=*X。
21.B。【解析】voidf(int*X,int&。y);第一個參數(shù)需要取值,第二個參數(shù)需要取地址,所以為v1為取值,&Lv2為取址。
22.C!窘馕觥繎(yīng)為“staticconstintval一5;”,只有靜態(tài)常量才可以初始化。
23.D!窘馕觥亢唵晤愔g繼承關(guān)系的調(diào)用,按照通常做法便可以得到答案。center.get()函數(shù)調(diào)用后,3和4的和被返回接著再調(diào)用Circle類的radius成員交量5相加后得到12。
24.A!窘馕觥緾++不僅可以對運算符進行重載,還可以重載類型轉(zhuǎn)換符,函數(shù)聲明的形式勾operator類型符()const。
25.C!窘馕觥亢瘮(shù)返回類型是double型,則T1為double型,T2為int型才符合函數(shù)模板的定義。
26.D。【解析]setw(6)將輸出寬度設(shè)為6,如果位數(shù)不夠則在最左邊補齊,因此該項輸出一定不會與其他三項一致。
27.A!窘馕觥课鰳(gòu)函數(shù)不能被重載,因為它的函數(shù)中不帶有任何參數(shù),也沒有任何返回值,函數(shù)只有一個版本,即~類名(){}。
28.B!窘馕觥繕(gòu)造函數(shù)沒有返回值,雖然叫函數(shù)但是它沒有任何返回值,包括void型都不是,官方叫法為“構(gòu)造器”。
29.A。【解析]PAT(*ad){3);該表達式表示一個指向類PAT的數(shù)組的指針,只是聲明了該指針,而并沒有進行實例化對象,因此該語句運行時并不會調(diào)用構(gòu)造函數(shù)。
30.C!窘馕鯹Derived2繼承Base的方式為protected,則Base的public成員只能在Base內(nèi)訪問。
31.D!窘馕觥慷嗬^承構(gòu)造函數(shù)執(zhí)行的順序為繼承時的順序。所以答案為D。Derived(inta,intb,intC,intd):Basel(b),Base2(a),bl(d),b2(c)的含義是:構(gòu)造函數(shù)Basel的參數(shù)值為b,構(gòu)造函數(shù)Base2的參數(shù)值為a。成員變量b1,b2的值分別為d、C。
32.B!窘馕觥勘绢}中需要注意的是虛函數(shù)的定義:指向基類的指針在操作它的多態(tài)類對象時,會根據(jù)不同的類對象,調(diào)用其相應(yīng)的函數(shù),這個函數(shù)就是虛函數(shù)。所以P->functionl();會指向?qū)崿F(xiàn)類Derived,而P->function2()則會指向Base。
33.C!窘馕觥吭擃}考查了C++模板類和+運算符重載的知識,3+b1時,程序不能將b1轉(zhuǎn)化為整型,所以編譯會出錯。
34.C!窘馕觥枯斎肓饕蜷_的文件不存在,則會自動建立該文件,而輸出流要打開的文件不存在,則會報錯,而不會新建一個文件。
35.B!窘馕觥縠onst函數(shù)只能被eonst對象調(diào)用,a.get()函數(shù)調(diào)用的返回值是3,而b.get()調(diào)用的返回值是8。
36.A!窘馕觥吭擃}考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳遞。引用傳遞時X和Y會交換,而傳值時二者不交換,因此選10。
37.C!窘馕觥棵空{(diào)用一次get函數(shù)時,對新的類A對象進行一次實例化,調(diào)用一次構(gòu)造函數(shù),類A的靜態(tài)成員變量b便加1。
38.D!窘馕觥亢唵晤愔g繼承關(guān)系的調(diào)用,按照通常做法便可以得到答案。center.get()函數(shù)調(diào)用后,3和4的和被返回,接著再調(diào)用Circle類的radius成員變量5相加后得到12。
39.A!窘馕觥緾++不僅可以對運算符進行重載,還可以重載類型轉(zhuǎn)換符,函數(shù)聲明的形式為:operator類型符()const。
40.C!窘馕觥亢瘮(shù)返回類型是double型,則T1為double型,T2為int型才符合函數(shù)模板的定義。
【計算機二級C++考試測試卷及答案】相關(guān)文章:
計算機二級考試C++試題及答案03-27
計算機二級考試C++試題03-09
2016年計算機二級C++考試試卷及答案03-05
2016計算機等級考試二級C++上機模擬試題及答案03-08
2017計算機二級C++考試試題03-05
計算機二級考試答案10-24
2016年計算機二級C++模擬試題及答案03-07