點擊查看:2018年9月計算機二級C++考試考前過關練習題匯總
選擇題
1.在C++語言中函數返回值的類型是由( )決定的。
A.調用該函數時系統臨時
B.return語句中的表達式類型
C.定義該函數時所指定的函數類型
D.調用該函數時的主調函數類型
2.下列描述正確的是( )。
A.表示m>n為true或mn&&m B.switch語句結構中必須有default語句
C.if語句結構中必須有else語句
D.如果至少有一個操作數為true,則包含‖運算符的表達式為true
3.使用ifstream流類定義流對象并打開磁盤文件時,文件的隱含打開方式為( )。
A.ios::in
B.ios::out
C.ios::inlios::out
D.沒有默認
4.下列各類函數中,不是類的成員函數的是( )。
A.構造函數
B.抽象類
C.派生類
D.以上都不對
5.下面關于數組的初始化正確的是( )。
A.charstr[]={’a’,’b’,’e’}
B.charstr[2]={’a’,’b’,’e’)
C.charstr[2][3]={{’a’,’b’},{’C’,’d’},{’e’,’f’}}
D.charstr()={’a’,’b’,’C’}
6.類模板templateclassX{…},其中友元函數f對特定類型T(如int),使函數f(x)成為x模板類的友元,則其說明為( )。
A.friendvoidf();
B.friendvoidf(x);
C.friendvoidA::f();
D.friendvoidC::f(x);
7.類MyClass的定義如下:
classMyClass
{
public:
MyClass(){value=0;}
SetVariable(inti){valtic=i;}
private:
intvalue;
};
MyClass*P,my;p=&my;
則對下列語句序列正確的描述是( )。
A.語句p=&my;是把對象my賦值給指針變量P
B.語句MyClass*P,my;會調用兩次類MyClass的構造函數
C.對語句*P.SetVariable(5)的調用是正確的
D.語句P->SetVariable(5)與語句my.SetVariable(5)等價
8.下面關于break語句的描述中,不正確的是( )。
A.break可以用于循環體內
B.break語句可以在for循環語句中出現多次
C.break語句可以在switch語句中出現多次
D.break語句可用于if條件判斷語句內
9.如果表達式-x/y中的“--”和“/”是作為友元函數重載的運算符,采用運算符函數調用格式,該表達式還可表示為( )。
A.operator/(x.operator--(),y);
B.operator/(operator--(x),y);
C.X.operator--().operator/(y);
D.y.operator/(operator--(x));
10.已知類A有公用數據成員a,并重載了=運算符,且有Aobj2;constA*ptr=newA;,則下列語句錯誤的是( )。
A.ptr->a=100;
B.ptr=&obj2;
C.ptr++;
D.obj2=*ptr;
參考答案:
1.C。【解析】函數類型決定了函數返回值的類型。函數值返回類型可以由編譯器自動完成類型轉換。在函數有返回值的調用中,編譯器將return后面的表達式的類型強制轉換為該函數定義時指定的返回值類型。
2.D。【解析】本題主要考查C++語言的基本語法,選項A中應該為m>n‖m 13.D。【解析】使用ifstream流類定義流對象并打開磁盤文件時,文件沒有默認的打開方式。其中ios::in是為輸入而打開;iso::out是為輸出而打開。
4.C。【解析】構造函數包括默認構造函數和拷貝構造函數等,析構函數和構造函數一樣屬于類的特殊的成員函數。而友元函數則是為了增加類的訪問靈活性而允許其他類的成員函數或全局函數訪問類的內部變量或成員函數的一種機制,其缺點是破壞了類的封裝性。
5.A。【解析】本題考查的是字符數組的初始化。選項B中用三個元素初始化大小為2的數組,越界了;選項C中應該是2行3列的數組,題中使用3行2列初始化;選項D中數組應用方括號。
6.B。【解析】聲明一個函數模板的格式template<模板形參表聲明>函數聲明。調用模板函數時,如果與模板實參中最后的若干個參數有關的信息可以從模板函數的實參中獲得,則相關的模板實參可以省略。
7.D!窘馕觥空Z句p=&my;是把對象my的地址值賦給指針變量P。語句MyClass*P,my;,由于P只是一個指向對象的指針,因此定義指針P不調用構造函數,所以此語句只調用一次構造函數。對成員函數的引用可以通過兩種形式:指針->成員函數(形參表)或者對象名.成員函數名(形參表)。
8.D!窘馕觥勘绢}考查break語句的使用。break可以結束switch語句和for循環語旬,但是不能使用在條件判斷語句內。
9.B!窘馕觥勘绢}考核運算符的重載。假定已經作為某個類的成員函數重載了二元運算符+,且c1、c2都是該類的對象,則c1.operator+(c2)與c1+c2含義相同。如果+作為該類的非成員函數重載,則operator+(c1,c2)與c1+c2含義相同。同理,運算符“/”作為友元函數重載,則(--x)/y與表達式operator/((…x),y)相同。前綴運算符“--”作為友元函數重載,則--x與operator--(x)相同,所以組合起來是operator/(operator--(x),y);,即B選項。
10.A!窘馕觥勘绢}考查const修飾符的作用。注意,const位置不同,其修飾的部分也是不同的。本題中const修飾的是ptr所指的對象本身,所以,ptr可以重新指向新的對象,而ptr->a則無法被更新。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: