




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、清華大學(xué)計算機系C+期末測試題及答案一、 填空題25小題,共50分以下每題1分,共10分1 .在C+用,函數(shù)的參數(shù)有兩種傳遞方式,它們是值傳遞和地址或指針或引用傳遞.2 .當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的this指針 指向調(diào)用它的對象.3 .在基類和派生類中,派生類可以定義其基類中不具備的數(shù)據(jù)和操作.對兩個有相同名字的數(shù)據(jù)成員進行訪問時,如果沒有 作用域分隔符限定時 ,對此數(shù)據(jù)成員的訪問將出現(xiàn)歧 義.4 .拷貝構(gòu)造函數(shù)使用引用作為參數(shù)初始化創(chuàng)立中的對象.5 .在公有繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限保持不變.6 . 描述命題"A小于B或小于C"的表達式為 A
2、<B|A<C .7 .用new申請某一個類的動態(tài)對象數(shù)組時,在該類中必須能夠匹配到?jīng)]有形參的或缺 省參數(shù)構(gòu)造函數(shù),否那么應(yīng)用程序會產(chǎn)生一個編譯錯誤.8 .靜態(tài)數(shù)據(jù)成員在類外進行初始化,且靜態(tài)數(shù)據(jù)成員的一個拷貝被類的所有對象共享9 .為了防止可能出現(xiàn)的歧義,C+對if - else語句配對規(guī)那么規(guī)定為:else總是與與最近的if 配對.10 . 設(shè)"int a=3,b=4,c=5;",表達式"a+b >c&&b=c"的值是 0 .以下每題2分,共20分11 .面向?qū)ο蟮某绦蛟O(shè)計有四大特征,它們是 抽象、封裝、 繼承、多態(tài).
3、12 .在Visual C+中,定義重載函數(shù)時,應(yīng)至少使重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型不派生類成員函數(shù)與在基類被覆蓋的成員函數(shù)O在定義形式上,它們的區(qū)別還包括構(gòu)造函數(shù)名與、析構(gòu)函數(shù)沒有參數(shù)、析構(gòu)函數(shù)可以定義為被調(diào)用的成員函數(shù)是虛函數(shù)、用指針或引用調(diào)這樣的類只能被繼承,稱之為抽象類,定同;在基類和派生類中,成員函數(shù)的覆蓋是指 名、參數(shù)個數(shù)、參數(shù)類型和返回值類型均相同13 .構(gòu)造函數(shù)與析構(gòu)函數(shù)除功能不同外, 類名相同,而析構(gòu)函數(shù)名是在類名前加一個 虛函數(shù).14 .動態(tài)聯(lián)編要滿足兩個條件,它們是 用虛函數(shù).15 .在C+鎂中,有一種不能定義對象的類, 義該類至少具有一個純虛函數(shù).16 .在C+談中,c
4、onst關(guān)鍵字可以修飾對象和成員函數(shù),const對象不能 被修改,const成員函數(shù)不能修改類數(shù)據(jù)成員.17 .舉出C+中兩種用戶自定義的數(shù)據(jù)類型:類、枚舉.18 . C+中沒有字符串類型,字符串是通過 字符數(shù)組 來表示的,每一個字符串都有一個結(jié)尾字符0 .19 . C+中沒有輸入輸出語句, 輸入輸出是通過 輸入輸出庫 實現(xiàn)的,寫出一條打印整型變量n的輸出語句:cout<<n ;20 .舉出C+中兩種代碼復(fù)用的方式:繼承、復(fù)用(以下每題4分,共20分)1 .單項選擇:10*22 .簡答:4*53 .程序分析:5*84 .程序設(shè)計:2*10 考點:(1)運算符重載(2)文件IO流(3
5、)異常處理21 .下面程序的運行結(jié)果是3 .#include <stdio.h>void main()char a='a',b='j'float x;x=(b-a)/(F-'A');printf("%dn",(int)(3.14*x);22 .下面程序的運行結(jié)果是2 5 8 11 14#include "iostream.h"void main()int i=1;while (i<=15)i+;if (i%3!=2) continue;else cout <<"i=&
6、quot;<<i<<endl;23 .下面程序的運行結(jié)果是#include "iostream.h"class testprivate:int num;float fl;public:test();int getint( )return num; float getfloat( )return fl;-test(););test:test()(cout << "Initalizing default" << endl;num=0;fl=0.0;)test:test()(cout << "
7、;Desdtructor is active" << endl;)void main( )(test array2;cout << array1.getint( )<< " " << array1.getfloat( ) <<endl; )Initalizing defaultInitalizing default0 0Desdtructor is activeDesdtructor is active24 .下面程序的運行結(jié)果是 .#include <iostream.h>class A(p
8、ublic:A()cout<<"A:A() called.n"virtual -A()cout<<"A:-A() called.n"class B:public Apublic:B(int i)cout<<"B:B() called.n"buf=new chari;virtual -B()(delete buf;cout<<"B:B() called.n"private:char *buf;void fun(A *a)(delete a;void main()(A *
9、a=new B(15);fun(a);A:A() called.B:B() called.B:B() called.A:A() called.25 .下面程序的運行結(jié)果是 .#include <stdio.h>int a =1,3,5,7,9;int *p尸a,a+1,a+2,a+3,a+4;void main( )printf("%dt%dt%dn",a4,*(a+2),*p1);printf("%dt%dt%dn",*(p+1)+a2,*(p+4)-*(p+0),*(a+3)%a4);9 5 38 4 7問做題每題5分,共20分1 .假設(shè)
10、程序員沒有定義拷貝構(gòu)造函數(shù),那么編譯器自動生成一個缺省的拷貝構(gòu)造函數(shù),它可 能會產(chǎn)生什么問題?解答要點:當(dāng)對象含有指針數(shù)據(jù)成員,并用它初始化同類型的另一個對象時,缺省的拷貝構(gòu)造函數(shù)只能將該對象的數(shù)據(jù)成員復(fù)制給另一個對象,而不能將該對象中指針?biāo)赶虻膬?nèi)存單元也復(fù)制過去.這樣,就可能出現(xiàn)同一內(nèi)存單元釋放兩次,導(dǎo)致程序運行出錯.2 .簡述成員函數(shù)、全局函數(shù)和友元函數(shù)的差異.解答要點:以下幾點必須說清楚:成員函數(shù)是在類內(nèi)部定義的,作用域在類的內(nèi)部,成員函數(shù)可以訪問類的數(shù)據(jù)成員公有、保護和私有數(shù)據(jù)成員,可以調(diào)用該類的其它成員函數(shù)公有、保護和私有成員函數(shù), 可以調(diào)用全局函數(shù).如果友元函數(shù)是另一個類的公有成
11、員函數(shù),那么該類的成員函數(shù)也只能通過那個類的對象調(diào)用,不能調(diào)用那個類的保護和私有成員函數(shù).非本類成員函數(shù)其它類成員函數(shù)或全局函數(shù)可以通過該類的對象訪問該類的公有數(shù)據(jù)成員和調(diào)用該類的的公有成員 函數(shù).不是在類中定義的成員函數(shù)都是全局函數(shù).如果某一個函數(shù)全局函數(shù)或類的成員函數(shù)定義為另一個類的友元函數(shù),需要在那個類中用friend關(guān)鍵字聲明,友元函數(shù)并不是類的成員,它的定義自然是在那個類的外面.3 .簡述結(jié)構(gòu)化的程序設(shè)計、面向?qū)ο蟮某绦蛟O(shè)計的根本思想.解答要點:結(jié)構(gòu)化的程序設(shè)計將數(shù)據(jù)和對數(shù)據(jù)的操作別離,程序是由一個個的函數(shù)組成的,面向?qū)ο蟮某绦蛟O(shè)計將數(shù)據(jù)和操作封裝在一起,程序是由一個個對象組成的,對
12、象之間通過接口進行通信,它能夠較好地支持程序代碼的復(fù)用.4 . 結(jié)構(gòu)struct 和類class有什么異同?解答要點:struct和class都可以定義類,但是缺省訪問權(quán)限說明時,struct的成員是公有的,而class的成員是私有的.在C+中,struct可被class代替.三、找出下面程序或程序段中的語法錯誤,并予以糾正每題 4分,共8分1程序功能是倒序輸出各給定的字符串.#include <stdio.h>void main char str5 ="First","Second","Third","Fort
13、h","Fifth"char *cp =str4,str3,str2,str1,str0;int i;whilei<=5printf("%c ",*(cp+i);i+;)應(yīng)為"char str5 ="First","Second","Third","Forth","Fifth"""char str510 ="First","Second","Third"
14、;,"Forth","Fifth"""while(i<=5) 應(yīng)為"while(i<5)"printf("%c ,*(cp+i);"應(yīng)為"printf("%s,*(cp+i);""int i;" 應(yīng)為"int i=0;"(2)程序功能是將各個平方根值放入數(shù)組中.#include <stdio.h>void main()int max,a,i;scanf("%d%d",max,a);d
15、ouble xmax;for (i=0;i<max;i+) xi=sqrt(a*i); 增加"#include <math.h>""scanf("%d%d",max,a);" 應(yīng)為"scanf("%d%d",&max,&a);""double xmax;" 改為:"double *x=new doublemax;" "delete x;"四、(8分)以下shape類是一個表示形狀的抽象類, area()
16、為求圖形面積的函數(shù),total( 那么是一個通用的用以求不同形狀的圖形面積總和的函數(shù).請從 shape類派生三角形類 (triangle)、矩形類(rectangle ),并給出具體的求面積函數(shù)class shapepublic:virtual float area( )=0;float total(shape *s ,int n) float sum=0.0;for(int i=0;i<n;i+)sum+=si->area();return sum;)class Triangle:public Shape(public:Triangle(double h,double w)H=h
17、;W=w;double Area() constreturn H*W*0.5;private:double H,W;class Rectangle:public Shapepublic:Rectangle(double h,double w)H=h;W=w;double Area()constreturn H*W;private:double H,W;五、(6分)完成順序查找函數(shù)f_seq().其過程是:從表頭開始,根據(jù)給定的模式,逐項與表中元素比擬.如果找到所需元素,那么查找成功,并打印出它在表中的順序號.如果查找整個表仍未找到所需對象,那么查找失敗#include <stdio.h&
18、gt;void f_seq(char *list,char *object,int len)/list 指針數(shù)組,指向字符串/object 模式串/len 表的長度char *p;int strcmp(char *s,char *t);p=list;while ( ) / p<list+lenif (strcmp(*p,object)=0)break;else ; / p+if (p<list+len)printf( "Success! *% dn",p-list);else printf("Unsuccess!n");int strcmp(
19、char *s,char *t)for (;*s=*t; s+,t+)if (*s='0')return(0);return( ); / s-t 或*s-*t 或 1 六、(8分)完成使鏈表逆置函數(shù) reverse ,假設(shè)有鏈表:鏈表結(jié)點的結(jié)構(gòu)如下:struct nodeint num;struct node *next;struct node* reverse(struct node *head)/head 鏈表頭結(jié)點struct node *p,*temp1,*temp2;if(head=NULL ) return head; / |head->next=NULL p
20、=head->next;head->next=NULL;while( )/ p!=NULL 或 ptemp1=head; / head=p;temp2=p;p=p->next;/ temp2->next=temp1; 或 head->next=temp1;/Match while statenmentreturn head; /返回逆置后的鏈表的頭結(jié)點一、選擇填空題共20小題,每題2分,共40分.1,關(guān)于C+與C語言關(guān)系的描述中,4是錯誤的.a.C語言是C+語言的一個子集b.C語言與C+語言是兼容的c.C+語言對C語言進行了一些改良d.C+語言和C語言都是面向?qū)ο?/p>
21、的2 .根據(jù)標(biāo)識符的要求,1 符號不能組成標(biāo)識符.a.連接符b.下劃線c.大小寫字母d.數(shù)字字符3 .為了防止嵌套的if-else語句的二義性,C語言規(guī)定else總是與3組成配對關(guān)系.a.縮排位置相同的ifb.在其之前未配對的ifc.在其之前未配又的最近的ifd.同一行上的if4 .在"int a 3=1,3,2,4,5,6,0;" 中,a22的值是3.a.1b.0c.6d.25 .設(shè)"char *s ;",以下正確的表達式是2.a.s="computer"b.*s="computer"c.*s="com
22、puter"d.*s='c'6 .對于"int *pa5;"的描述中,4 是正確的.a.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素b.pa是一個指向某數(shù)組中第5個元素的指針,該元素是 int型變量c.pa 5表示某個元素的第5個元素的值d.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針7 .在以下表示引用的方法中,1 是正確的.:int m=10; &x=m; &y=10; &z;d.float &t=&m;8,以下for循環(huán)的次數(shù)為2.for i=0
23、, x=0; !x&&i<=5; i+a.5b.6c.1d.無限9,對于C/C+語言的函數(shù),以下表達中正確的選項是1.a.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套b.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套c.函數(shù)的定義和調(diào)用都不能嵌套d.函數(shù)的定義和調(diào)用都可以嵌套10 .在一個被調(diào)用函數(shù)中,關(guān)于 return語句使用的描述,4是錯誤的.a.被調(diào)用函數(shù)中可以不用return語句b.被調(diào)用函數(shù)中可以使用多個return語句c.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句d.被調(diào)用函數(shù)中,一個 return語句可以返回多個值給調(diào)用函數(shù)11 .在一個函數(shù)中,要求通過函數(shù)來
24、實現(xiàn)一種不太復(fù)雜的功能,并且要求加快執(zhí)行速度,選 用1.a.內(nèi)聯(lián)函數(shù)b.重載函數(shù)c.遞歸調(diào)用d.嵌套調(diào)用12 .使用fseek函數(shù)可以實現(xiàn)的操作是1.a.改變文件指針的當(dāng)前位置b.文件的順序讀寫c.文件的隨機讀寫d.以上都不對13 .以下存儲標(biāo)識符中,3的可見性與存在性不一致.a.外部類b.自動類c.內(nèi)部靜態(tài)類d.存放器類14 .在如下結(jié)構(gòu)定義中,不正確的選項是2.a.struct studentint no;char name10;float score;b.struct stud20int no;char name10;float score;c.struct studentint no;
25、char name10;float score; stud20;d.structint no;char name10;float score;stud100;15 .將兩個字符串連接起來組成一個字符串時,選用(3 )函數(shù).a.strlen()b.strcpy()c.strcat()d.strcmp()16 . ( 4)不是構(gòu)造函數(shù)的特征a.構(gòu)造函數(shù)的函數(shù)名與類名相同b.構(gòu)造函數(shù)可以重載c.構(gòu)造函數(shù)可以設(shè)置缺省參數(shù)d.構(gòu)造函數(shù)必須指定類型說明17 .:類A中一個成員函數(shù)說明如下:void Set(A&a);其中,A&的含義是(3 ).a.指向類A的指針為ab.將a的地址值賦給變量
26、 Setc.a是類A對象的引用,用來作函數(shù)Set ()的參數(shù)d.變量A與a按位與作為函數(shù) Set()的參數(shù)18 .:print()函數(shù)是一個類的常成員函數(shù),它無返回值,以下表示中, (1)是正確的.a.void print( ) const;b.const void print( );c.void const print( );d.void print(const);19 .關(guān)于虛函數(shù)的描述中,(3 )是正確的.a.虛函數(shù)是一個static類型的成員函數(shù)b.虛函數(shù)是一個非成員函數(shù)c.基類中說明了虛函數(shù)后,派生類中將其對應(yīng)的函數(shù)可不必說明為虛函數(shù)d.派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個數(shù)
27、和類型20 .關(guān)于new運算符的以下描述中,(4)是錯的.a.它可以用來動態(tài)創(chuàng)立對象和對象數(shù)組b.使用它創(chuàng)立的對象和對象數(shù)組可以使用運算符delete刪除c.使用它創(chuàng)立對象時要調(diào)用構(gòu)造函數(shù)d.使用它創(chuàng)立對象數(shù)組時必須指定初始值二、問做題(15分)1、 (3分)虛析構(gòu)函數(shù)有什么作用?2、 ( 3分)拷貝構(gòu)造函數(shù)在哪幾種情況下調(diào)用?3、 (4分)函數(shù)重載與函數(shù)覆蓋有什么不同,它們與多態(tài)有什么關(guān)系?4、 ( 3分)C+繼承是如何工作的?5、 (2分)類與對象有什么區(qū)別?三、(6分)分析下面程序的運行結(jié)果#include <iostream.h>class B(public:B()B(in
28、t i)b=i;virtual void virfun() cout<<"B:virfun() called.n"private:int b;class D:public Bpublic:D()D(int i,int j):B(i)d寸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)的字母個
29、數(shù),請?zhí)畛湎旅婵瞻? 完成程序.#include <stdio.h>#include <ctype.h>void main(int argc,argv口;)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ù)據(jù)成員包括一個存放字符的數(shù)組stck和一個棧指針
30、toso棧數(shù)組的尺寸由常量SIZE確定.棧的根本操作為Push ()和Pop().六、(10分)完成下面的函數(shù),對有 n個元素的數(shù)組a,使數(shù)組元素按逆序排列.void inverse(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、C5、B6、D7、A8、B9、A10、D11、A 12、A 13、C 14、B 15、C 16、D 17、C 18、A 19、
31、C 20、D二、問做題1、虛析構(gòu)函數(shù)有什么作用?解答要點:對象銷毀時,需要調(diào)用析構(gòu)函數(shù).在多態(tài)調(diào)用時,是用基類的指針訪問派生類的對象.如果析構(gòu)函數(shù) 是非虛函數(shù),那么基類指針只能訪問基類的析構(gòu)函數(shù),而不能訪問派生類的析構(gòu)函數(shù),導(dǎo)致派生類對象銷毀 時,沒有調(diào)用派生類的析構(gòu)函數(shù),只是調(diào)用了基類的析構(gòu)函數(shù).如果把析構(gòu)函數(shù)定義成虛函數(shù),那么可克服 這個問題.2、拷貝構(gòu)造函數(shù)在哪幾種情況下調(diào)用?解答要點:用一個對象初始化另一個對象時當(dāng)用對象作為函數(shù)參數(shù)傳遞時當(dāng)函數(shù)返回對象時3、函數(shù)重載與函數(shù)覆蓋有什么不同,它們與多態(tài)有什么關(guān)系?解答要點:函數(shù)重載是指函數(shù)名相同,而函數(shù)的參數(shù)個數(shù)或類型不同;覆蓋是指在派生類中成員函數(shù)與基類成員 函數(shù)的函數(shù)名、參數(shù)個數(shù)、類型與返回值均相同;C+中正是通過虛函數(shù)的覆蓋,實現(xiàn)多態(tài)的功能.4、 C+繼承是如何工作的? 解答要點:繼承使得派生類能夠使用基類的公有和保護成員,從而實現(xiàn)代碼的復(fù)用,派生類可以增加成員,也可 以隱藏和覆蓋基類的成員.對于公有繼承,基類成員的訪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工地施工安全培訓(xùn)責(zé)任免除協(xié)議
- 2025年度城市綠化景觀土地使用權(quán)轉(zhuǎn)讓與維護合同
- 2025年度大學(xué)實習(xí)生實習(xí)期間權(quán)益保護與職業(yè)規(guī)劃合同
- 2025年度婚嫁婚前財產(chǎn)繼承與分配協(xié)議
- 健身房裝修合同標(biāo)準(zhǔn)
- 2025年度礦山地質(zhì)災(zāi)害防治投資合作協(xié)議
- 2025年度宅基地使用權(quán)轉(zhuǎn)讓與農(nóng)村旅游基礎(chǔ)設(shè)施建設(shè)合同
- 2025年度山林林業(yè)生態(tài)補償租賃合同
- 2025年度家具加工廠轉(zhuǎn)讓協(xié)議
- 2025年湖北生態(tài)工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- HG T 3690-2022 工業(yè)用鋼骨架聚乙烯塑料復(fù)合管
- 單色版畫課件
- 《現(xiàn)代教育技術(shù)》教案-第一章 教育技術(shù)概述
- 《理想信念的內(nèi)涵及重要性》教學(xué)教案
- 北師大版五年級下冊數(shù)學(xué)早讀課所背知識點
- 三位數(shù)除以一位數(shù)(商為三位數(shù))練習(xí)題含答案
- 高教社高職國際英語 進階綜合教程 第2冊 PPT課件高職國際英語進階教程第2 冊unit1課文原文和譯文
- 病理科各項制度匯編樣本
- 粉體密度及流動性測定
- 北師大版八年級下冊課程綱要分享課件
- 鍋爐工崗位安全風(fēng)險告知卡
評論
0/150
提交評論