《面向對象程序設計2261》22春在線作業(yè)2-00001
試卷總分:100 得分:100
一、單選題 (共 30 道試題,共 60 分)
1.兩個指針變量不可以()
A.相加
B.比較
C.相減
D.指向同一地址
2.有如下類定義: class MyClass{ int value; public: MyClass(int n): value (n) {} int gerValue()const{ return value;} }; 則類 MyClass 的構造函數的個數是 ( )
A.1個
B.2個
C.3個
D.4個
3.以下對二維數組a的正確說明是:()
A.inta[3][];
B.floata(3,4);
C.doublea[1][4];
D.floata(3)(4);
4.假定a為一個短整型(shortint)數組名,則元素a[8]的地址為()
A.a+4
B.a+8
C.a+16
D.a+32
5.若有定義:intaa[8];則以下表達式中不能代表數組元aa[1]的地址的是()
A.&aa[0]+1
B.&aa[1]
C.&aa[0]++
D.aa+1
6.如果短整型的長度是2字節(jié),有一個短整型指針p的值是0xFFED1200,那么p+1的值為()
A.0xFFED1201
B.0xFFED1202
C.0xFFED1203
D.0xFFED1204
7.數組名作為實參傳遞給形參時,數組名被處理為該數組的()
A.長度
B.元素個數
C.首地址
D.各元素的值
8.已知Value是一個類,Value是Value的一個對象。下列以非成員函數形式重載的運算符函數原形中,正確的是()
A.Valueoperator+(Valuev,inti);
B.Valueoperator+(Valuev=value,inti);
C.Valueoperator+(Valuevinti=0);
D.Valueoperator+(Valuev=value,inti=0);
9.如果有如下定義:constchar*str="OK";那么,sizeof(str)的值應該是()
A.1
B.2
C.3
D.4
10.下列哪個是C++語言的有效標識符?()
A._No1
B.No、1
C.12345
D.int
11.如果定義了一個類myclass,則為myclass類對象以成員函數形式重載后++運算符的聲明應該為()
A.myclassoperator++();
B.myclass& operator++();
C.myclassoperator++(int);
D.myclass& operator++(int);
12.二叉查找樹按()遍歷時訪問到節(jié)點的數據是排好序的
A.前序
B.中序
C.后序
D.層次
13.十進制數127轉換成二進制數是()
A.11111111
B.01111111
C.10000000
D.11111110
14.若k為整形,則while循環(huán)執(zhí)行( )次。 k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”);
A.10
B.9
C.0
D.1
15.執(zhí)行下列語句段后,輸出字符“*”的個數是()for(inti=50;i>1;I-=2)cout<<~*~;
A.24
B.25
C.26
D.50
16.下列排序算法中,平均效率最低的排序算法是()
A.插入法
B.冒泡法
C.選擇法
D.快速排序法
17.在下列關鍵字中,不能用來表示繼承方式的是()
A.private
B.static
C.public
D.protected
18.如果在try塊中用throw"error";語句拋出一個異常,則參數類型是()的catch塊能夠捕獲這個異常。
A.char*
B.constchar*
C.Char
D.constchar
19.當需要使用istrstream流類定義一個流類對象并聯(lián)系一個字符串時,應在文件開始使用#include命令,使之包含()文件
A.iostream、h
B.iomanip、h
C.fstream、h
D.ststreh
20.下列語句分別是不同程序中的第一個輸入輸出語句,若去掉其中的“<<left”,輸出效果將發(fā)生變化的是()
A.cout<<left<<setfill(~*~)<<357;
B.cout<<left<<setw(5)<<357;
C.cout<<left<<setw(5)<<"ABCDE";
D.cout<<left<<"ABCDE";
21.下面是一個模板聲明的開始部分: templute<typename T> double __ 由此可知 ( )
A.這可能是一個函數模板的聲明
B.這可能是一個類模板的聲明
C.這既可能是一個函數模板的聲明,也可能是一個類模板的聲明
D.這肯定是一個錯誤的模板聲明
22.多重繼承時,如果派生類的兩個父類有一個共同的虛基類,那么虛基類的初始化參數由()的構造函數來傳遞
A.第一個父類
B.第二個父類
C.派生類
D.以上都不是
23.在每個C++程序中都必須包含有這樣一個函數,該函數的名稱為()
A.main
B.MAIN
C.name
D.function
24.有如下類和對象的定義: class Constants{ public: static double getPI(){return 3.1416;} }; Constants constants; 下列各組語句中,能輸出 3.1416 的是 ( )
A.cout<<constants->getPI();和cout<<Constants::gerPI();
B.cout<<constants.getPI();和cout<<Constants.getPI();
C.cout<<constants->getPI();和cout<<Constants->getPI();
D.cout<<constants.getPI();和cout<<Constants::getPI();
25.下面函數調用語句含有實參的個數為: ( ) func((exp1,exp2),(exp3,exp4,exp5))
A.1
B.2
C.4
D.5
26.父類和子類各自定義一個成員函數,函數名相同,參數表不同,那么()
A.在子類中這兩個函數構成重載關系
B.子類不會繼承父類的這個函數
C.子類中的函數會覆蓋父類中的函數
D.編譯時會發(fā)生錯誤
27.C++異常處理機制中沒有()
A.try
B.throw
C.catch
D.finally
28.有如下 4 個語句: ① cout<<~A~<<setfill(~*~)<<left<<setw(7)<<~B~<<endl; ② cout<<setfill(~*~)<<left<<setw(7)<<~A~<<~B~<<endl; ③ cout<<~A~<<serfill(~*~)<<right<<setw(7)<<~B~<<endl; ④ cout<<setfill(~*~)<<right<<setw(7)<<~A~<<~B~<<endl; 其中能顯示 A******B 的是
A.①和③
B.①和④
C.②和③
D.②和④
29.C++函數的聲明和定義可以分開,函數聲明不需要()
A.返回類型
B.函數名
C.參數表
D.函數體
30.多態(tài)性是通過()實現的
A.構造函數
B.析構函數
C.虛函數
D.函數重載
二、多選題 (共 5 道試題,共 20 分)
31.類成員的訪問屬性可以是()
A.public
B.protected
C.private
D.default
32.面向對象的編程方法的主要特征包括()
A.封裝
B.繼承
C.多態(tài)
D.消息
33.設有定義語句: int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次輸出x數組6個元素中的值,下列選項中能完成次操作的語句有_( )、
A.for(i=0;i<6;i++)printf(“%2d”,*(p++));
B.for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C.for(i=0;i<6;i++)printf(“%2d”,*p++);
D.for(i=0;i<6;i++)printf(“%2d”,(*p)++);
34.for語句的格式為for(表達式1;表達式2;表達式3),其中可以省略的是()
A.兩個分號
B.表達式1
C.表達式2
D.表達式3
35.兩個同名函數構成重載關系,只要()不同
A.返回類型
B.參數個數
C.參數類型
D.函數頭后有無const
三、判斷題 (共 5 道試題,共 20 分)
36.邏輯運算符兩側運算對象的數據類型只能是0或1。()
37.C++語言是從早期的C語言逐漸發(fā)展演變而來的,與C語言相比,它在求解問題方法上進行的最大改進是面向過程。()
38._int可以定義為用戶標識符。()
39.宏名必須用大寫字母表示。()
40.C++語言的跳轉語句中,break語句只應用于循環(huán)體中。()