面向?qū)ο驝++復習題_第1頁
面向?qū)ο驝++復習題_第2頁
面向?qū)ο驝++復習題_第3頁
面向?qū)ο驝++復習題_第4頁
面向?qū)ο驝++復習題_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

一、單選題(每小題2分,共30分)1.C++源程序文件的缺省擴展名為(A)。A.cppB.exeC.objD.lik2.設”inta=12;”,則執(zhí)行完語句”a+=a*a;”后,a的值是()。A.12B.144C.1563.設”inta=15,b=26;”,則”cout<<(a,b);”的輸出結果是()。A.15B.26,154.字符串”a+b=12\n”的長度為()。A.6B.7C.85.假定下列x和y均為int型變量,則不正確的賦值為()。A.x+=y++B.x++=y++C.x=++yD.++x=++y6.下列的符號常量定義中,錯誤的定義是()。A.constM=10;B.constintM=20;C.constcharch;D.constboolmark=true;7.下列()的調(diào)用方式是引用調(diào)用。A.形參和實參都是變量B.形參是指針,實參是地址值C.形參是引用,實參是變量D.形參是變量,實參是地址值8.采用重載函數(shù)的目的是()。A.實現(xiàn)共享B.減少空間C.提高速度D.使用方便,提高可讀性9.在一個類的定義中,包含有()成員的定義。A.數(shù)據(jù)B.函數(shù)C.數(shù)據(jù)和函數(shù)D.數(shù)據(jù)或函數(shù)10.在類作用域中能夠通過直接使用該類的()成員名進行訪問。A.私有B.公用C.保護D.任何11.在關鍵字public后面定義的成員為類的()成員。A.私有B.公用C.保護D.任何12.在關鍵字private后面定義的成員為類的()成員。A.私有B.公用C.保護D.任何13.類的構造函數(shù)是在定義該類的一個()時被自動調(diào)用執(zhí)行的。A.成員函數(shù)B.數(shù)據(jù)成員C.對象D.友元函數(shù)14.類的析構函數(shù)是一個對象被()時自動調(diào)用的。A.建立B.撤消C.賦值D.引用15.對類對象成員的初始化是通過構造函數(shù)中給出的()實現(xiàn)的。A.函數(shù)體B.初始化表C.參數(shù)表D.初始化表或函數(shù)體16.程序中主函數(shù)的名字為()。A.mainB.MAINC.MainD.任意標識符17.設x是一個bool型的邏輯量,y的值為10,則表達式x&&y的值為()。A.1B.0C.與x值相同18.假定下列x和y均為int型變量,則不正確的賦值為()。A.x+=y++B.x++=y++C.x=++yD.++x=++y19.函數(shù)調(diào)用不可以()。A.出現(xiàn)在一個表達式中B.出現(xiàn)在執(zhí)行語句中C.作為一個函數(shù)的實參D.作為一個函數(shù)的形參20.采用重載函數(shù)的目的是()。A.實現(xiàn)共享B.減少空間C.提高速度D.使用方便,提高可讀性21.在一個類的定義中,包含有()成員的定義。A.數(shù)據(jù)B.函數(shù)C.數(shù)據(jù)和函數(shù)D.數(shù)據(jù)或函數(shù)22.在類作用域中能夠通過直接使用該類的()成員名進行訪問。A.私有B.公用C.保護D.任何23.在關鍵字private后面定義的成員為類的()成員。A.私有B.公用C.保護D.任何24.當一個類對象離開它的作用域時,系統(tǒng)自動調(diào)用該類的()。A.無參構造函數(shù)B.帶參構造函數(shù)C.拷貝構造函數(shù)D.析構函數(shù)25.類的析構函數(shù)可以帶有()個參數(shù)。A.0B.1C.2D.任意26.靜態(tài)數(shù)據(jù)成員的初始化是在()中進行的。A.構造函數(shù)B.任何成員函數(shù)C.所屬類D.全局區(qū)27.當將一個類A或函數(shù)f()說明為另一個類B的友元后,類A或函數(shù)f()能夠直接訪問類B的()。A.只能是公有成員B.只能是保護成員C.只能是除私有成員之外的任何成員D.具有任何權限的成員28.在成員函數(shù)中進行雙目運算符重載時,其參數(shù)表中應帶有()個參數(shù)。A.0B.1C.229.派生類的成員函數(shù)可以直接訪問基類的()成員。A.所有B.公有和保護C.保護和私有D.私有30.派生類的對象對其基類中()可直接訪問。A.公有繼承的公有成員B.公有繼承的私有成員C.公有繼承的保護成員D.私有繼承的公有成員31.下面對于指針的描述不正確的是()。A.指針是地址變量B.指針不能用除0以外的常量賦值C.兩個指針變量的加減法無意義D.指針指向不同基類型的變量長度不同32.下面對于析構函數(shù)的描述中不正確的是()。A.析構函數(shù)是內(nèi)置函數(shù)B.析構函數(shù)與類名相同C.析構函數(shù)不能有參數(shù)D.析函數(shù)在對象撤銷時自動執(zhí)行33.下列指針用法中錯誤的是()。A.inti;int*ptr=&i; B.inti;int*ptr;i=*ptr;C.int*ptr;ptr=0; D.inti=5;int*ptr;*ptr=i;

34.派生類的對象對它的基類成員中什么是可訪問的()?A.公有繼承的公有成員B.公有繼承的私有成員C.公有繼承的保護成員D.私有繼承的公有成員35.在()情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句C.需要加快程序的執(zhí)行速度D.函數(shù)代碼多、不常調(diào)用36.對基類和派生類的關系描述中,錯誤的是()A.派生類是基類的具體化B.基類繼承了派生類的屬性C.派生類是基類定義的延續(xù)D.派生類是基類的特殊化37.如果類A被說明成類B的友元,則()。A.類A的成員即類B的成員B.類B的成員即類A的成員C.類A的成員函數(shù)不得訪問類B的成員D.類B不一定是類A的友元38.定義析構函數(shù)時,應該注意()。A.其名與類名完全相同B.返回類型是void類型C.無形參,也不可重載D.函數(shù)體中必須有delete語句39.C++語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于()A.全局變量B.局部變量C.靜態(tài)變量D.函數(shù)40.在公有繼承的情況下,基類成員在派生類中的訪問權限()A.受限制 B.保持不變C.受保護 D.不受保護41.設inta=3,b=4,c=5;表達式(a+b)>c&&b==c的值是()。A.2B.-1C.0D.142.下列標識符中,不合法的用戶標識符為()。A.a#bB._intC.a_10D.PAd43..繼承機制的作用是()A.信息隱藏 B.數(shù)據(jù)封裝C.定義新類 D.數(shù)據(jù)抽象44.每個類()構造函數(shù)。A.只能有一個B.只可有公有的C.可以有多個D.只可有缺省的45.通常,拷貝構造函數(shù)的參數(shù)是()A.某個對象名 B.某個對象的成員名C.某個對象的引用名 D.某個對象的指針名46.重載賦值操作符時,應聲明為()函數(shù)。A.友元B.虛C.成員D.多態(tài)47.在私有繼承的情況下,基類成員在派生類中的訪問權限()。A.受限制B.保持不變C.受保護D.不受保護48.構造函數(shù)不具備的特征的是()A.構造函數(shù)的函數(shù)名與類名相同 B.構造函數(shù)可以重載C.構造函數(shù)可以設置默認參數(shù) D.構造函數(shù)必須指定類型說明49..一個函數(shù)功能不太復雜,但要求被頻繁調(diào)用,選用()A.內(nèi)聯(lián)函數(shù) B.重載函數(shù)C.遞歸函數(shù) D.嵌套函數(shù)50.在C++程序中,對象之間的相互通信通過()A.繼承實現(xiàn)B.調(diào)用成員函數(shù)實現(xiàn)C.封裝實現(xiàn)D.函數(shù)重載實現(xiàn)二、填空題(每題2分,共20分)1.

定義一個函數(shù)模板要用到的第一個修飾符是______template_______。2.

在函數(shù)模板的參數(shù)中,用class修飾的參數(shù)稱為_____虛擬類型(或類型)_____參數(shù)。3.

對象將其大部分實現(xiàn)細節(jié)隱藏起來,這種機制稱為_____封裝______。4.

復雜對象可以由簡單對象構成,這種現(xiàn)象稱為_____聚合_____。5.

如果一個派生類的基類不止一個,則這種繼承稱為______多繼承(或多重繼承)______。6.

C++支持兩種多態(tài)性:____編譯_____時的多態(tài)性和_____運行______時的多態(tài)性。7.對類中對象成員的初始化是通過在構造函數(shù)中給出的_______初始化表_______來實現(xiàn)的。8.

靜態(tài)數(shù)據(jù)成員必須在所有函數(shù)的定義體外進行_____初始化_____。9.

重載運算符時,該運算符的_____優(yōu)先級_____、結合性以及操作符的個數(shù)不允許改變。10.

除了_____賦值_____運算符外,其他重載的運算符都可以被派生類繼承。11.

一個函數(shù)的函數(shù)體就是一條_____復合____語句。12.一個函數(shù)定義由___函數(shù)頭_____和____函數(shù)體____兩部分組成。13.

在函數(shù)模板的參數(shù)中,用class修飾的參數(shù)稱為____虛擬類型(或類型)______參數(shù)。14.

對象將其大部分實現(xiàn)細節(jié)隱藏起來,這種機制稱為_____封裝_____。15.

基類和派生類的關系稱為_____繼承_____。16.

如果一個派生類的基類不止一個,則這種繼承稱為______多繼承(或多重繼承)______。17.

如果一個派生類只有一個唯一的基類,則這樣的繼承關系稱為____單繼承______。18.

C++支持兩種多態(tài)性:_____編譯____時的多態(tài)性和_____運行_____時的多態(tài)性。19.

靜態(tài)數(shù)據(jù)成員必須在所有函數(shù)的定義體外進行_____初始化_____。20.

除了_____賦值_____運算符外,其他重載的運算符都可以被派生類繼承。21.在派生類中實現(xiàn)基類成員的初始化,需要由派生類的構造函數(shù)調(diào)用___基類的構造函數(shù)______________來完成。22.當建立__類對象時_____,程序自動調(diào)用該類的構造函數(shù)。23.定義重載函數(shù)時,應在_函數(shù)的參數(shù)個數(shù)、參數(shù)類型和返回值_____上有所不同。24.類是用戶定義的類型,具有類類型的變量稱作__對象_____。25.當一個成員函數(shù)被調(diào)用時,該成員函數(shù)的___this指針____指向調(diào)用它的對象。26.拷貝函數(shù)通過__構造函數(shù)_____使用引用來初始化創(chuàng)建中的對象。27.如果重載了運算符+,則相應的運算符函數(shù)名是operator+________________。28.在用C++進行程序設計時,最好用_____NEW_____________代替malloc。29..在單繼承和多繼承方式中,面向?qū)ο蟮某绦蛟O計應盡量使用__單____繼承。30.在C++中,訪問一個對象的成員所用的運算符是_____.____,訪問一個指針所指向的對象的成員所用的運算符是_____->_____。三、程序填空題(每空3分,共18分)1.對數(shù)組a[n]按升序進行的選擇排序算法voidSelectSort(inta[],___(1)___){ inti,j,k; for(i=1;i<n;i++){//進行n-1次選擇和交換k=i-1; for(j=i;j<n;j++) if(a[j]<a[k])___(2)___; intx=a[i-1];a[i-1]=a[k];___(3)___; }}(1)intn(2)k=j(3)a[k]=x2.classA{inta,b;public:___(1)___//定義構造函數(shù),使參數(shù)aa和bb的默認值為0,//在函數(shù)體中用aa初始化a,用bb初始化b};main(){A*p1,*p2;___(2)___;//調(diào)用無參構造函數(shù)生成由p1指向的動態(tài)對象___(3)___;//調(diào)用帶參構造函數(shù)生成由p2指向的動態(tài)對象,//使a和b成員分別被初始化為4和5}(1)A(intaa=0,intbb=0){a=aa;b=bb;}(2)p1=newA(3)p2=newA(4,5)3.斐波那契數(shù)列的第1和第2個數(shù)分別為0和1,從第三個數(shù)開始,每個數(shù)等于其前兩個數(shù)之和。求斐波那契數(shù)列中的前20個數(shù),要求每行輸出5個數(shù)。#include<iostream.h>voidmain(){intf,f1,f2,i;cout<<”斐波那契數(shù)列:\n”;f1=0;f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i++){f=______(1)______;cout<<setw(6)<<f;if(_____(2)______)cout<<endl;f1=f2;f2=____(3)_______;}cout<<endl;}(1)f1+f2(2)i%5==0(3)f4.classA{inta;public:A(){a=0;}___(1)___{}//定義構造函數(shù),用參數(shù)aa初始化數(shù)據(jù)成員a};main(){___(2)___;//定義類A的指針對象p___(3)__;//用p指向動態(tài)對象并初始化為整數(shù)5}(1)A(intaa):a(aa)(2)A*p(3)p=newA(5)5.在下面程序的底畫線處填上適當?shù)淖志?,使該程序?zhí)行結果為60。#include<iostream.h>classbase{intX;public∶voidinit(intinitX){X=initX;}intGetnum(){returnX+7;}voidmain(){bsaetest;_______test.init(53);_______cout<<test.Getnum();}6.完成下面類中的成員函數(shù)的定義。classtest{private:intnum;floatx;public:test(int,float);test(test&);};test::test(intn,floatf){num=n;x=f;______;test::test(text&t){num=t.num;_______;x=t.x;}7.根據(jù)下面的主程序,完成類說明的最小形式(不要求實現(xiàn)成員函數(shù)的定義)。#include<iostream.h>classbase{private:intx;_______;public:base(intn){x=n;}_______;};voidmain(){basetry(6);}8.一個類的頭文件如下所示,程序,產(chǎn)生對象T,且T.num=10,并使用show()函數(shù)輸出這個對象的值。classtest{private:intnum;public:test(int);voidshow();};test::test(intn){num=n;}test::show(){cout<<num<<endl;}#include<iostream.h>voidmain(){TestT(10);_______;T.show();_______;}9.在下面程序段橫線處填上適當?shù)膬?nèi)容。classA{int*a;________intn;public:A(intnn=0):n(nn){if(n==0)a=0;elsea=newint[n];}~A(){_delete[]a;}______//定義析構函數(shù),釋放動態(tài)數(shù)組空間};10.在下面程序橫線處填上適當內(nèi)容,使程序執(zhí)行結果為:200__100程序如下:#include<iostream.h>template_<classT>_______Tf(Tx,Ty){if(sizeof(T)==___8______)returnx+y;elsereturnx*y;}voidmain(){cout<<f(10,20)<<″--″<<f(45.5,54.5)<<endl;四、閱讀下列程序,寫出運行結果(每小題7分,共21分)1.#include<iostream.h>#include<stdlib.h>voidmain(){ inta[8]={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(x>a[i])max=a[i]; if(x<a[i])min=a[i]; } cout<<"max:"<<max<<endl; cout<<"min:"<<min<<endl;}max:85min:182.#include<iostream.h>voidmain(){ inti,p=1,s=0; intN; cout<<"輸入一個正整數(shù):"; cin>>N; for(i=1;i<=N;i++){ p*=i; s+=p; } cout<<s<<endl;}114138553.#include<iostream.h>classA{inta;public:A(intaa=0):a(aa){cout<<a<<'';}~A(){cout<<"Xxk";}};voidmain(){A*p; Ax[3]={1,2,3},y=4; cout<<endl; p=newA[3];cout<<endl; delete[]p; cout<<endl;}1234000XxkXxkXxk4.#include<iostream.h>#include<stdlib.h>voidmain(){ inta[8]={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(x>a[i])max=a[i]; if(x<a[i])min=a[i]; } cout<<"max:"<<max<<endl; cout<<"min:"<<min<<endl;}max:85min:185.#include<iostream.h>voidmain(){ inta[10]={76,83,54,62,40,75,90,92,77,84}; intb[4]={60,70,90,101}; intc[4]={0}; for(inti=0;i<10;i++){ intj=0; while(a[i]>=b[j])j++; c[j]++; } for(i=0;i<4;i++)cout<<c[i]<<’’; cout<<endl;}21526.#include<iostream.h>#include<string.h>classA{char*a;public:A(char*s){a=newchar[strlen(s)+1];strcpy(a,s);cout<<a<<endl;}~A(){ delete[]a; cout<<"Destructor!"<<endl;}};voidmain(){Ax("xuxiaokai");A*y=newA("weirong");deletey;}xuxiaokaiweirongDestructor!Destructor!7.分析以下程序的執(zhí)行結果#include<iostream.h>classA{public:intn;};classB:publicA{};classC:publicA{};classD:publicB,publicC{intgetn(){returnB::n;}};voidmain(){Dd;d.B::n=10;d.C::n=20;cout<<d.B::n<<","<<d.C::n<<endl;}輸出結果為:10,208.分析以下程序的執(zhí)行結果#include<iostream.h>template<classT>Tmax(Tx,Ty){return(x>y?x:y);}voidmain(){cout<<max(2,5)<<","<<max(3.5,2.8)<<endl;}輸出結果為:5,3.59.分析以下程序的執(zhí)行結果#include<iostream.h>template<classT>classSample{Tn;public:Sample(Ti){n=i;}voidoperator++();voiddisp(){cout<<"n="<<n<<endl;}};template<classT>voidSample<T>::operator++(){n+=1;//不能用n++;因為double型不能用++}voidmain(){Sample<char>s('a');s++;s.disp();}輸出結果為:b10.分析以下程序的執(zhí)行結果#include<iostream.h>classbase{public:base(){cout<<"constructingbaseclass"<<endl;}~base(){cout<<"destructingbaseclass"<<endl;}};classsubs:publicbase{public:subs(){cout<<"constructingsubclass"<<endl;}~subs(){cout<<"destructingsubclass"<<endl;}};voidmain(){subss;}輸出結果為:constructingbaseclassconstructingsubclassdestructingsubclassdestructingbaseclass五、編程題(每小題11分,共11分)1.根據(jù)下面類中拷貝構造函數(shù)的原型寫出它的類外定義。classArray{ int*a;//指向動態(tài)分配的整型數(shù)組空間 intn;//記錄數(shù)組長度public: Array(intaa[],intnn);//構造函數(shù),利用aa數(shù)組長度nn初始化n, //利用aa數(shù)組初始化a所指向的數(shù)組空間 Array(Array&aa);//拷貝構造函數(shù) Array&Give(Array&aa);//實現(xiàn)aa賦值給*this的功能并返回*thisArrayUion(Array&aa);//實現(xiàn)*this和aa中的數(shù)組合并的 //功能,把合并結果存入臨時對象并返回 intLenth(){returnn;}//返回數(shù)組長度 voidPrint(){//輸出數(shù)組 for(inti=0;i<n;i++) cout<<a[i]<<''; cout<<endl; }};Array::Array(Array&aa){ n=aa.n; a=newint[n]; for(inti=0;i<n;i++)a[i]=aa.a[i];}2.根據(jù)下面類中拷貝構造函數(shù)的原型寫出它的類外定義。classStrings{ char*s;//指向動態(tài)分配的字符串數(shù)組空間 intn;//記錄字符串長度public: Strings(char*str);//構造函數(shù),利用str字符串長度初始化n, //利用str字符串初始化s所指的字符串空間 Strings(Strings&str);//拷貝構造函數(shù) Strings&Give(Strings&str);//實現(xiàn)str賦值給*this的功能StringsUion(Strings&str);//實現(xiàn)*this和str中的字符串合并的 //功能,把合并結果存入臨時對象并返回 intLenth(){returnn;}//返回字符串長度 voidPrint(){cout<<s<<endl;}//輸出字符串};Strings::Strings(Strings&str){ n=str.n; s=newchar[n+1]; strcpy(s,str.s);}3.試編寫求n!的遞歸函數(shù),在主函數(shù)中調(diào)用實現(xiàn)求5!并運行(8分)源程序:#include“iostream.h:intf(intn){if(n==1||n==0)return1;elsereturnn*f(n-1);}voidmain(){cout<<f(5)<<endl;}4.分析下列程序可能的輸出結果。#include<iostream.h>template<classT>Tf(T*a,T*b,intn){Ts=(T)0;for(inti=0;i<n;i++)s+=a[i]*b[i];returns;}voidmain()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論