C++期末考試題及答案_第1頁
C++期末考試題及答案_第2頁
C++期末考試題及答案_第3頁
C++期末考試題及答案_第4頁
C++期末考試題及答案_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、 選擇填空題(共20小題,每小題2分,共40分)。1. 關于C+與C語言關系的描述中,( )是錯誤的。 a.C語言是C+語言的一個子集 b.C語言與C+語言是兼容的 c.C+語言對C語言進行了一些改進 d.C+語言和C語言都是面向對象的2按照標識符的要求,( )符號不能組成標識符。 a.連接符 b.下劃線 c.大小寫字母 d.數(shù)字字符3. 為了避免嵌套的if-else語句的二義性,C語言規(guī)定else總是與( )組成配對關系。 a.縮排位置相同的if b.在其之前未配對的if c.在其之前未配對的最近的if d.同一行上的if4. 在"int a 3=1,3,2,4,5,6,0;&

2、quot;中,a22的值是( )。 a.1 b.0 c.6 d.25. 設"char *s;",以下正確的表達式是( )。 a.s="computer" b.*s="computer" c.*s="computer" d.*s='c'6. 對于"int *pa5;"的描述中,( )是正確的。 a.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素 b.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量 c.pa 5表示某個元素的第5個元素的值 d.pa是一個具有5

3、個元素的指針數(shù)組,每個元素是一個int型指針7. 在下列表示引用的方法中,( )是正確的。已知:int m=10; &x=m; &y=10; &z; d.float &t=&m;8. 下列for循環(huán)的次數(shù)為( )。for(i=0, x=0; !x&&i<=5; i+) a.5 b.6 c.1 d.無限9. 對于C/C+語言的函數(shù),下列敘述中正確的是( )。 a.函數(shù)的定義不能嵌套,但函數(shù)調用可以嵌套 b.函數(shù)的定義可以嵌套,但函數(shù)調用不能嵌套 c.函數(shù)的定義和調用都不能嵌套 d.函數(shù)的定義和調用都

4、可以嵌套10. 在一個被調用函數(shù)中,關于return語句使用的描述,( )是錯誤的。 a.被調用函數(shù)中可以不用return語句 b.被調用函數(shù)中可以使用多個return語句 c.被調用函數(shù)中,如果有返回值,就一定要有return語句 d.被調用函數(shù)中,一個return語句可以返回多個值給調用函數(shù)11. 在一個函數(shù)中,要求通過函數(shù)來實現(xiàn)一種不太復雜的功能,并且要求加快執(zhí)行速度,選用( )。 a.內聯(lián)函數(shù) b.重載函數(shù) c.遞歸調用 d.嵌套調用12. 使用fseek函數(shù)可以實現(xiàn)的操作是( )。 a.改變文件指針的當前位置 b.文件的順序讀寫 c.文件的隨機讀寫 d.以上都不對13. 下列存儲標識

5、符中,( )的可見性與存在性不一致。 a.外部類 b.自動類 c.內部靜態(tài)類 d.寄存器類14. 在如下結構定義中,不正確的是( )。 a.struct student int no; char name10;float score; b.struct stud20int no;char name10;float score; c.struct student int no; char name10;float score; stud20; d.structint no;char name10;float score;stud100 ;15. 將兩個字符串連接起來組成一個字符串時,選用( )函

6、數(shù)。 a.strlen( ) b.strcpy( ) c.strcat( ) d.strcmp( )16. ( )不是構造函數(shù)的特征 a.構造函數(shù)的函數(shù)名與類名相同 b.構造函數(shù)可以重載 c.構造函數(shù)可以設置缺省參數(shù) d.構造函數(shù)必須指定類型說明17. 已知:類A中一個成員函數(shù)說明如下:void Set(A&a);其中,A&的含義是( )。 a.指向類A的指針為a b.將a的地址值賦給變量Set c.a是類A對象的引用,用來作函數(shù)Set()的參數(shù) d.變量A與a按位與作為函數(shù)Set( )的參數(shù)18. 已知:print( )函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,( )

7、是正確的。 a.void print( ) const; b.const void print( ); c.void const print( ); d.void print(const);19. 關于虛函數(shù)的描述中,( )是正確的。 a.虛函數(shù)是一個static類型的成員函數(shù) b.虛函數(shù)是一個非成員函數(shù) c.基類中說明了虛函數(shù)后,派生類中將其對應的函數(shù)可不必說明為虛函數(shù) d.派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個數(shù)和類型20. 關于new運算符的下列描述中,( )是錯的。 a.它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組 b.使用它創(chuàng)建的對象和對象數(shù)組可以使用運算符delete刪除 c.使用它創(chuàng)建

8、對象時要調用構造函數(shù) d.使用它創(chuàng)建對象數(shù)組時必須指定初始值二、問答題(15分)1、 (3分)虛析構函數(shù)有什么作用?2、 (3分)拷貝構造函數(shù)在哪幾種情況下調用?3、 (4分)函數(shù)重載與函數(shù)覆蓋有什么不同,它們與多態(tài)有什么關系?4、 (3分)C+繼承是如何工作的?5、 (2分)類與對象有什么區(qū)別?三、(6分)分析下面程序的運行結果#include <iostream.h>class Bpublic:B()B(int i)b=i;virtual void virfun()cout<<"B:virfun() called.n"private:int b;

9、class D:public Bpublic:D()D(int i,int j):B(i)d=j;private:int d;void virfun()cout<<"D:virfun() called.n"void fun(B *obj)obj->virfun();void main()D *pd=new D;fun(pd);四、(9分)下面的程序可以統(tǒng)計命令行第一個參數(shù)中出現(xiàn)的字母個數(shù),請?zhí)畛湎旅婵瞻祝瓿沙绦颉?include <stdio.h>#include <ctype.h>void main(int argc, argv

10、;)char *str;int count=0;if(argc<2)exit(1);str= ;while(*str)if(isalpha( ) count+;printf("n字母個數(shù):%dn",count);提示:int isalpha(int ch)函數(shù)功能是檢查ch是否是字母 五、(8分) 定義一個字符棧類Stack(包括類的實現(xiàn))。數(shù)據成員包括一個存放字符的數(shù)組stck 和一個棧指針tos。棧數(shù)組的尺寸由常量SIZE確定。棧的基本操作為Push()和Pop()。六、(10分)完成下面的函數(shù),對有n個元素的數(shù)組a,使數(shù)組元素按逆序排列。void inverse

11、(int *a, int n)七、(12分)下面的函數(shù)統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù),如果substr在str中不出現(xiàn),則返回值0。請完成該函數(shù)。int str_count(char *substr, char *str)一、 選擇填空題1、D 2、A 3、C 4、C 5、B 6、D 7、A 8、B 9、A 10、D11、A 12、A 13、C 14、B 15、C 16、D 17、C 18、A 19、C 20、D二、問答題1、 虛析構函數(shù)有什么作用?解答要點:對象銷毀時,需要調用析構函數(shù)。在多態(tài)調用時,是用基類的指針訪問派生類的對象。如果析構函數(shù)是非虛函數(shù),則基類指針只能訪

12、問基類的析構函數(shù),而不能訪問派生類的析構函數(shù),導致派生類對象銷毀時,沒有調用派生類的析構函數(shù),只是調用了基類的析構函數(shù)。如果把析構函數(shù)定義成虛函數(shù),則可克服這個問題。2、 拷貝構造函數(shù)在哪幾種情況下調用?解答要點:用一個對象初始化另一個對象時當用對象作為函數(shù)參數(shù)傳遞時當函數(shù)返回對象時3、 函數(shù)重載與函數(shù)覆蓋有什么不同,它們與多態(tài)有什么關系? 解答要點:函數(shù)重載是指函數(shù)名相同,而函數(shù)的參數(shù)個數(shù)或類型不同;覆蓋是指在派生類中成員函數(shù)與基類成員函數(shù)的函數(shù)名、參數(shù)個數(shù)、類型與返回值均相同;C+中正是通過虛函數(shù)的覆蓋,實現(xiàn)多態(tài)的功能。4、 C+繼承是如何工作的?解答要點:繼承使得派生類能夠使用基類的公有

13、和保護成員,從而實現(xiàn)代碼的復用,派生類可以增加成員,也可以隱藏和覆蓋基類的成員。對于公有繼承,基類成員的訪問權限在派生類保持不變。5、 類與對象有什么區(qū)別?解答要點:類是類型,是對象的抽象,對象是類的具體實例。一個類可以有多個對象,每個對象都有自己的存儲單元,而類不占存儲單元。三、運行結果為: D:virfun() called.四、填空 char * argv1 *str+五、(8分) 定義一個字符棧類Stack(包括類的實現(xiàn))。數(shù)據成員包括一個存放字符的數(shù)組stck 和一個棧指針tos。棧數(shù)組的尺寸由常量SIZE確定。棧的基本操作為Push()和Pop()。 const int SIZE=

14、27;class Stackpublic:Stack():tos(0);void Push(char ch);char Pop();private:char stckSIZE;int tos; void Stack:Push(char ch)if(tos=SIZE)cout<<"nStack is fulln"elsestcktos=ch;tos+;char Stack:Pop()if(tos=0)cout<<"nStack is emptyn"return 0;tos-;return stcktos;六、(10分)完成下面的函數(shù),對有n個元素的數(shù)組a,使數(shù)組元素按逆序排列。void inverse(int *a, int n) int i,*p;p=new intn;for(i=0;i<=n-1;i+)pi=ai;for(i=0;i<=n-1;i+)ai=pn-i-1;delete p;七、(12分)下面的函數(shù)統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù),如果substr在str中不出現(xiàn),則返回值0。請完成該函數(shù)。int str_count(char *substr, char *str)int count=0

溫馨提示

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

評論

0/150

提交評論