




已閱讀5頁,還剩25頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C+練習題(摘自全國計算機等級考試二級真題)一、選擇題(1)對C+編譯器區分重載函數無任何意義的信息是 A)參數類型 B)參數個數 C)返回值類型 D)常成員函數關鍵字coast (2)有如下類定義和變量定義: class A publie: A()data=0; A() int GetData() const return data; void SetData(int n) data=n; private: int data; ; const A a; A b; 下列函數調用中錯誤的是 A)a .GetData(); B)a .SetData(10); C)b .GetData(); D)b .SetData(10); (3)有如下類定義和變量定義: class Parents public: int publicuata; private: int privateData; ; class ChildA: public Parents/*類體略*/; class ChildB: private Parents/*類體略*/); ChildA a; ChildB b; 下列語句中正確的是 A)couta. publicuata; B)couta. privateData; C)coutb. publicuata; D)coutb. privateData;(4)運算符重載時不需要保持的性質是 A)操作數個數 B)操作數類型 C)優先級D)結合性 (5)下列描述中, 不屬于面向對象思想主要特征的是A)封裝性 B)跨平臺性 C)繼承性 D)多態性(6)有如下程序段: int i=4, j=1; int main() int i=8, j=i; couti“, ”jendl; 運行時的輸出結果是 A)4, 4 B)4, 1 C)8, 8 D)8, 1 (7)已知函數fun的原型為int fun(int, int, int);下列重載函數原型中錯誤的是A) char fun(int, int); B) double fun(int, int, double);C) int fun(int, char*); D) float fun(int, int, int);(8)建立一個類對象時, 系統自動調用 A)析構函數 B)構造函數 C)靜態函數 D)友元函數 (9)通過派生類的對象可直接訪問其 A)公有繼承基類的公有成員 B)公有繼承基類的私有成員 C)私有繼承基類的公有成員 D)私有繼承基類的私有成員 (10)己知表達式+a中的“+”是作為成員函數重載的運算符, 則與+a等效的運算符函數調用形式為 A)a .orerator+(1) B)operator+(a) C)operator+(a, l) D)a.operator+( ) (11)在定義一個類模板時, 模板形參表是用一對括號括起來的, 所采用的括號是 A)( ) B) C) D) (12)有如下程序: #include #include using namespace std; class XCD char* a; int b; public: XCD(char* aa, int bb) a=new charstrlen(aa)+1; strcpty(a, aa); b=bb; Char* Geta () return a;) int Getb() return b; ; int main() char *pl=“abcd”, *p2=“weirong”; int dl=6, d2=8; XCD x(pl, dl), y(p2, d2); coutstrlen(x.Geta() + y.Getb() endl; return 0; 運行時的輸出結果是 A)12 B)16 C)14 D)11 (13)有如下程序: #include #include using namespace std; class XCF int a; public: XCF(int aa=0):a (aa)cout“1”; XCF(XCF& x)a=x .a; cout“2”;) XCF() couta; int Geta() return a; ; int main() XCF dl(5), d2 (dl); XCF *pd=new XCF(8); coutGeta(); delete pd; return 0; 運行時的輸出結果是 A)1 2 1 5 5 8 8 B)1 2 1 8 8 5 5 C)1 2 1 8 5 D)1 2 8 5 1 2 (14)已知類MyClass聲明如下: class MyClass int n; public; MyClass(int k):n(k) int getValue()const return n; ; 在下列數組定義中正確的是 A)MyClass x12; B)MyClass x22=new MyClass(1), new MyClass(2); C)MyClass *x32; D)MyClass *x42=MyClass(1), MyClass(2); (15)有如下程序: #include using namespace std; class AA int k; protected: int n; void setK(int k) this-k=k; public: void setN(int n) this-n=n; ; class BB: public AA /*類體略*/; int main() BB x ; x .n=1; /1 x.setN (2); /2 x.k=3; /3 x .setK(4); /4 return 0; 在標注號碼的四條語句中正確的是 A)1 B)2 C)3 D)4 (16)有如下類定義: class XX int xx; public: XX():xx(0) cout A; XX(int n):xx ( n)tout B; ; Class YY: public XX int yy; public: YY(): yy (0) coutyy;YY(int n): XX(n+1), yy(n) coutyy; YY (int m, int n): XX (m), yy(n) coutyy; ; 下列選項中, 輸出結果為A 0的語句是 A)YY y1(0,0); B)YY y2(1); C)YY y3(0); D)YY y4; (17)有如下程序: #include using namespace std; class A public: virtual void f() cout1; void g() cout2; ; class B: public A public: virtual void f() cout3; void g() cout4; ;void show(A &a) a.f(); a.g( ); int main() B b; show(b); return 0; 運行時的輸出結果是 A)1 2 B)3 4 C)1 4 D)3 2 (18)有如下程序: #include using namespace std; class Pair int m; int n; public: Pair(int i, int j):m(i), n(j) bool operator (Pair p) const; /須在類體外給出定義 ; int main() Pair pl(3,4), p2(4,3);p3(4,5); coutp2)P1)p3)p2); return 0; 運算符函數operator的功能是比較兩個Pair對象的大小, 當左邊對象大時, 返回true, 否則返回false。比較規則是首先比較兩對象的m成員, m大者為大;當m相等時比較n, n大者為大。程序輸出0101, 下列對運算符重載函數的正確定義是 A) bool Pair:operator(Pair p)const if (m!=p.m) return mp.m; return np.n; B) bool Pair:operator(Pair p) if (m!=p.m) return mp.m; return np.n; C) bool Pair:operator(Pair p)const if (mp.m) return true; return np.n; D) bool Pair:;operator(Pair p) if (mp.m) return true; return np.n; (19)有如下程序: #include using namespace std; class ONE int c; public: ONE(): c(0)cout1; ONE(int n): c(n)cout2; ; class TWO ONE onel; ONE one2; public: TWO(int m): one2(m) cout3; ; void main() TWO t(4); return 0; 運行時的輸出結果是 A)3 B)2 3 C) 1 2 3 D)2 1 3-(20)有如下兩個類定義class AA;class BBAA v1, *v2;BB v3, *v4;其中有一個成員變量的定義是錯誤的, 這個變量是A)v1B)v2C)v3D)v4(21)有如下類定義:class XXint xdata;public:XX(int n=0) : xdata (n) ;class YY : public XXint ydata;public:YY(int m=0, int n=0) : XX(m), ydata(n) ;YY類的對象包含的數據成員的個數是A)1B)2C)3D)4(22)下列有關運算符函數的描述中, 錯誤的是A)運算符函數的名稱總是以operator為前綴B)運算符函數的參數可以是對象C)運算符函數只能定義為類的成員函數D)在表達式中使用重載的運算符相當于調用運算符重載函數(23)下列關于模板形參的描述中, 錯誤的是A)模板形參表必須在關鍵字template之后B)模板形參表必須用括弧( )括起來C)可以用class修飾模板形參D)可以用typename修飾模板形參(20)已知數組arr的定義如下:int arr5 = 1, 2, 3, 4, 5;下列語句中輸出結果不是2的是A)cout *arr+1 endl;B)cout *(arr+1)endl;C)cout arr1 endl; D)cout *arr endl;(21)Sample是一個類, 執行下面語句后, 調用Sample類的構造函數的次數是Sample a2, *p = new Sample;A)0B)1C)2D)3(22)下列關于虛基類的描述中, 錯誤的是A)使用虛基類可以消除由多繼承產生的二義性B)構造派生類對象時, 虛基類的構造函數只被調用一次C)聲明“class B : virtual public A”說明類B為虛基類D)建立派生類對象時, 首先調用虛基類的構造函數(23)將運算符重載為類成員函數時, 其參數表中沒有參數, 說明該運算是A)不合法的運算符B)一元運算符C)無操作數的運算符D)二元運算符(24)有如下模板聲明:template classA;下列聲明中, 與上述聲明不等價的是A)template classA;B)template classA;C)template classA;D)template class A;(25)有如下程序:#include using namespace std;class Toypublic:Toy(char* cn) strcpy (name, cn); count+;Toy() count-; char* GetName() return name; static int getCount() return count; private:char name10;static int count;int Toy:count=0;int main()Toy t1(“Snoopy”), t2(“Mickey”), t3(“Barbie”);coutt1.getCount()endl;return 0;運行時的輸出結果是A)1B)2C)3D)運行時出錯(26)有如下程序#include using namespace std;class A public:A(int i): r1(i) void print() coutEr1 -;void print() const coutCr1*r1-;private:int r1;int main()A a1(2); const A a2(4);a1.print(); a2.print();return 0;運行時的輸出結果是A)運行時出錯B)E2-C16-C)C4-C16-D)E2-E4-(27)有如下程序:#includeusing namespace std;class Namechar name20;public:Name()strcpy(name,”); cout?;Name(char *fname)strcpy(name,fname); cout?;int main()Name names3=Name(“張三”), Name(“李四”);Return 0;運行此程序輸出符號?的個數是A)0B)1C)2D)3 來源:考試大-計算(28)有如下程序:#includeusing namespace std;class AApublic:AA() cout1; ;class BB: public AAint k;public:BB(): k(0) cout2; BB(int n): k(n) cout3;int main()BB b(4), c;return 0;運行時的輸出結果是A)1 3 1 2D)1 3 2C)3 2D)1 4 1 2 (29)有如下程序:#includeusing namespace std;class C1public:C1() cout1; ;Class C2: public C1public:C2() cout2; ;int main()C2 cb2;C1 *cb1;return 0;運行時的輸出結果是A)1 2 1B)2 1C)2 1 1D)1 2(30)有如下程序#includeusing namespace std;class Publication /出版物類char name30;public:Publication(char *name=”未知名稱”) strcpy(this-name, name);const char * getName()const return name; virtual const char * getType()const return “未知類型”;class Book: public Publication /書類public:Book(char *name): Publication(name) virtual const char * getType()const return “書“;void showPublication( Publication &p) coutp.getType()”:”p.getName()endl; void main()Book book(“精彩人生”);showPublication(book);運行時的輸出結果是A)未知類型:未知名稱B)未知類型:精彩人生C)書:未知名稱D)書:精彩人生(31)有如下類定義class A char *a;public:A(): a(0)A(char *aa) /把aa所指字符串拷貝到a所指向的存儲空間a= ;strcpy(a, aa);strcpy(a, aa);A() delete a;橫線處應填寫的表達式是A)new charstrlen(aa)+1B)charstrlen(aa)+1C)charstrlen(aa)D)new charsizeof(aa)-1-(32)下列關于函數的描述中, 錯誤的是A)函數可以沒有返回值B)函數可以沒有參數C)函數可以是一個類的成員D)函數不能被定義為模板(33)若MyClass是一個類名, 且有如下語句序列MyClass c1, *c2;MyClass *c3=new MyClass;MyClass &c4=c1;上面的語句序列所定義的類對象的個數是A)1B)2C)3D)4(34)下列關于繼承方式的描述中, 錯誤的是A)如果不顯式地指定繼承方式, 缺省的繼承方式是私有(private)B)采用公有繼承方式時, 基類中的公有成員在派生類中仍然是公有成員C)采用保護繼承方式時, 基類中的保護成員在派生類中仍然是保護成員D)采用私有繼承方式時, 基類中的私有成員在派生類中仍然是私有成員(35)將前綴運算符“-”重載為非成員函數, 下列原型中, 能正確用于類中說明的是A)Decr& operator -(int); B)Decr operator -( Decr&, int);C)friend Decr& operator -(Decr&);D)friend Decr operator -(Decr&, int);(36)在C+中, cin是個A)類B)對象C)模板D)函數(37)下列敘述中, 錯誤的是A)false是一個邏輯型常量B)b是一個字符型常量C)365是一個int常量D)3.1415926是一個double常量(38)關于函數中的, 下列表述中錯誤的是A)中有可能包含關鍵字intB)中有可能包含自定義標識符C)中有可能包含字符* D)中可能包含(39)要定義一個引用變量p, 使之引用類MyClass的一個對象, 正確的定義語句是A)MyClass p=MyClass; B)MyClass p=new MyClass;C)MyClass &p=new MyClass;D) MyClass a, &p=a;(40)有如下兩個類定義class XXprivate:double x1;protected:double x2;public:double x3;class YY: protected XXprivate:double y1;protected:double y2;public:double y3;在類YY中保護成員變量的個數是A)1B)2C)3D)4(41)下列關于運算符重載的描述中, 正確的是A)可以通過運算符重載在C+中創建新的運算符B)賦值運算符只能重載為成員函數C)運算符函數重載為類的成員函數時, 第一操作數是該類對象D)重載類型轉換運算符時不需要聲明返回類型(42)下列關于類模板的描述中, 錯誤的是A)類模板的成員函數都是模板函數B)可以為類模板參數設置默認值(template )C)類模板描述了一組類D)類模板中只允許有一個類型參數(43)下列程序段中包含4個函數, 其中具有隱含this指針的是int fun1();class Testpublic:int fun2();friend int fun3();static int fun4();A)fun1B)fun2C)fun3D)fun4(44)有如下程序#include using namespace std;class Testpublic:Test() Test(const Test &t) cout1;Test fun(Test &u) Test t=u; return t; int main() Test x, y; x=fun(y); return 0; 運行這個程序的輸出結果是A)無輸出B)1C)1 1D)1 1 1(45)有如下程序#include using namespace std;class Apublic:A(int i=0): r1(i) void print() coutEr1-; void print() const coutCr1*r1-; void print(int x) cout Pr1*r1*r1-; private:int r1;int main() A a1;const A a2(4);a1.print(2);a2.print();return 0;運行時的輸出結果是A)P8-E4B)P8-C16-C)P0-E4-D)P0-C16-(46)下列代碼聲明了3個類class Person;class Student: public Person;class Undergraduate: Student;下列關于這些類之間關系的描述中, 錯誤的是A)類Person是類Undergraduate的基類B)類Undergraduate從類Student公有繼承C)類Student是類Person的派生類 D)類Undergraduate是類Person的派生類(47)有如下程序#include using namespace std;Class Basepublic:Base(int x=0): valB(x) cout valB;Base() cout valB;private:int valB;class Derived: public Base public:Derived(int x=0,int y=0): Base(x), valD(y) cout valD;Derived() cout valD;private:int valD;void main()Derived obj12(2, 3);運行時的輸出結果是A)2 3 3 2B)2 3 2 3C)3 2 3 2D)3 2 2 3(48)下面是類Shape的定義:class Shapepublic:virtual void Draw()=0;下列關于Shape類的描述中, 正確的是A)類Shape是虛基類B)類Shape是抽象類C)類Shape中的Draw函數聲明有誤D)語句“Shape s;”能夠建立Shape的一個對象s(49)將運算符“+”重載為非成員函數, 下列原型聲明中, 錯誤的是A)MyClock operator + (MyClock, long);B)MyClock operator + (MyClock, MyClock);C)MyClock operator + (long, long);D)MyClock operator + (long, MyClock);(50)有如下程序:#include using namespace std;class Bpublic:B(int xx): x(xx) + count; x+=10;virtual void show() constcout count _xendl;protected:static int count;private:int x;class D: public B public:D(int xx, int yy): B(xx), y(yy)+count; y+=100;virtual void show() constcout count _yshow();delete ptr;return 0;運行時的輸出結果是A)1_120B)2_120C)1_20D)2_20-(51)下列關于函數參數的敘述中, 正確的是A)在函數原型中不必聲明形參類型B)函數的實參和形參共享內存空間C)函數形參的生存期與整個程序的運行期相同D)函數的形參在函數被調用時獲得初始值(52)下列關于對象初始化的敘述中, 正確的是A)定義對象的時候不能對對象進行初始化B)定義對象之后可以顯式地調用構造函數進行初始化C)定義對象時將自動調用構造函數進行初始化D)在一個類中必須顯式地定義構造函數實現初始化(53)下列關于基類和派生類關系的敘述中, 正確的是A)每個類最多只能有一個直接基類B)派生類中的成員可以訪問基類中的任何成員C)基類的構造函數必須在派生類的構造函數體中調用D)派生類除了繼承基類的成員, 還可以定義新的成員(54)下列關于模板的敘述中, 正確的是A)如果一個類中存在純虛函數, 這個類就是類模板B)函數模板不能有形式參數表C)類模板是一種參數化類型的類, 是類的生成器D)類模板中不能包含構造函數(55)下列關于C+預定義流對象的敘述中, 正確的是A)cin是C+預定義的標準輸入流對象B)cin是C+預定義的標準輸入流類C)cout是C+預定義的標準輸入流對象D)cout是C+預定義的標準輸入流類(56)下列函數原型聲明中, 錯誤的是A)int fnction(int m, int n);B)int function(int, int);C)int function(int m=3, int n);D)int function(int &m, int&n);(57)若MyClass為一個類, 執行“MyClass a4, *p5;”時會自動調用該類構造函數的次數是A)2 B)5 C)4 D)9(58)若在表達式y/x中, “”是作為成員函數重載的運算符, 則該表達式還可以表示為A)x.Operator/(y)B)operator/(x, y)C)y.operator/(x)D)operator/(y, x)(59)有函數模板聲明和一些變量定義如下:template class Tl, class T2, class T3T1 sum(T2 a, T3 b) return T1(a+b); double d1, d2;則下列調用中, 錯誤的是A)sum(d1, d2);B)sum(d1, d2);C)sum(d1, d2);D)sum(d1, d2);(因為無法推導T1的類型)(60)有如下語句序列:char str10;cinstr;當從鍵盤輸入“I love this game”時, str中的字符串是A)I love this gameB)I love thiC)I love thD)I(61)有如下程序:#include#includeusing std:cout;class Pointpublic:friend double distance(const Point &p); /p距原點的距離Point(int xx=0, int yy=0): x (xx), y(yy) /private:int x, y;double distance(const Point &p) /return sqrt(double(p.x*p.x+p.y*p.y);void main()Point p1(3, 4);coutdistance(p1); /下列敘述中正確的是A)程序編譯正確 B)程序編譯時語句出錯C)程序編譯時語句出錯D)程序編譯時語句出錯(62)有如下程序:#includeusing namespace std;class CDpublic:CD()coutC;private:char name80;int main()CD a, *b, d2;return 0;運行時的輸出結果是A) C C C C B) C C C C) C C D) C-(63)某類中有一個無參且無返回值的常成員函數Show, 則正確的Show函數原型是A)const void Show(); B)void const Show();C)void Show()const; D)void Show(const);(64)若已定義了類Vehicle, 則下列派生類定義中, 錯誤的是A)class Car:Vehicle*類體略*;B)class Car:public Car*類體略*;C)class Car:public Vehicle*類體略*;D)class Car:virtual public Vehicle*類體略*;(65)有如下程序:#includeusing namespace std;class Musicpublic:void setTitle(char*str)strcpy(title, str);protected:char type10;private:char title20;class Jazz:public Musicpublic:void set(char* str)strcpy(type, Jazz); /strcpy(title, str); /;下列敘述中正確的是A)程序編譯正確一 B)程序編譯時語句出錯C)程序編譯時語句出錯 D)程序編譯時語句和都出錯(66)有如下程序:#includeusing namespace std;class Instrumentpublic:virtual void Display()=0;class Piano:public Instrumentpublic:void Display()*函數體程序略*;int main()Instrument s;Instrument * p=0;/;return 0;下列敘述中正確的是A)語句“Insturment *p=0;”編譯時出錯 B)語句“Instrument s;”編譯時出錯C)類Piano中的Display函數不是虛函數D)類Instrumen不是一個虛基類(67)有類定義如下:class Type public:Type (int i=0) ;Type operator -(int);friend Type operator + (Type, Type );private:int val;若有對象定義Type c1; 則下列語句序列中, 錯誤的是A)Type(3)+c1; B)cl+Type(3);C)3-cl; D)c1-3;-(68)為了提高函數調用的實際運行速度, 可以將較簡單的函數定義為A)內聯函數 B)重載函數 C)遞歸函數D)函數模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漁業養殖技術交流及產品銷售合同
- 農業種植園區設施建設及維護合同
- 傳媒行業媒體曝光及社會影響證明書(5篇)
- 網絡游戲社區管理與維護方案
- 網絡信息安全與數據保護策略及實施方案
- 特色養殖產業發展戰略合作合同
- 品味建筑之美2025年考試試題及答案
- 2025屆中考英語復習第一篇語言基礎知識第1課七上Units1-5課后練習
- 市政學學科發展簡史試題及答案
- 行政管理視角下市政學的理論評估試題及答案
- 歸檔文件目錄
- 2022年四川省綿陽市中考英語試題及參考答案
- 防疫小組人員名單
- 眼部健康檢測與分析課件
- 偏心塊振動式土壤夯實機的結構設計說明
- 專業碩士學位論文修改報告(二)
- 蘇州市建設工程造價計價解釋
- 主題班會《堅定信念--放飛理想》
- 煤礦機電設備春季預防性檢修計劃
- S771(一) 水力循環澄清池
- 高密度電法探測及數據處理解釋--答辯
評論
0/150
提交評論