- 相關推薦
2016最新計算機二級C++上機試題及答案
1有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<
};
class Derived:public Base{
public:
Derived(char C){tout<
};
int main(){
Derived dl(’B’);
retum 0;
}
執行這個程序的輸出結果是( )。
A.BB.BAC.ABD.BB
參考答案:C
參考解析:本題考查派生類的構造函數和析構函數.在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數;對象釋放時,先執行派生類的析構函數,再執行基類的析構函數。本題中定義了一個派生類對象d1,首先執行基類的構造函數,輸出A;然后執行派生類的構造函數,輸出B。所以答案為c。
2下列符號中能夠作為C++標識符的是( )。
A.CoflstB.2aC._shapeD..Count
參考答案:C
參考解析:本題考查c++標識符的命名規則,其規則有如下幾點:①所有標識符必須由字母、數字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用c++已有的關鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項A是關鍵字,選項B不能以數字開頭,選項D包含了字符”一”,且不能以此字符開頭。故答案為C。
3有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{tout<<”funl”;}
protected:
void fun2()const{tout<<”fun2”;}
public:
void fun3()const{cout<<”fhll3”;}
};
class Derived:protected Base
{
public:
void fhn4()const{cout<<”filn4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
return U:
}
其中有語法錯誤的語句是( )。
A.①②③④B.①②③C.②③④D.①④
參考答案:B
考解析:本題考查保護繼承中派生類對基類的訪問屬性,受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,保護基類的所有成員在派生類中都被保護起來,在類外不能訪問,所以①②③錯誤。
4有如下程序:
#include
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Pian0:public Instrument}
public:
void Display(){/*函數體略*" >
};
intmain(){
Instrument S;
Instrument*P=0:
//…;
return 0;
}
下列敘述中正確的是( )。
A.語句“Insturment*P=0;”編譯時出錯
B.語句“Instnunent s;”編譯時出錯
C.類Pian0中的Display函數不是虛函數
D.類Instrument是一個虛基類
參考答案:B
參考解析:本題考查純虛函數和抽象類,純虛函數是在聲明虛函數時被“初始化”為0的函數,包含純虛函數的類為抽象類,抽象類不能被實例化,所以語句“Instrmnent s;”在編譯時出錯。
5如下函數模板:
templateT square(T x){return x*x;} 其中T是( )。
A.函數形參B.函數實參C.模板形參D.模板實參
參考答案:C
參考解析:本題考查模板函數的基本概念,根據模板函數的定義,T是模板形參,所以答案為C。
6為了提高函數調用的實際運行速度,可以將較簡單的函數定義為( )。
A.內聯函數B.重載函數C.遞歸函數D.函數模板
參考答案:A
參考解析:一般函數進行調用時,要將程序執行權轉到被調用函數中.然后再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換,一般只將{將規模很小而使用頻繁的函數聲明為內聯函數,可以避免函數調用時間開銷,從而提高運行速度。
7有如下程序:
#inClude using namespaCe std; Class Point{
publiC:
statiC int number;
publiC:
Point( )t.number++;} ~Point( ){number--;}
}; , int P0int::number=0;
int main( ){
Point *ptr:
Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’
}
Point C;
Cout<
return 0; }
執行這個程序的輸出結果是( )。
A.3B.4C.6D.7
參考答案:C
參考解析:本題考查默認構造函數.題目中定義.個對象A、B以及對象數組Point[3],又定義了對象C,共執行6次構造函數,number變為了6,所以本題答案為C。
8有三個關系R、S和T如下.
2016年9月計算機二級C++上機考試沖刺試題(2)
由關系R和s通過運算得到關系T,則所使用的運算為( )。
A.并B.自然連接C.笛卡爾積D.交
參考答案:D
參考解析:自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉,所以8錯誤。笛卡爾積是用R集合中元素為第一元素,s集合中元素為第二元素構成的有序對,所以C錯誤。根據關系T可以很明顯地看出是從關系R 與關系s中取得相同的關系組所以取得是交運算,選擇D。
9下列符號中,正確的c++標識符是( )。
A.enumB.2bC.f00一9D._32
參考答案:D
參考解析:本題考查c++標識符的命名規則,規定如下:①所有標識符可以由字母、數字和下畫線組成,且必須以字母或F畫線開頭;②c++的關鍵字不能作為標識符;③大、小寫字母表示不同意義,即代表不同的標識符,如mun和Mu0。A選項是C++的關鍵字,B選項不能以數字開頭,C選項“一”不能用于組成標識符。
10下列關于C++預定義流對象的敘述中,正確的是( )。
A.Cin是C++預定義的標準輸入流對象
B.Cin是C++預定義的標準輸入流類
C.Cout是C++預定義的標準輸入流對象
D.Cout是C++預定義的標準輸入流類
參考答案:A
參考解析:cin是C++預定義的標準輸入流對象,tOUt是C++預定義的標準輸出流對象。
11下列情況中,不會調用拷貝構造函數的是( )。
A.用一個對象去初始化同一類的另一個新對象時
B.將類的一個對象賦值給該類的另一個對象時
C.函數的形參是類的對象,調用函數進行形參和實參結合時
D.函數的返回值是類的對象,函數執行返回調用時
參考答案:B
參考解析:本題考查復制構造函數,在以下3種情況下使用:①程序中需要新建立一個對象,并用另一個對象對它初始化;②函數的參數為類的對象;③函數的返回值是類的對象。其中B選項是由賦值運算符重載實現的。
12下列敘述中正確的是( )。
A.線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B.線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
C.線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構
D.線性表的鏈式存儲結構與順序存儲結構在存儲空間的需求上沒有可比性
參考答案:B
參考解析:線性鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結構。
13類的析構函數的作用是( )。
A.一般成員函數的初始化B.類的初始化C.對象的初始化D.刪除類創建的對象
參考答案:D
參考解析:析構函數就是用來釋放對象的.它的調用完成之后,對象也就消失了,相應的內存空間也被釋放了。
14下列運算符不能重載為友元函數的是( )。
A.=()( )->B. + - ++ --C.> < >= <=D.+= -= *=/=
參考答案:A
參考解析:關于運算符重載為友元函數有如下規定:①一般情況下,單目運算符最好重載為類的成員函數,雙目運算符則最好重載為類的友元函數;②雙目運算符“=、()、[]、->”不能重載為類的友元函數。所以本題答案為A。
15下面關于運算符重載的描述錯誤的是( )。
A.運算符重載不能改變操作數的個數、運算符的優先級、運算符的結合性和運算符的語法結構
B.不是所有的運算符都可以進行重載
C.運算符函數的調用必須使用關鍵字operat。
D.在C+十語言中不可通過運算符重載創造出新的運算符
參考答案:C
參考解析:例如“::”運算符就不能被重載;通過重載可以創造新的運算方式,但是不能臆造新的運算符;定義的時候必須使用關鍵字0perator,而調用時可直接使用運算符。
16當使用fstream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為( )。
A.ios::inB.ios::0utC.ios::in I ios::0utD.以上都不對
參考答案:D
參考解析:
使用fstream類建立文件流必須定義打開方式,否則編譯器無法判斷該文件流是讀還是寫。
17由于常對象不能被更新,因此( )。
A.通過常對象只能調用它的常成員函數
B.通過常對象只能調用靜態成員函數
C.常對象的成員都是常成員
D.通過常對象可以調用任何不改變對象值的成員函數
參考答案:A
參考解析:本題考查常對象的基本知識,常對象只能調用它的常成員函數,而不能調用非const函數,常對象的成員函數不一定都是常成員函數,只需保證其數據成員是常數據成員即可。所以本題選A。
18支持子程序調用的數據結構是( )。
A.棧B.樹C.隊列D.二叉樹
參考答案:A
參考解析:棧支持子程序調用棧是一種只能在一端進行插入或刪除的線性表,在主程序凋用子函數時要首先保存主程序當前的狀態,然后轉去執行子程序.最終把子程序的執行結果返回到主程序中調用子程序的位置,繼續向下執行,這種調用符合棧的特點,因此本題的答案為A。
19有如下類定義:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是類D的對象,則下列語句中不違反訪問控制權限的是( )。
A.obj.fun1();B.obj.fun2();C.obj.tim3();D.ohj.fun4();
參考答案:A
參考解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有的訪問屬性,其私有成員仍為基類私有。所以在本題中,在類外引用成員函數時,派生對象只能引用基類的公用成員函數fun1,故本題答案為A。
20有如下語句序列:
Char str[10];Cin>>str;
當從鍵盤輸入“I love this game”時,str中的字符串是( )。
A.”I love this game”B.”I love thi”C.”I love”D.”I”
參考答案:D
參考解析:cin是c++預定義的標準輸入流對象,cin用來接收字符串時,遇“空格”、“TAB”、“回車”時都會結束。所以本題答案為D。
21繼承機制的作用是( )。
A.信息隱藏B.數據封裝C.定義新類D.數據抽象
參考答案:C
參考解析:數據封裝就是數據抽象,即信息隱藏;而繼承是實現程序復用的基礎。
)22模板對類型的參數化提供了很好的支持,因此( )。
A.類模板的主要作用是生成抽象類
B.類模板實例化時,編譯器將根據給出的模板實參生成一個類
C.在類模板中的數據成員都具有同樣類型
D.類模板中的成員函數都沒有返回值
參考答案:B
參考解析:本題考查類模板的基本概念。類模板的定義和聲明都以關鍵字template開頭。關鍵字后面是一個用逗號分隔的模板參數表,用尖括號“<>”括起來,這個表被稱為類模板的模板參數表。類模板是類的抽象,類是類模板的實例。類模板使類中的一些數據成員和成員函數的參數或返回值可以取任意的數據類型。所以B選項正確。
23if語句的語法格式可描述為:
格式l:if(<條件>)<語句>
或
格式2:if(<條件>)<語句l>
else<語句2>
關于上面的語法格式,下列表述中錯誤的是( )。
A.<條件>部分可以是一個if語句,例如if(if(a==0)…)…
B.<語句>部分可以是一個if語句,例如if(…)if(…)…
C.如果在<條件>前加上邏輯非運算符!并交換<語句l>和<語句2>的位置,語句功能不變
D.<語句>部分可以是一個循環語句,例如if(…)while(…)…
參考答案:A
參考解析:本題考查if語句,if語句的條件部分不能嵌套if語句,所以A選項錯誤;B選項就是if語句嵌套;C選項其實就是將判斷條件顛倒,然后執行語句也顛倒,所以效果一樣;D選項也正確。
24下面的程序中,錯誤的語句是( )。
、#inClude
、趘oid main()
、踸
、 int *p=new int[1];
、郟=9;
⑥cout<<.*P<
、遜elete[]p;
、鄛
A.④B.⑤C.⑥D.⑦
參考答案:B
參考解析:本題考查的是指針的使用,P是指向int 型的指針,若想給它指向的元素賦值,應使用*符號,贏接賦值相當于改變了原來P存儲的地址。
25下面有關for循環的正確描述是( )。
A.for循環只能用于循環次數已經確定的情況B.for循環是先執行循環體語句,后判斷表達式C.在for循環中,不能用break語句跳出循環體D.在for循環的循環體語句中,可以包含多條語句,但必須用花括號括起來
參考答案:D
參考解析:選項A中for循環可以用于循環次數不確定的情況;選項8中for循環是先判斷表達式,后執行循環體語句;選項c中for循環可以用break語句跳出循環體,從而接著執行循環體后面的語句。
26下列敘述中正確的是( )。
A.算法就是程序
B.設計算法時只需要考慮數據結構的設計
C.設計算法時只需要考慮結果的可靠性
D.以上三種說法都不對
參考答案:D
參考解析:算法是指解題方案的準確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設計算法時不僅要考慮對數據對象的運算和操作,還要考慮算法的控制結構。
27由于常對象不能被更新,因此( )。
A.通過常對象只能調用它的常成員函數
B.通過常對象只能調用靜態成員函數
C.常對象的成員都是常成員
D.通過常對象可以調用任何不改變對象值的成員函數
參考答案:A
參考解析:本題考查常對象的基本知識,常對象只能調用它的常成員函數,而不能調用非const函數,常對象的成員函數不一定都是常成員函數,只需保證其數據成員是常數據成員即可。所以本題選A。
28有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C.{cout<
~MyClass(){cout<<’B’;}
};
int main(){
MyClass pl,+p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
執行這個程序的輸出結果是( )。
A.ABXB.ABXBC.AXBD.AXBB
參考答案:D
參考解析:構造函數和析構函數的調用順序為先構造的后析構,后構造的先析構。所以本題答案為D。
29有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout<
return U:
}
執行這個程序的輸出結果是( )。
A.33B.38C.83D.88
參考答案:B
參考解析:本題考查常對象、常成員函數及構造函數。常對象只能調用常成員函數,所以本題中,對象a為普通對象,執行a.get()后,會執行默認構造函數,輸出3;對象b為常對象,執行b.get()后,會執行常構造函數,輸出8。
30執行下列語句段后,輸出字符“*”的個數是( )。
for(int i=50;i>1;--i) Cout<<'*':
A.48B.49C.50D.51
參考答案:B
參考解析:本題考查for循環語句,--i表示用之前先減1,那么這個for循環語句只有50到2時才會輸出“*”,所以總共輸出49次。
【最新計算機二級C++上機試題及答案】相關文章:
2016計算機等級考試二級C++上機模擬試題及答案03-08
計算機二級VB上機試題及答案03-14
計算機二級考試C++試題及答案03-27
2016年9月計算機二級C++上機考試沖刺試題及答案03-13
計算機二級C語言考試上機沖刺試題及答案03-03
計算機二級C上機考試試題及答案03-05
計算機等級二級C語言上機模擬試題及答案10-25
2016年計算機二級C++模擬試題及答案03-07