c++期末考試真題(1)_第1頁
c++期末考試真題(1)_第2頁
c++期末考試真題(1)_第3頁
c++期末考試真題(1)_第4頁
c++期末考試真題(1)_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、一、 填空題1. 類是一組具有共同的_屬性_ 特征和行為特征的對象的抽象。2. 在面向對象程序設計中,一個對象向另一個對象發出的請求被稱為_消息_ 。3. 用class作關鍵字進行類聲明,默認的訪問屬性是 private(私有的)_4. 函數名重載是指同一作用域內的多個函數使用相同的函數名,這些同名函數要從參數類型和參數個數_進行區分。5. 構造函數的作用是_在創建對象時對對象進行初始化_ 。6. 多重繼承指一個派生類可以有_多個基類_ .7. 保護繼承下,基類中所有公有成員在派生類中的訪問屬性是_保護的_ 。8. 假定要訪問一個對象指針p所指對象中的b成員,則表示方法_ p。b _.9。 若

2、需要把一個函數“void F();”定義為一個類AB的友元函數,則應在類AB的定義中加入一條語句:friend void F(AB &)_。10. Static成員函數與普通成員函數的區別是_靜態成員函數沒有this指針_.11. 若要在程序文件中進行標準輸入輸出操作,則必須在開始的#include命令中使用_ iostream _頭文件。12. 1。 關鍵字 _C_ 說明對象或變量初始化后不會被修改. a. static b. public c. const d. inline2。 如果調用帶有默認參數的函數時缺少一個參數,則_B_參數就作為這一參數。 a。 第一個 b。 最后一個

3、c. 中間一個 d. 以上都不是3. 成員函數可聲明為靜態的,條件是它不訪問 _C_類成員。 a。 靜態 b。 常數 c. 非靜態 d。 公共4. 內聯函數執行起來比標準函數_B_。a。 更慢 b. 更快 c. 次數更多 d. 以上都不是5。 默認參數的值由_C_提供。 a. 該函數 b. 調用程序 c. 上述二者 d. 以上都不是6。 在 C+ 中,混合類型表達式_A_.a. 允許存在 b。 為一錯誤 c. 從 int 到 float d。 從 float 到 int7。 表達式 long(intVar) 也可表示為 _C_。a。 intvar = long; b。 intVar(long)

4、 c. (long)intVar d. 以上都不是8. 靜態數據成員的生存期_A_.a。 與整個程序相同 b. 不長于類的生存期 c。 取決于創建的對象數 d. 以上都不是9。 要讓一個類中的所有對象具有共同的數據,請使用_C_。a。 常數成員變量 b. 私有數據成員 c. 靜態數據成員 d。 以上都是1、C+是( C )。 A。 面向對象的程序設計語言 B. 面向過程的程序設計語言 C。 既支持面向對象的程序設計又支持面向過程的程序設計的混合型語言 D。 非結構化的程序設計語言2、面向對象程序設計思想的主要特征中不包括( D )。A. 封裝性 B。 多態性 C. 繼承性 D. 功能分解,逐步

5、求精3、若定義:string str; 當語句cinstr; 執行時,從鍵盤輸入:Microsoft Visual Studio 6。0!所得的結果是str=( B )。A. Microsoft Visual Studio 6。0! B. MicrosoftC. Microsoft Visual D。 Microsoft Visual Studio 6.04、考慮下面的函數原型聲明:void testDefaulParam(int a,int b=7,char z=*);下面函數調用中,不合法的是(C )。A。 testDefaulParam(5); B。 testDefaulParam(5,

6、8);C. testDefaulParam(5,'); D。 testDefaulParam(0,0,'*);5、下列語句中,將函數int sum(int x, int y)正確重載的是( C ).A. float sum(int x, int y); B。 int sum(int a, int b);C。 float sum(float x, float y); D. double sum(int y, int x);6、下列表示引用的方法中,( A )是正確的。已知:int a=1000;A. int x=a; B。 char &y; C。 int &z=1

7、000; D. float t=a;7、在一個函數中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用( A )。A. 內聯函數 B。 重載函數 C. 遞歸調用 D。 嵌套調用8、下列有關C+類的說法中,不正確的是( D )。A。 類是一種用戶自定義的數據類型B。 只有類中的成員函數或類的友元函數才能存取類中的私有成員C。 在類中,如果不做特別說明,所有成員的訪問權限均為私有的D。 在類中,如果不做特別說明,所有成員的訪問權限均為公用的9、已知X類,則當程序執行到語句:X array3;時,調用了( D )次構造函數。A。 0 B. 1 C. 2 D. 310、下面說法中,正確

8、的是(B )A。 一個類只能定義一個構造函數,但可以定義多個析構函數B. 一個類只能定義一個析構函數,但可以定義多個構造函數C. 構造函數與析構函數同名,只要名字前加了一個求反符號()D。 構造函數可以指定返回類型,而析構函數不能指定任何返回類型,即使是void類型也不可以12、下面描述中,表達錯誤的是( B ) A. 公用繼承時基類中的public成員在派生類中仍是public的B. 公用繼承時基類中的private成員在派生類中仍是private的C. 公用繼承時基類中的protected成員在派生類中仍是protected的D。 私有繼承時基類中的public成員在派生類中是privat

9、e的14、下面( B )的敘述不符合賦值兼容規則。A。 派生類的對象可以賦值給基類的對象B. 基類的對象可以賦值給派生類的對象C。 派生類的對象可以初始化基類的對象D。 派生類的對象的地址可以賦值給指向基類的指針16、下面關于友元的描述中,錯誤的是( D )。A. 友元函數可以訪問該類的私有數據成員B。 一個類的友元類中的成員函數都是這個類的友元函數C。 友元可以提高程序的運行效率 D。 類與類之間的友元關系可以繼承17、下列關于靜態數據成員的說法,不正確的是( C )。A. 類中定義的公用靜態數據成員,可以通過類的對象來訪問B. 類中定義的所有靜態數據成員,都必須在類外初始化C。 靜態數據成

10、員不是所有對象所共用的D. 普通的成員函數可以直接訪問類中的靜態數據成員18、如果表達式+ik中的“+”和“”都是重載的友元運算符,若采用運算符函數調用格式,則表達式還可以表示為(B ).A。 operator(i.operator+(),k) B。 operator(operator+(i),k)C. i。operator+().operator*(k) D。 k.operator(operator+(i)19、下面對模板的聲明,正確的是( C ).A. template<T B。 templateclass T1, T2>C. templateclass T1, class T

11、2 D。 template<class T1; class T2>20、下列的各類函數中,( C )不是類的成員函數A. 構造函數 B. 析構函數 C. 友元函數 D。 復制構造函數二、填空題(前14個空,每空1分,后3個空,每空2分,共20分)1、類和對象的關系可表述為:類是對象的 抽象 ,而對象則是類的 實例 。2、靜態成員函數沒有隱含的 this指針 ,所以,在C+程序中,靜態成員函數主要用來訪問靜態數據成員,而不訪問非靜態成員。3、在圖1中,A,B,C,D,E,F均是類,其中屬于單繼承的派生類有 E ,屬于多繼承的派生類有 D、F ,類F的基類有 A、B、C、D、E ,類A

12、的派生類有 D、F 。ABCDEF圖1 類的繼承層次圖7、若要把void fun()定義為類A的友元函數,則應在類A的定義中加入語句 friend void fun(Aa) 。8、列出C+中的兩種代碼復用方式: 繼承 和 組合或模板 .9、析構函數的作用是 在對象被系統釋放之前做一些內存清理工作 。10、假定A是一個類名,則該類的拷貝構造函數的原型說明語句為: A(const A&) 。11、后置自增運算符“+”重載為類的成員函數(設類名為A)的形式為: A operator+(int).一、單項選擇題(每小題2分,共40分)1、關于C+與C語言關系的描述中,( D )是錯誤的。 AC

13、語言是C+語言的一個子集 BC語言與C+語言是兼容的 CC+語言對C語言進行了一些改進 DC+語言和C語言都是面向對象的4、系統在調用重載函數時往往根據一些條件確定哪個重載函數被調用,在下列選項中,不能作為依據的是( A ).A函數的返回值類型 B參數的類型 C函數名稱 D參數個數5、下列有關C+類的說法中,不正確的是( D )。A類是一種用戶自定義的數據類型B只有類中的成員函數或類的友元函數才能存取類中的私有成員C在類中,如果不做特別說明,所有成員的訪問權限均為私有的D在類中,如果不做特別說明,所有成員的訪問權限均為公用的7、有關析構函數的說法,不正確的是( B )。A析構函數有且僅有一個

14、B析構函數和構造函數一樣可以有形參C析構函數的功能是在系統釋放對象之前作一些內存清理工作D析構函數無任何函數類型8、類定義的內容允許被其對象無限制地存取的是( C ).Aprivate 部分 B protected 部分 Cpublic 部分 D以上都不對10、運用運算符delete刪除一個動態對象時( C )。A系統首先為該動態對象調用構造函數,再釋放其占用的內存B系統首先釋放該動態對象占用的內存,再為其調用構造函數C系統首先為該動態對象調用析構函數,再釋放其占用的內存D系統首先釋放動態對象占用的內存,再為其調用析構函數11、可以在類外用p.a的形式訪問派生類對象p的基類成員a,其中a是(

15、D )。A私有繼承的公用成員 B公用繼承的私有成員C公用繼承的保護成員 D公用繼承的公用成員12、在公用繼承方式下,有關派生類對象和基類對象的關系,不正確的敘述是(C )。A派生類的對象可以賦給基類的對象 B派生類的對象可以初始化基類的引用C派生類的對象可以直接訪問基類中的成員D派生類的對象的地址可以賦給指向基類的指針18、下列運算符中,( C )運算符在C+中不能被重載。A&& B C: Dnew19、模板的使用實際上是將類模板實例化成一個( C ).A函數 B對象 C類 D抽象類20、假定MyClass為一個類,則該類的拷貝構造函數的聲明語句為( C )。AMyClass(

16、MyClass x) BMyClass&(MyClass x)CMyClass(MyClass x) DMyClass(MyClass x)二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1、類和對象的關系可表述為:類是對象的 抽象,而對象則是類的 實例.2、在C+中,三種繼承方式的說明符號為 public 、private 和 protected ,如果不加說明,則默認的繼承方式為 private _ 。5、類的靜態成員分為 靜態數據成員和 靜態成員函數 。6、運算符重載要求保持其原來的操作數個數、 結合性、 優先級_ 和語法結構。7、通過關鍵字 template 可

17、以聲明模板,通過關鍵字 class(或typename) 指定函數模板的類型參數,有幾個類型參數就有幾個類型關鍵字。8、列出C+中兩種用戶自定義的數據類型: 類 、 結構體 .單項選擇題(共20題,每題1分,共20分)1、下列關于C+標識符的命名不合法的是 ( C ) 與C#一樣A。 Pad B. name_1 C. A#bc D。 _a122、若有以下類型標識符定義: int x=2; char w='a; float y=23。45f; double z=45。6712;則表達式w*x+y-z的結果類型是(D)A。 float B。 char C。 int D. double 6、

18、對重載函數形參的描述中,錯誤的是 D A. 參數的個數可能不同 B。 參數的類型可能不同C. 參數的順序可能不同D。 參數的個數、類型、順序都相同,只是函數的返回值類型不同7、以下能正確定義數組并正確賦初值的語句是 DA. int N=5,bNN; B. int a2=1,3,4,5;C。 int c2=1,2,3,4; D。 int d32=1,2,3,4;8、下列給字符數組進行的初始化中,不正確的是 DA. char s1="abcd”; B。 char s23=x','y',0';C。 char s3='a,x','y&#

19、39;,'0'; D。 char s46=”xyz","mnp”;9、通常的拷貝構造函數的參數是 C A 某個對象名 B某個對象成員名 C 某個對象的引用 D某個對象的指針名10、關于構造函數特點的描述中,錯誤的是 AA。 定義構造函數必須指出類型 (構造函數特點是無返回類型) B。 構造函數的名字與該類的類名相同C。 一個類中可定義0至多個構造函數 D. 構造函數是一種成員函數11、下面程序的運行結果為 C#include iostream>int add(int a,int b);void main() extern int x,y;cout<

20、;<add(x,y)<endl;int x=20,y=5;int add(int a,int b)int s=a+b;return s; A20 B5 C25 D編譯會提示出錯信息13、關于友元函數的描述中,錯誤的是 BA。 友元函數不是成員函數 B。 友元函數只能訪問類中私有成員C. 友元函數破壞隱藏性,盡量少用 D。 友元函數說明在類體內,使用關鍵字friend 14、如果有int x,*p; float y,*q;則下面操作正確的是 CAp=x Bp=q Cp=&x Dp=y16、若數組名作實參而指針變量作形參,函數調用時實參傳給形參的是 DA。 數組的長度 B. 數

21、組第一個元素的值 C。 數組所有元素的值 D. 數組第一個元素的地址17、對于動態分配內存空間描述正確的是 DA使用new運算符分配的內存空間的長度必需是常量 Bdelete運算符可以釋放動態的存儲空間和靜態的存儲空間C由new分配的內存空間是不連續的 Ddelete運算符只能釋放由new分配的動態存儲空間18、能夠釋放對象所占資源的是 ( ) AA析構函數 B數據成員 C構造函數 D靜態成員函數20、在C+中串流類是在頭文件strstrea.h中定義的,下列不屬于串流類的是 ) CAstrstream Bostrstream Cofstream Distrstream二、填空題(共9題16空

22、,每空1分,共16分)1、函數重載時,編譯系統會根據_形參的類型_ 或_形參的個數_ 來區分。與返回值類型無關2、若有char a80;則cina表示從鍵盤上讀入一個_字符串_ 到數組a中。3、若希望用一個已有對象來構造另一個同類型的對象,可以使用_拷貝構造函數_來實現。4、靜態成員(static)屬于_類_ ,而不屬于_任何一個對象_ ,它被同一個類的所有對象共享.6、重載運算符的含義必須清楚,不能有_二義性_ .9、C+的I/O是以 字節流 的形式實現的,每個C+編譯系統都帶有一個面向對象的輸入/輸出軟件包,這就是 I/O流類庫。C+面向對象程序設計語言期末考試試卷一. 選擇題(每題1分,

23、共10分)1. 在C+中,常量C和"C”兩者_A_。A)完全不同B)存儲長度相同 C)類型相同D)存儲值相同2. 有二維字符數組char s46=“zhang",”gao”,"tang”,”wang”,執行程序couts2,屏幕上顯示_D_。A)gaoB)tangC)gD)t3. 若w=1,x=2,y=3,z=4,則條件表達式w>x?w:zy?z:x的結果為_A_。A)4B) 3C) 2D)14. 設a和b為整型變量,執行語句b=(a=2+3,a*4),a+5;后a和b的值為_D_。A)5,10B)20,25C)5,25D)5,205. 如果整型變量a,b,

24、c的值分別為5,4,3,則語句if(a>=b>=c) c+;執行后c的值是_C_。A)5B)4C) 3D)2int i=10;執行下列語句后,i的值是_D_。case 9: i+=1;case 10: i+=1;case 11: i+=1;case 12: i+=1;A)10B)11C)12D)136. 執行以下程序:include<iostream>void main(void) char c=0;coutc<'n' 輸出的結果是_D_。A) 0B)語法錯C)0D) 一個空行7. 設有類型說明:enum colorred,yellow=3,whi

25、te,black;則執行語句cout<white<n;后輸出的結果是_D_。A) 4B) 3 C) 2D) 18. 對于下面的幾個函數:void f(int x)/1int f(int y)/2int f(int i,int j)/3float k(int x) /4_(A)_是重載函數。A)4個全部B)1和4C)2和3D)3和4二填空題(每空2分,共10分)1 浮點型變量f 當前存儲的值是17.8,經 (int) f 類型強制轉換后 f 存儲的值是_17.8_。2 若:typedef char STRING;STRING p,s10;則:p和s的數據類型分別是_字符型指針_、_字

26、符型指針數組_.3 求a,b,c中的最大值,請將表達式補充完整( t=a>=b?a:b)c?_c:t_.4 已知字母a的ASCII碼為十進制數97,且ch為字符型變量,則表達式ch=a+9'3的值為_g_.三閱讀程序題(每空2分,共14分)1 下列程序的輸出結果是_15_。#define MUL(x,y) xy#includeiostreamvoid main(void)int x=4,y=6;cout<MUL(x+1,y-3)<<'n'2 下面函數的功能是_比較字符串的大小_。sss(char s,char t)while(*s)&(t

27、)&(*t+=*s+));return;3 對于下述程序段:int c(int x,int y)if(x<1) return(y+2);else if(x2=1) return(y*c(x-1,y+1); else return(c(x/2,y)*3);當主程序中有打印語句coutc(6,2)n'時,程序的輸出是_324_。4 程序#include<iostream.hint c=1;void f(int a,int b)static int c=2;(a)+;c-;cout<<*a<'tb<t'<c<endl;v

28、oid main(void)int i;for(i=0;i=1;i+)f(i,c);cout<"c="<c<endl;程序執行后輸出的第二行是_c= 1_;輸出的最后一行是_c= 1_.5 程序下面程序的輸出結果是_17_。#include<iostream.hint funa(int a,int b)return(a + b);int funb(int a,int b)return(a b);int sub(int(f)(int ,int),int x,int y)return ((*f)(x,y);void main(void)int x,(*p)(int,int);p=funb;x=sub(funa,8,3);x+=sub(p,9,3);cout<<”x=”<x<<n;6 程序下面程序的輸出結果

溫馨提示

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

最新文檔

評論

0/150

提交評論