- 相關(guān)推薦
計算機二級C++考試測試卷及答案
選擇題(每小題1分,共40小題,共40分)
1.下列關(guān)于棧的敘述正確的是( )。
A.棧頂元素最先被刪除
B.棧頂元素最后才能被刪除
C.棧底元素永遠不能被刪除
D.以上三種說(shuō)法都不對
2.下列敘述中正確的是( )。
A.有一個(gè)以上根結點(diǎn)的數據結構不一定是非線(xiàn)性結構
B.只有一個(gè)根結點(diǎn)的數據結構不一定是線(xiàn)性結構
C.循環(huán)鏈表是非線(xiàn)性結構
D.雙向鏈表是非線(xiàn)性結構
3.某二叉樹(shù)共有七個(gè)結點(diǎn),其中葉子結點(diǎn)只有一個(gè),則該二叉樹(shù)的深度為(假設根結點(diǎn)在第1層)( )。
A.3
B.4
C.6
D.7
4.在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是( )。
A.軟件集成測試計劃
B.軟件詳細設計說(shuō)明書(shū)
C.用戶(hù)手冊
D.軟件需求規格說(shuō)明書(shū)
5.結構化程序所要求的基本結構不包括( )。
A.順序結構
B.GOTO跳轉
C.選擇(分支)結構
D.重復(循環(huán))結構
6.下面描述中錯誤的是( )。
A.系統總體結構圖支持軟件系統的詳細設計
B.軟件設計是將軟件需求轉換為軟件表示的過(guò)程
C.數據結構與數據庫設計是軟件設計的任務(wù)之一
D.PAD圖是軟件詳細設計的表示工具
7,負責數據庫中查詢(xún)操作的數據庫語(yǔ)言是( )。
A.數據定義語(yǔ)言
B.數據管理語(yǔ)言
C.數據操縱語(yǔ)言
D.數據控制語(yǔ)言
8.一個(gè)教師可講多門(mén)課程,一門(mén)課程可由多個(gè)教師講授,則實(shí)體教師和課程間的聯(lián)系是:( )。
A.1:1聯(lián)系
B.1:m聯(lián)系
C.m:1聯(lián)系
D.m:n聯(lián)系
9.有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.交
C.除
D.并
10.定義無(wú)符號整數為Uint,下面可以作為類(lèi)Uint實(shí)例化值的是( )。
A.-369
B.369
C.0.369
D.整數集合{1,2,3,4,5}
11.在對函數進(jìn)行原型聲明時(shí),下列語(yǔ)法成分中,不需要的是( )。
A.函數返回類(lèi)型
B.函數參數列表
C.函數名
D.函數體
12.下列關(guān)于this指針的描述中,正確的是( )。
A.類(lèi)的成員函數都有this指針
B.類(lèi)的友元函數都有this指針
C.任何與類(lèi)相關(guān)的函數都有this指針
D.類(lèi)的非靜態(tài)成員函數都有this指針
13.有如下類(lèi)定義:
classAA{
inta:
public:
AA(intn=0):a(n)()
};
classBB:publicAA{
pubilc:
BB(intn)____
};
其中橫線(xiàn)處缺失部分是()。
A.:a(n){}B.:AA(n){}
C.{a(n);}D.{a=n;}
14.為類(lèi)Matrix重載下列運算符號時(shí),只能作為Matrix類(lèi)成員函數重載的運算符是( )。
A.+
B.=
C.<<
D.++
15.下列關(guān)于函數模板的描述中,正確的是( )。
A.函數模板是一個(gè)實(shí)例函數
B.使用函數模板定義的函數沒(méi)有返回類(lèi)型
C.函數模板的類(lèi)型參數與函數的參數相同
D.通過(guò)使用不同的類(lèi)型參數,可以從函數模板得到不同的實(shí)例函數
16.C++系統預定義了四個(gè)用于標準數據流的對象,下列選項中不屬于此類(lèi)對象的是( )。
A.cout
B.cin
C.cerr
D.cset
17.Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是( )。
A.cpp
B.exe
C.obj
D.1ik
18.若有定義語(yǔ)句“inti=2,j=3;”,則表達式i/j的結果是( )。
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;
}
運行時(shí)的輸出結果是()。
A.2
B.3
C.5
D.8
20.有如下語(yǔ)句序列:
intx=100,&r=x;
cout< 已知其中變量x的地址為0012FF2C,則執行該語(yǔ)句序列的輸出結果為( )。
A.100—100
B.100—0012FF7C
C.0012FF7C一100
D.0012FF7C一0012FF7C
21.已知函數f的原型是“voidf(int*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調用語(yǔ)句中,正確的是( )。
A.f(v1,v2)
B.t(v1,&v2)
C.f(&v1,v2)
D.f(&v1,&v2);
22.有如下類(lèi)定義:
classSample{
public:
Sample(intx):ref(x){}//①
private:
Sample():ref(0){}//②
staticintva1=5;//③
constintref;//④
};
上述程序段中,錯誤的語(yǔ)句是( )。
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;
}
運行時(shí)的輸出結果是( )。
A.5
B.7
C.9
D.12
24.若是對類(lèi)BigNumber中重載的類(lèi)型轉換運算符long進(jìn)行聲明,下列選項中正確的是( )。
A.operatorlong()const;
B.operatorlong(BigNumber);
C.10ngoperatorlong()const;
D.10ngoperatorlong(BigNumber);
25.有如下函數模板定義:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型數據9作為函數實(shí)參調用該模板,并返回一個(gè)double型數據,則該調用應表示為( )。
A.FUN(9)
B.FUN<9>
26.下列語(yǔ)句都是程序運行時(shí)的第一條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效果與其他三條語(yǔ)句不同,該語(yǔ)句是( )。
A.cout< B.cout< C.cout< D.cout< 27.下列關(guān)于析構函數的描述中,錯誤的是( )。
A.析構函數可以重載
B.析構函數由系統自動(dòng)調用
C.每個(gè)對象的析構函數只被調用一次
D.每個(gè)類(lèi)都有析構函數
28.下列關(guān)于構造函數的描述中,錯誤的是( )。
A.構造函數名與類(lèi)名相同
B.構造函數可以有返回值
C.構造函數可以重載
D.每個(gè)類(lèi)都有構造函數
29.若PAT是一個(gè)類(lèi),則程序運行時(shí),語(yǔ)句“PAT(*ad){3};”調用PAT的構造函數的次數是( )。
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)于程序編譯結果的描述中,正確的是( )。
A.①②皆無(wú)編譯錯誤
B.①有編譯錯誤,②無(wú)編譯錯誤
C.①無(wú)編譯錯誤,②有編譯錯誤
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;
}
運行時(shí)的輸出結果是( )。
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;
}
運行時(shí)的輸出結果是( )。
A.01
B.21
C.03
D.23
33.有如下類(lèi)模板定義:
template
classBigNumber{
longn;
public;
BigNumber{Ti}:n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber{n+b.n);
}
};
已知b1、b2是BigNumber的兩個(gè)對象,則下列表達中踏誤的是( )。
A.b1+b2
B.b1+3
C.3+b1
D.3+3
34.下列關(guān)于文件流的描述中,正確的是( )。
A.文件流只能完成針對磁盤(pán)文件的輸入、輸出
B.建立一個(gè)文件流對象時(shí),必須同時(shí)打開(kāi)一個(gè)文件
C.若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件
D.若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件
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;
}
運行時(shí)的輸出結果是( )。
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;
}
運行時(shí)的輸出結果是( )。
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;
}
運行時(shí)的輸出結果是( )。
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;
}
運行時(shí)的輸出結果是( )。
A.5
B.7
C.9
D.12
39.若是對類(lèi)BigNumber中重載的類(lèi)型轉換運算符long進(jìn)行聲明,下列選項中正確的是( )。
A.operatorlong()const;
B.operatorlong(BigNumber);
C.10ngoperatorlong()const;
D.longoperatorlong(BigNumber);
40.有如下函數模板定義:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型數據9作為函數實(shí)參調用該模板,并返回一個(gè)double型數據,則該調用應表示為( )。
A.FUN(9)
B.FUN<9>
【參考答案及解析】
1.A!窘馕觥織J窍薅ㄔ谝欢诉M(jìn)行插入刪除的先入后出的線(xiàn)性表數據結構,棧頂元素最后插入到棧中,但是最先被刪除;而棧底元素最先插入,最后被刪除。
2.D!窘馕觥烤(xiàn)性表的特點(diǎn)是:在數據元素的非空有限集合中1)存在唯一的一個(gè)被稱(chēng)為”第一個(gè)”的數據元素2)存在唯一個(gè)被稱(chēng)為”最后一個(gè)”的數據元素3)除第一個(gè)以外,集合中的每個(gè)數據元素均只有一個(gè)后繼4)除最后一個(gè)以外,集合中的每個(gè)數據元素均只有一個(gè)后繼。因此,雙向表是非線(xiàn)性結構。
3.D!窘馕觥繉τ谌我庖豢枚鏄(shù)T,如果葉子節點(diǎn)數為nO,度為2的結點(diǎn)數為n2,二者之間的關(guān)系是nO=n2+1,該題中度為2的結點(diǎn)數為0,且只有一個(gè)葉子節點(diǎn),因此,樹(shù)中度為1的結點(diǎn)有6個(gè),很容易想到樹(shù)的深度為7。
4.D!窘馕觥啃枨蠓治鲭A段只能產(chǎn)生需求分析規格說(shuō)明書(shū),A測試說(shuō)明書(shū)是軟件測試階段生成的,B軟件詳細設計說(shuō)明數是設計階段生產(chǎn),C用戶(hù)手冊是軟件發(fā)布時(shí)隨軟件一同交付給用戶(hù)的。
5.B!窘馕觥拷Y構化程序設計的三種結構是順序、分支和循環(huán),不包括goto跳轉,它只是分支結構的一種,也是一個(gè)關(guān)鍵字。
6.A!窘馕觥寇浖到y的總體結構圖是軟件架構設計的依據,它并不能支持軟件的詳細設計。
7.C!窘馕觥繑祿䦷觳倏v語(yǔ)言專(zhuān)門(mén)負責查詢(xún),增加,刪除等數據操作。
8.D!窘馕觥恳粋(gè)教師可以上多門(mén)課程,一門(mén)課程也可以由多個(gè)教師教授,這是典型的多對多的E-R關(guān)系。
9.C!窘馕觥縎中的關(guān)系全部出現在R中,只有做除法操作才會(huì )出現關(guān)系T。
10.B!窘馕觥緼是有符號數,C是浮點(diǎn)數,D是集合,并不是類(lèi)的實(shí)例化對象,只有B完全符臺。
11.D!窘馕觥亢瘮德暶鞯臅r(shí)候,是不需要實(shí)現部分的,也就是函數體。
12.D!窘馕觥款(lèi)的非靜態(tài)成員都是有this指針的?梢酝ㄟ^(guò)obj非靜態(tài)成員訪(fǎng)問(wèn)。
13.B!窘馕觥啃枰獙(shí)現父類(lèi)構造函數。
14.B!窘馕觥抠x值運算符只能作為重載函數的成員函數,其他運算符都可以作為友元函數重載。
15.D!窘馕觥亢瘮的0逯皇锹暶,一個(gè)函數的描述即模板,不是一個(gè)可以直接執行的函數,只有根據實(shí)際情況用實(shí)參的數據類(lèi)型參數標識符之后,才能產(chǎn)生真正的函數。
16.D!窘馕觥緾++的標準數據流對象有三個(gè):cout標注輸出流,ein標準輸入流,cerr標準錯誤流。
17.C!窘馕觥縞pp是C++源文件的擴展名,exe是可執行文件的擴展名,lik是鏈接文件的的擴展名。
18.A!窘馕觥空麛迪喑秊檎麛,所以結果為0。
19.C:【解析】循環(huán)3次,分別每次計算出fl,f2和f的值,該題較簡(jiǎn)單,只需細心即可。
20.B!窘馕觥縳的值為100,而r代表x的地址。&r=x等同于r=*X。
21.B!窘馕觥縱oidf(int*X,int&。y);第一個(gè)參數需要取值,第二個(gè)參數需要取地址,所以為v1為取值,&Lv2為取址。
22.C!窘馕觥繎獮椤皊taticconstintval一5;”,只有靜態(tài)常量才可以初始化。
23.D!窘馕觥亢(jiǎn)單類(lèi)之間繼承關(guān)系的調用,按照通常做法便可以得到答案。center.get()函數調用后,3和4的和被返回接著(zhù)再調用Circle類(lèi)的radius成員交量5相加后得到12。
24.A!窘馕觥緾++不僅可以對運算符進(jìn)行重載,還可以重載類(lèi)型轉換符,函數聲明的形式勾operator類(lèi)型符()const。
25.C!窘馕觥亢瘮捣祷仡(lèi)型是double型,則T1為double型,T2為int型才符合函數模板的定義。
26.D!窘馕鯹setw(6)將輸出寬度設為6,如果位數不夠則在最左邊補齊,因此該項輸出一定不會(huì )與其他三項一致。
27.A!窘馕觥课鰳嫼瘮挡荒鼙恢剌d,因為它的函數中不帶有任何參數,也沒(méi)有任何返回值,函數只有一個(gè)版本,即~類(lèi)名(){}。
28.B!窘馕觥繕嬙旌瘮禌](méi)有返回值,雖然叫函數但是它沒(méi)有任何返回值,包括void型都不是,官方叫法為“構造器”。
29.A!窘馕鯹PAT(*ad){3);該表達式表示一個(gè)指向類(lèi)PAT的數組的指針,只是聲明了該指針,而并沒(méi)有進(jìn)行實(shí)例化對象,因此該語(yǔ)句運行時(shí)并不會(huì )調用構造函數。
30.C!窘馕鯹Derived2繼承Base的方式為protected,則Base的public成員只能在Base內訪(fǎng)問(wèn)。
31.D!窘馕觥慷嗬^承構造函數執行的順序為繼承時(shí)的順序。所以答案為D。Derived(inta,intb,intC,intd):Basel(b),Base2(a),bl(d),b2(c)的含義是:構造函數Basel的參數值為b,構造函數Base2的參數值為a。成員變量b1,b2的值分別為d、C。
32.B!窘馕觥勘绢}中需要注意的是虛函數的定義:指向基類(lèi)的指針在操作它的多態(tài)類(lèi)對象時(shí),會(huì )根據不同的類(lèi)對象,調用其相應的函數,這個(gè)函數就是虛函數。所以P->functionl();會(huì )指向實(shí)現類(lèi)Derived,而P->function2()則會(huì )指向Base。
33.C!窘馕觥吭擃}考查了C++模板類(lèi)和+運算符重載的知識,3+b1時(shí),程序不能將b1轉化為整型,所以編譯會(huì )出錯。
34.C!窘馕觥枯斎肓饕蜷_(kāi)的文件不存在,則會(huì )自動(dòng)建立該文件,而輸出流要打開(kāi)的文件不存在,則會(huì )報錯,而不會(huì )新建一個(gè)文件。
35.B!窘馕觥縠onst函數只能被eonst對象調用,a.get()函數調用的返回值是3,而b.get()調用的返回值是8。
36.A!窘馕觥吭擃}考查了函數參數傳遞的兩種方式:引用傳遞和值傳遞。引用傳遞時(shí)X和Y會(huì )交換,而傳值時(shí)二者不交換,因此選10。
37.C!窘馕觥棵空{用一次get函數時(shí),對新的類(lèi)A對象進(jìn)行一次實(shí)例化,調用一次構造函數,類(lèi)A的靜態(tài)成員變量b便加1。
38.D!窘馕觥亢(jiǎn)單類(lèi)之間繼承關(guān)系的調用,按照通常做法便可以得到答案。center.get()函數調用后,3和4的和被返回,接著(zhù)再調用Circle類(lèi)的radius成員變量5相加后得到12。
39.A!窘馕觥緾++不僅可以對運算符進(jìn)行重載,還可以重載類(lèi)型轉換符,函數聲明的形式為:operator類(lèi)型符()const。
40.C!窘馕觥亢瘮捣祷仡(lèi)型是double型,則T1為double型,T2為int型才符合函數模板的定義。
【計算機二級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