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