c重點(diǎn)難點(diǎn)復(fù)習(xí)題及答案_第1頁(yè)
c重點(diǎn)難點(diǎn)復(fù)習(xí)題及答案_第2頁(yè)
c重點(diǎn)難點(diǎn)復(fù)習(xí)題及答案_第3頁(yè)
c重點(diǎn)難點(diǎn)復(fù)習(xí)題及答案_第4頁(yè)
c重點(diǎn)難點(diǎn)復(fù)習(xí)題及答案_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1、數(shù)據(jù)共享與保護(hù)一、選擇題:1、在下面存儲(chǔ)類中, ( C 對(duì)象的可見性與生存期不一致。A. 外部類 B. 自動(dòng)類 C. 內(nèi)部靜態(tài)類 D. 寄存器類2、在下面存儲(chǔ)類中,( A )的對(duì)象不是局部變量。A. 外部靜態(tài)類 B. 自動(dòng)類 C. 函數(shù)形參 D. 寄存器類3、關(guān)于局部變量,下面說法正確的是( C 。A. 定義該變量的程序文件中的函數(shù)都可以訪問B. 定義該變量的函數(shù)中的定義處以下的任何語(yǔ)句都可以訪問C. 定義該變量的復(fù)合語(yǔ)句中的定義處以下的任何語(yǔ)句都可以訪問D. 定義該變量的函數(shù)中的定義處以上的任何語(yǔ)句都可以訪問4、一個(gè)類的靜態(tài)數(shù)據(jù)成員所表示屬性 ( C 。A. 是類的或?qū)ο蟮膶傩?B. 只

2、是對(duì)象的屬性C. 只是類的屬性 D. 類和友元的屬性 5、類的靜態(tài)成員的訪問控制( D )。A. 只允許被定義為privateB. 只允許被定義為private或protected C. 只允許被定義為public D. 可允許被定義為private、protected或public6、靜態(tài)成員函數(shù)對(duì)類的數(shù)據(jù)成員訪問( B )。A. 是不允許的 B. 只允許是靜態(tài)數(shù)據(jù)成員 C. 只允許是非靜態(tài)數(shù)據(jù)成員 D. 可允許是靜態(tài)數(shù)據(jù)成員或非靜態(tài)數(shù)據(jù)成員7、被非靜態(tài)成員函數(shù)訪問的類的數(shù)據(jù)成員( A 。A. 可以是非靜態(tài)數(shù)據(jù)成員或靜態(tài)數(shù)據(jù)成員 B. 不可能是類的靜態(tài)數(shù)據(jù)成員C. 只能是類的非靜態(tài)數(shù)據(jù)成員

3、D. 只能是類的靜態(tài)數(shù)據(jù)成員8、靜態(tài)數(shù)據(jù)成員的初始化是在( D )中進(jìn)行的。A. 構(gòu)造函數(shù) B. 任何成員函數(shù)C. 所屬類 D. 全局區(qū)9、當(dāng)將一個(gè)類A或函數(shù)f(說明為另一個(gè)類B的友元后,類A或函數(shù)f(能夠直接訪問類B的( D )。A. 只能是公有成員 B. 只能是保護(hù)成員 C. 只能是除私有成員之外的任何成員 D. 具有任何權(quán)限的成員10、引入友元的主要目的是為了( C )。A. 增強(qiáng)數(shù)據(jù)安全性 B. 提高程序的可靠性C. 提高程序的效率和靈活性 D. 保證類的封裝性11、 一個(gè)類的成員函數(shù)也可以成為另一個(gè)類的友元函數(shù),這時(shí)的友元說明( A )。A. 需加上類域的限定 B. 不需加上類域的限

4、定C. 類域的限定可加可不加 D. 不需要任何限定二、判斷題1、類的靜態(tài)數(shù)據(jù)成員需要在定義每個(gè)類的對(duì)象時(shí)進(jìn)行初始化。F2、當(dāng)將一個(gè)類S定義為另一個(gè)類A的友元類時(shí),類S的所有成員函數(shù)都可以直接訪問類A的所有成員。T3、靜態(tài)數(shù)據(jù)成員必須在類外定義和初始化。T4、靜態(tài)成員函數(shù)可以引用屬于該類的任何函數(shù)成員F。5、友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾說明的類的成員函數(shù)。F6、友元函數(shù)訪問對(duì)象中的成員可以不通過對(duì)象名F三、填空題:1、若“double x=100;”是文件F1.CPP中的一個(gè)全局變量定義語(yǔ)句,若文件F2.CPP中的某個(gè)函數(shù)需要訪問此x , 則應(yīng)在文件

5、F2.CPP中添加對(duì)x的聲明語(yǔ)句為Extern double x;2、如果一個(gè)函數(shù)定義中使用了static修飾,則該函數(shù)不允許被其它文件中的函數(shù)調(diào)用。3、定義外部變量時(shí),不用存儲(chǔ)類說明符Extern,而聲明外部變量時(shí)用它。4、調(diào)用系統(tǒng)函數(shù)時(shí),要先使用#include命令包含該系統(tǒng)函數(shù)的原型語(yǔ)句所在的頭文件。5、C+程序運(yùn)行時(shí)的內(nèi)存空間可以分成全局?jǐn)?shù)據(jù)區(qū),堆區(qū),棧區(qū)和代碼區(qū)。6、局部變量具有局部生存期,存放在內(nèi)存的棧區(qū)中。7、對(duì)類中對(duì)象成員的初始化是通過在構(gòu)造函數(shù)中給出的初始化表來實(shí)現(xiàn)的。8、對(duì)類中常量成員的初始化是通過在構(gòu)造函數(shù)中給出的初始化表來實(shí)現(xiàn)的。9、對(duì)類中引用成員的初始化只能通過在構(gòu)造

6、函數(shù)中給出的初始化表來實(shí)現(xiàn)。10、對(duì)類中一般數(shù)據(jù)成員的初始化既可以通過在構(gòu)造函數(shù)中給出的初始化表來實(shí)現(xiàn),也可以通過構(gòu)造函數(shù)中的函數(shù)體來實(shí)現(xiàn)。11、假定要把a(bǔ)a定義為AB類中的一個(gè)常量整數(shù)型數(shù)據(jù)成員,則定義語(yǔ)句const int aa。12、假定要把a(bǔ)a定義為AB類中的一個(gè)引用整數(shù)型數(shù)據(jù)成員,則定義語(yǔ)句為int &aa。13、假定AB類中只包含一個(gè)整型數(shù)據(jù)成員a,并且它是一個(gè)常量成員,若利用參數(shù)aa對(duì)其進(jìn)行初始化,則該類的構(gòu)造函數(shù)的定義為AB (int aaa=aa;。14、假定AB類中只包含一個(gè)整型數(shù)據(jù)成員a,并且它是一個(gè)引用成員,若利用引用參數(shù)aa對(duì)其進(jìn)行初始化,則該類的構(gòu)造函數(shù)的定

7、義為AB(int &aaa=aa;。15、靜態(tài)成員函數(shù)能夠直接訪問類的靜態(tài)數(shù)據(jù)成員,只能通過對(duì)象名訪問類的非靜態(tài)數(shù)據(jù)成員。16、靜態(tài)數(shù)據(jù)成員必須在所有函數(shù)的定義體外進(jìn)行初始化。17、一個(gè)類的成員函數(shù)也可以成為另一個(gè)類的友元函數(shù),這時(shí)的友元說明必須在函數(shù)名前加上類域的限定。四、修改程序題:下列程序段中,A_class的成員函數(shù)Variance(可求出兩數(shù)的平方差,請(qǐng)改寫該程序段,把Variance(函數(shù)從A_class類中分離出來,用友元函數(shù)來實(shí)現(xiàn)該函數(shù)的功能。class A_class private:int x,y,t; public:A_class(int i,int j:x(i,

8、y(j if(y>xt=x;x=y;y=t;int Variance(return x*x-y*y; /其它函數(shù)從略;void main( A_class A_obj(3,5;cout<<"Result:"< 修改后的源程序:class A_class private:int x,y,t; public:A_class(int i,int j:x(i,y(j if(y>xt=x;x=y;y=t;friend int Variance(; /其它函數(shù)從略;int variance (return x*x-y*y;void main( A_clas

9、s A_obj(3,5;cout<<"Result:"< 2、數(shù)組、指針與字符串一、 1、在下面的一維數(shù)組定義中,哪一個(gè)有語(yǔ)法錯(cuò)誤。( C ) A. int a=1,2,3; B. int a10=0;C. int a; D. int a5;2、在下面的字符數(shù)組定義中,哪一個(gè)有語(yǔ)法錯(cuò)誤。( D )。A. char a20=”abcdefg”; B. char a=”x+y=55.”;C. char a15; D. char a10=5;3、在下面的二維數(shù)組定義中,正確的是( C 。 A. int a5; B. int a5; C. int a3=1,3,5

10、,2; D. int a(10;4、假定一個(gè)二維數(shù)組的定義語(yǔ)句為“int a34=3,4,2,8,6;”,則元素a12的值為( C )。A. 2 B. 4 C. 6 D. 85、假定一個(gè)二維數(shù)組的定義語(yǔ)句為“int a34=3,4,2,8,6;”,則元素a21的值為( A )。A. 0 B. 4 C. 8 D. 66、若定義了函數(shù) double *function(, 則函數(shù)function的返回值為( B )。A. 實(shí)數(shù)型 B.實(shí)數(shù)的地址 C.指向函數(shù)的指針 D.函數(shù)的地址7、以下函數(shù)的返回結(jié)果是( A )。int function(char *x char *p=x; while(*p+;

11、 return(p-x-1;A. 求字符串的長(zhǎng)度 B.將字符串x連接到字符串p后面C. 將字符串x復(fù)制到字符串p中 D.將字符串x反向存放8、設(shè)有如下函數(shù)定義 int f(char *s char *p=s;while(*p!=0 p+;return(p-s;在主函數(shù)中用cout< “ good ” 調(diào)用上述函數(shù) , 則輸出結(jié)果為( B )。 A. 3 B. 4 C. 5 D. 69、假定變量m定義為“int m=7;”,則定義變量p的正確語(yǔ)句為( B )。A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m;1

12、0、變量s的定義為“char *s=”Hello world!”;”,要使變量p指向s所指向的同一個(gè)字符串,則應(yīng)選?。?A )。A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s11、關(guān)于void 指針,下列說法正確的是( C )。A. void 指針就是未指向任何數(shù)據(jù)的指針B. void 指針就是已定義而未初始化的指針C. 指向任何類型數(shù)據(jù)的指針可直接賦值給一個(gè)void 指針D. void 指針值可直接賦給一個(gè)非void 指針12、假定一條定義語(yǔ)句為“int a10, x, *pa=a;”,若要把數(shù)組a

13、中下標(biāo)為3的元素值賦給x,則不正確的語(yǔ)句為( D )。A. x=pa3; B. x=*(a+3; C. x=a3; D. x=*pa+3;13、假定有定義“int b10; int *pb;”,則不正確的賦值語(yǔ)句為( D )。A. pb=b; B. pb=&b0; C. *pb=new int; D. pb=b5;14、假定p是具有double類型的指針變量,則表達(dá)式+p使p的值(以字節(jié)為單位)增加( C )。A. 1 B. 4 C. sizeof(double D. sizeof(p15、假定p指向的字符串為”string”,則cout< 的輸出結(jié)果為( C )。 A. str

14、ing B. ring C. ing D. i16、假定p指向的字符串為”string”,若要輸出這個(gè)字符串的地址值,則使用( D )。A. cout<<*s; B. cout< 17、定義p并使p指向動(dòng)態(tài)空間中的包含30個(gè)整數(shù)的數(shù)組所使用的定義語(yǔ)句為( A )。A. int *p=new int30; B. int *p=new int(30; C. int *p=new 30; D. *p=new int30;18、假定p是具有int*類型的指針變量,則給p賦值的正確語(yǔ)句為( B )。A. p=new int; B. p=new int*; C. p=new int*;

15、D. p=new int10;19、要使語(yǔ)句“p=new int1020;”能夠正常執(zhí)行,p應(yīng)被事先定義為( D )。A. int *p; B. int *p; C. int *p20; D. int(*p20;20、假定變量a和pa定義為“double a10, *pa=a;”,要將12.35賦值給a中的下標(biāo)為5的元素,不正確的語(yǔ)句是( D )。A. pa5=12.35; B. a5=12.35; C. *(pa+5=12.35; D. *(a0+5=12.35;21、假定變量b和pb定義為“int b10, *pb=b;”,要將24賦值給b1元素中,不正確的語(yǔ)句是( C )。A. *(pb

16、+1=24; B. *(b+1=24; C. *+b=24; D. *+pb=24;22、假定指針變量p定義為“int *p=new int(100;”,要釋放p所指向的動(dòng)態(tài)內(nèi)存,應(yīng)使用語(yǔ)句( A )。A. delete p; B. delete *p; C. delete &p; D. delete p;23、假定指針變量p定義為“int *p=new int30;”,要釋放p所指向的動(dòng)態(tài)內(nèi)存,應(yīng)使用語(yǔ)句( D )。A. delete p; B. delete *p; C. delete &p; D. delete p;24、當(dāng)類中一個(gè)字符指針成員指向具有n個(gè)字節(jié)的存儲(chǔ)空間時(shí)

17、,它所能存儲(chǔ)字符串的最大長(zhǎng)度為( C 。A. n B. n+1 C. n-1 D. n-225、在一個(gè)用鏈表實(shí)現(xiàn)的隊(duì)列類中,假定每個(gè)結(jié)點(diǎn)包含的值域用elem表示,包含的指針域用next表示,鏈隊(duì)的隊(duì)首指針用elemHead表示,隊(duì)尾指針用elemTail表示,若鏈隊(duì)非空,則進(jìn)行插入時(shí)必須把新結(jié)點(diǎn)的地址賦給( D 。A. elemHead B. elemTailC. elemHead->next和elemHead D. elemTail->next和elemTail26、在一個(gè)用鏈表實(shí)現(xiàn)的隊(duì)列類中,假定每個(gè)結(jié)點(diǎn)包含的值域用elem表示,包含的指針域用next表示,鏈隊(duì)的隊(duì)首指針用el

18、emHead表示,隊(duì)尾指針用elemTail表示,若鏈隊(duì)為空,則進(jìn)行插入時(shí)必須把新結(jié)點(diǎn)的地址賦給( C 。A. elemHead B. elemTailC. elemHead和elemTail D. elemHead或elemTail27、當(dāng)類中的一個(gè)整型指針成員指向一塊具有n*sizeof(int大小的存儲(chǔ)空間時(shí),它最多能夠存儲(chǔ)( A 個(gè)整數(shù)。A. n B. n+1 C. n-1 D. 128、假定AB為一個(gè)類,則執(zhí)行 “AB *px=new ABn;”語(yǔ)句時(shí)將( A 。A. 動(dòng)態(tài)分配一個(gè)數(shù)組 B. 動(dòng)態(tài)分配一個(gè)對(duì)象C. 靜態(tài)分配一個(gè)數(shù)組 D. 靜態(tài)分配一個(gè)對(duì)象29、設(shè)px是指向一個(gè)類對(duì)象的

19、指針變量,則執(zhí)行 “delete px;”語(yǔ)句時(shí),將自動(dòng)調(diào)用該類的( C 。A. 無參構(gòu)造函數(shù) B. 帶參構(gòu)造函數(shù) C. 析構(gòu)函數(shù) D. 拷貝構(gòu)造函數(shù)30、當(dāng)一個(gè)類對(duì)象離開它的作用域時(shí),系統(tǒng)自動(dòng)調(diào)用該類的( D 。A. 無參構(gòu)造函數(shù) B. 帶參構(gòu)造函數(shù) C. 拷貝構(gòu)造函數(shù) D. 析構(gòu)函數(shù)31、假定一個(gè)類對(duì)象數(shù)組為An,當(dāng)離開它定義的作用域時(shí),系統(tǒng)自動(dòng)調(diào)用該類析構(gòu)函數(shù)的次數(shù)為( C 。A. 0 B. 1 C. n D. n-132、假定AB為一個(gè)類,則執(zhí)行 “AB a10;”語(yǔ)句時(shí)調(diào)用該類無參構(gòu)造函數(shù)的次數(shù)為( D 。A. 0 B. 1 C. 9 D. 1033、假定AB為一個(gè)類,則執(zhí)行 “AB

20、 *px=new ABn;”語(yǔ)句時(shí)調(diào)用該類無參構(gòu)造函數(shù)的次數(shù)為( A 。A. n B. n-1 C. 1 D. 034、假定AB為一個(gè)類,則執(zhí)行 “AB a, b(3, *p;”語(yǔ)句時(shí)共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( A 。A. 2 B. 3 C. 4 D. 535、假定AB為一個(gè)類,則執(zhí)行 “AB a(2, b3, *p4;”語(yǔ)句時(shí)共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( B 。A. 3 B. 4 C. 5 D. 936、假定AB為一個(gè)類,則執(zhí)行“AB a, b(2, c3, *p=&a;”語(yǔ)句時(shí)共調(diào)用該類無參構(gòu)造函數(shù)的次數(shù)為( D A. 5 B. 6 C. 3 D. 437、假定AB為一個(gè)類,則執(zhí)

21、行“AB *p=new AB(1,2;”語(yǔ)句時(shí)共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( B 。A. 0 B. 1 C. 2 D. 338、假定AB為一個(gè)類,px為指向該類的一個(gè)含有n個(gè)對(duì)象的動(dòng)態(tài)數(shù)組的指針,則執(zhí)行“delete px;”語(yǔ)句時(shí)共調(diào)用該類析構(gòu)函數(shù)的次數(shù)為( C 。A. 0 B. 1 C. n D. n+1二、填空題:1、用于存儲(chǔ)一個(gè)長(zhǎng)度為n的字符串的字符數(shù)組的長(zhǎng)度至少為_n+1_。2、若a是一個(gè)字符數(shù)組,則從鍵盤上向該數(shù)組輸入一個(gè)字符串的表達(dá)式為_getline(cin,a;_。3、若a是一個(gè)字符數(shù)組,則向屏幕輸出a中所存字符串的表達(dá)式為_cout< _ 。 4、一個(gè)二維字符數(shù)組a10

22、20能夠存儲(chǔ)_10_個(gè)字符串,每個(gè)字符串的長(zhǎng)度至多為_19_。5、對(duì)一個(gè)二維字符數(shù)組a進(jìn)行初始化的數(shù)據(jù)為”123”,”456”,”789”,則a1元素對(duì)應(yīng)的字符串為_”456”_。6、strlen(”apple”的值為_5_,strcmp(”a”,”A”的值為_1_。7、假定對(duì)數(shù)組a進(jìn)行初始化的數(shù)據(jù)為2,7,9,6,5,7,10,則a2和a5分別被初始化為_9_和_7_。8、假定對(duì)二維數(shù)組a34進(jìn)行初始化的數(shù)據(jù)為3,5,6,2,8,7,則a11和a23分別被初始化為_8_和_0_。9、若二維數(shù)組a有m列,設(shè)a00位于數(shù)組的第一個(gè)位置上,則計(jì)算任一元素aij在數(shù)組中位置序號(hào)的公式為_i*m+j+

23、1_。 10、若有定義“double a35;”,則a 數(shù)組中行下標(biāo)和列下標(biāo)的最大值分別為_2_和_4_。11、一個(gè)指針類型的對(duì)象占用內(nèi)存的_4_個(gè)字節(jié)的存儲(chǔ)空間。12、 一個(gè)指針指向一個(gè)數(shù)據(jù)對(duì)象,它保存著該數(shù)據(jù)對(duì)象的_地址_,若數(shù)據(jù)對(duì)象為DataType類型,則相應(yīng)的指針類型為_Datatype*_。13、 若要把一個(gè)整型指針p轉(zhuǎn)換為字符指針,則采用的強(qiáng)制轉(zhuǎn)換表達(dá)式為_(char*p_。14、假定一個(gè)數(shù)據(jù)對(duì)象為int*類型,則指向該對(duì)象的指針類型為_int *_。15、假定p是一個(gè)指向整數(shù)對(duì)象的指針,則用_*P_表示該整數(shù)對(duì)象,用_P_表示指

24、針變量p的地址。16、 假定p是一個(gè)指針,則*p+運(yùn)算首先訪問_*p_,然后使p_的值增1。17、假定p是一個(gè)指針,則(*p+運(yùn)算首先訪問_*p_,然后使_*p_的值增1。18、 假定p所指對(duì)象的值為25,p+1所指對(duì)象的值為42,則*p+的值為_25_。19、假定p所指對(duì)象的值為25,p+1所指對(duì)象的值為42,則*+p的值為_42_。20、假定p所指對(duì)象的值為25,p+1所指對(duì)象的值為42,則執(zhí)行(*p+運(yùn)算后,p所指對(duì)象的值為_26_。21、假定p所指對(duì)象的值為25,p+1所指對(duì)象的值為42,則執(zhí)行*(p+或*p+運(yùn)算后,p所指對(duì)象的值為_42_。22、假定a是一個(gè)一維

25、指針數(shù)組,則a+i所指對(duì)象的地址比a大_4*i_字節(jié)。23、 假定a是一個(gè)一維數(shù)組,則ai的指針訪問方式為_*(a+i)_。24、假定a是一個(gè)一維數(shù)組,則ai對(duì)應(yīng)的存儲(chǔ)地址(以字節(jié)為單位)為_a+i*sizeof(ai_。25、 一個(gè)數(shù)組的數(shù)組名實(shí)際上是指向該數(shù)組_首_元素的指針,并且在任何時(shí)候都不允許_ _修改_它。26、假定指向一維數(shù)組b10中元素b4的指針為p,則p+3所指向的元素為_b7_,p-2所指向的元素為_b2_。27、若要定義整型指針p并初始指向x,則所使用的定義語(yǔ)句為_int*p=&x_。28、 若p指向x,則_*p_與x的表示是等價(jià)的。

26、29、在一個(gè)二維數(shù)組int amn中,包含的一維元素ai的類型為_ intn_,訪問ai時(shí)返回值的類型為_ int*_。30、假定一個(gè)二維數(shù)組為c58,則c3的值為二維元素c30_的地址,c3+2的值為二維元素_c32_的地址。31、假定p為指向二維數(shù)組int d46的指針,則p的類型為_int (*)6_。32、假定a是一個(gè)二維數(shù)組,則aij的指針訪問方式為_*(*(a+i)+j)_。33、執(zhí)行int p=new int操作得到的一個(gè)動(dòng)態(tài)分配的整型對(duì)象為_*p_。  34、執(zhí)行int *p=new int10操作,使p指向

27、動(dòng)態(tài)分配的數(shù)組中下標(biāo)為0的元素,該元素可表示為_*p_或_p0_。35、 執(zhí)行char *p=new char(a操作后,p所指向的數(shù)據(jù)對(duì)象的值為_a_。36、 執(zhí)行new charmn操作時(shí)的返回值的類型為_char(*n_。37、執(zhí)行_delete_p_操作將釋放由p所指向的動(dòng)態(tài)分配的數(shù)據(jù)空間。38、執(zhí)行_deletep_操作將釋放由p所指向的動(dòng)態(tài)分配的數(shù)組空間。39、 NULL是一個(gè)符號(hào)常量,通常作為空指針值,它的具體值為_0_。40、變量v定義為“double v=23.4;”,要使指針pv指向v,則定義pv的語(yǔ)句為

28、_double *pv=&v_。41、 已知語(yǔ)句“cout< ”的輸出是“ Hello! ”,則語(yǔ)句“ cout<<*p; ”輸出的是 _ H_ _ 。 42、. 已知語(yǔ)句“cout< ”的輸出是“ apple ”,則執(zhí)行語(yǔ)句“ cout< ”的輸出結(jié)果為 _ple_ _ 。 43、 指針變量pv和pc定義為“void *pv =”Hello, word!”; char *pc;”,要將pv值賦給pc,則正確的賦值語(yǔ)句是_ strcpy(pc,pv);pc=char(*pv_。

29、44、 數(shù)組b定義為“int b20100;”,要使pjk 與bjk 等效,則指針p應(yīng)定義為_int (*p100=b _。45、 與結(jié)構(gòu)成員訪問表達(dá)式p->name等價(jià)的表達(dá)式是_(*_。46、 與結(jié)構(gòu)成員訪問表達(dá)式(*fp.score等價(jià)的表達(dá)式是_fp->score_。47、已知有定義“int x, a=5,7,9, *pa=a;”,在執(zhí)行“x=+*pa;”語(yǔ)句后,x的值是_6_。48、已知有定義“int x, a=6,10,12, *pa=a;

30、”,在執(zhí)行“x=*+pa;”語(yǔ)句后,*pa的值是_10_。49、已知有定義“int x, a=15,17,19, *pa=a;”,在執(zhí)行“x=*pa+;”后,*pa的值是_17_。50、若采用p->abc(y表達(dá)式調(diào)用一個(gè)成員函數(shù),在成員函數(shù)中使用的_this_就代表了類外的p指針。 51、在一個(gè)用數(shù)組實(shí)現(xiàn)的隊(duì)列類中,包含有兩個(gè)數(shù)據(jù)成員,一個(gè)指明隊(duì)首元素位置,另一個(gè)指明_隊(duì)列長(zhǎng)度_。52、在一個(gè)用數(shù)組實(shí)現(xiàn)的隊(duì)列類中,包含有兩個(gè)數(shù)據(jù)成員,一個(gè)指明隊(duì)列長(zhǎng)度,另一個(gè)指明_隊(duì)首_元素的位置。53、在一個(gè)用數(shù)組實(shí)現(xiàn)的隊(duì)列類中,假定數(shù)組長(zhǎng)度為MS,隊(duì)首元素位置

31、為first,隊(duì)列長(zhǎng)度為length,則插入一個(gè)新元素的位置為_(first+lengthMS_。54、在一個(gè)用數(shù)組實(shí)現(xiàn)的隊(duì)列類中,假定數(shù)組長(zhǎng)度為MS,隊(duì)首元素位置為first,隊(duì)列長(zhǎng)度為length,則刪除一個(gè)元素后隊(duì)首的位置為_(first+1)MS _。55、定義類動(dòng)態(tài)對(duì)象數(shù)組時(shí),其元素只能靠自動(dòng)調(diào)用該類的_無參構(gòu)造函數(shù)_來進(jìn)行初始化。56、為了釋放類對(duì)象中指針成員所指向的動(dòng)態(tài)存儲(chǔ)空間,則需要為該類定義_析構(gòu)函數(shù)_。57、假定 AB為一個(gè)類,則執(zhí)行“AB a10;”語(yǔ)句時(shí),系統(tǒng)自動(dòng)調(diào)用該類構(gòu)造函數(shù)的次數(shù)為_10_。58、假定一個(gè)類對(duì)象數(shù)組為AN,當(dāng)離開它的作用域時(shí),系

32、統(tǒng)自動(dòng)調(diào)用該類析構(gòu)函數(shù)的次數(shù)為_N_。60、假定指針p指向一個(gè)動(dòng)態(tài)分配的類對(duì)象,則當(dāng)執(zhí)行“delete p;”語(yǔ)句時(shí),在釋放p所指向的動(dòng)態(tài)存儲(chǔ)空間之前將自動(dòng)調(diào)用該類的_析構(gòu)函數(shù)_。61、假定AB為一個(gè)類,該類中含有一個(gè)指向動(dòng)態(tài)數(shù)組空間的指針成員pa,則在該類的析構(gòu)函數(shù)中應(yīng)該包含有一條_deletepa;_語(yǔ)句。三、程序填空題:1、采用指針訪問方式從鍵盤給數(shù)組aN輸入數(shù)據(jù),然后對(duì)元素值重新按逆序存放并輸出。#include const int N=8;void main(int aN,*p,*q;for(p=a; p cin>>*p ; p=a;q=a+N-1;while(

33、pint r=*p; *p=*q; *q=r;p+; q+;for(p=a;p cout<<*p<<' 'cout< 1、 (1 cin>>*p (2 p+ (或+p (3 q- (或-q2、假定有定義為“struct NODEint data; NODE* next;”,下面算法根據(jù)table數(shù)組中的n個(gè)元素建立一個(gè)表頭指針為L(zhǎng)的鏈表,鏈表中結(jié)點(diǎn)值的順序與數(shù)組元素值的順序正好相反。void f6(NODE*& L, int table, int n L=NULL;if(n<=0 return;int i=0; NODE*

34、 p;while(_ (1_ p=new NODE;p->data=_ _(2_;p->next=L;_(3_;i+;2、(1 i 3、已知一維數(shù)組類ARRAY的定義如下,構(gòu)造函數(shù)的作用是把參數(shù)n的值賦給s,給v動(dòng)態(tài)分配長(zhǎng)度為n的數(shù)組空間,接著利用數(shù)組參數(shù)a初始化v所指向的數(shù)組。class ARRAY int *v; /指向存放數(shù)組數(shù)據(jù)的空間int s; /數(shù)組大小 public: ARRAY(int a, int n; ARRAY(delete v;int size( return s; int& operator(int n; ;_(1_ ARRAY(int a, in

35、t nif(n<=0 v=NULL;s=0;return;s=n;v=_ (2_;for(int i=0; i 3、 (1 ARRAY: (2 new intn (3 vi=ai4、下面是一維數(shù)組類ARRAY的定義,ARRAY與普通一維數(shù)組區(qū)別是:(a用(而不是進(jìn)行下標(biāo)訪問,(2下標(biāo)從1而不是從0開始,(c要對(duì)下標(biāo)是否越界進(jìn)行檢查。class int *v; /指向存放數(shù)組數(shù)據(jù)的空間int s; /數(shù)組大小 public: ARRAY(int a, int n; ARRAY(delete v;int size( return s; int& operator(int n; _(1

36、_ operator(int n / (的運(yùn)算符函數(shù)定義 if(_(2_ cerr<<"下標(biāo)越界!" exit(1;return _(3_;4、(1 int& ARRAY: (2 n<1 | n>s (3 vn-1 (或*(v+n-15、已知一個(gè)類的定義如下:#include class AA int a10;int n;public:void SetA(int aa, int nn; /用數(shù)組aa初始化數(shù)據(jù)成員a,/用nn初始化數(shù)據(jù)成員nint MaxA(; /從數(shù)組a中前n個(gè)元素中查找最大值void SortA(; /采用選擇排序的方法對(duì)

37、數(shù)組a中前n個(gè)元素/進(jìn)行從小到大排序void InsertA(;/采用插入排序的方法對(duì)數(shù)組a中前n個(gè)元素進(jìn)行從小到大排序void PrintA(; /依次輸出數(shù)組a中的前n個(gè)元素;該類中MaxA(函數(shù)的實(shí)現(xiàn)如下,請(qǐng)?jiān)跇?biāo)號(hào)位置補(bǔ)充適當(dāng)?shù)膬?nèi)容。int _ _(1_ int x=a0;for(int i=1; i if(ai>x _ _(2_;_(3 _;5、(1 AA:MaxA( (2 x=ai (3 return x6、已知一個(gè)類的定義如下:#include class AA int a10;int n;public:void SetA(int aa, int nn; /用數(shù)組aa初始化數(shù)

38、據(jù)成員a,/用nn初始化數(shù)據(jù)成員nint MaxA(; /從數(shù)組a中前n個(gè)元素中查找最大值void SortA(; /采用選擇排序的方法對(duì)數(shù)組a中前n個(gè)元素/進(jìn)行從小到大排序void InsertA(;/采用插入排序的方法對(duì)數(shù)組a中前n個(gè)元素進(jìn)行從小到大排序void PrintA(; /依次輸出數(shù)組a中的前n個(gè)元素;void AA:SortA(int i,j;for(i=0; _ _(1_; i+ int x=ai, k=i;for(j=i+1; j if(aj ak=ai;_(3_;6、(1 i 或 i<=n-2 (b x=aj; k=j; (c ai=x 7、已知一個(gè)類的定義如下:#

39、include class AA int a10;int n;public:void SetA(int aa, int nn; /用數(shù)組aa初始化數(shù)據(jù)成員a,/用nn初始化數(shù)據(jù)成員nint MaxA(; /從數(shù)組a中前n個(gè)元素中查找最大值void SortA(; /采用選擇排序的方法對(duì)數(shù)組a中前n個(gè)元素/進(jìn)行從小到大排序void InsertA(;/采用插入排序的方法對(duì)數(shù)組a中前n個(gè)元素進(jìn)行從小到大排序void PrintA(; /依次輸出數(shù)組a中的前n個(gè)元素;void _(1_ int i,j;for(i=1; i int x=ai;for(j=i-1; j>=0; j-if(x el

40、se _(3_;aj+1=x;7、(1 AA:InsertA( (2 aj+1=aj (3 break 8、已知一個(gè)類的定義如下:#include class AA int a10;int n;public:void SetA(int aa, int nn; /用數(shù)組aa初始化數(shù)據(jù)成員a,/用nn初始化數(shù)據(jù)成員nint MaxA(; /從數(shù)組a中前n個(gè)元素中查找最大值void SortA(; /采用選擇排序的方法對(duì)數(shù)組a中前n個(gè)元素/進(jìn)行從小到大排序void InsertA(;/采用插入排序的方法對(duì)數(shù)組a中前n個(gè)元素進(jìn)行從小到大排序void PrintA(; /依次輸出數(shù)組a中的前n個(gè)元素/最

41、后輸出一個(gè)換行;使用該類的主函數(shù)如下:void main(int a10=23,78,46,55,62,76,90,25,38,42;AA x; _ _(1_;int m=_(2_;_(3_;cout< 該程序運(yùn)行結(jié)果為:23 78 46 55 62 76788、(1 x.SetA(a,6 (2 x.MaxA( (3 x.PrintA( 9、已知一個(gè)類的定義如下:#include class AA int a10;int n;public:void SetA(int aa, int nn; /用數(shù)組aa初始化數(shù)據(jù)成員a,/用nn初始化數(shù)據(jù)成員nint MaxA(; /從數(shù)組a中前n個(gè)元素

42、中查找最大值void SortA(; /采用選擇排序的方法對(duì)數(shù)組a中前n個(gè)元素/進(jìn)行從小到大排序void PrintA(; /依次輸出數(shù)組a中的前n個(gè)元素,/最后輸出一個(gè)換行;使用該類的主函數(shù)如下:void main(int a10=23,78,46,55,62,76,90,25,38,42;_ _(1_; x.SetA(a,8;int _(2_;_(3_;x.PrintA(;cout< 該程序運(yùn)行結(jié)果為:23 25 46 55 62 76 78 90909、(1 AA x (2 m=x.MaxA( (3 x.SortA(10、class A int a;public:A( a=0;_(

43、1_ /定義構(gòu)造函數(shù),用參數(shù)aa初始化數(shù)據(jù)成員a;main( _(2_; /定義類A的指針對(duì)象p_(3_; /用p指向動(dòng)態(tài)對(duì)象并初始化為整數(shù)510、 答案:(1 A(int aa:a(aa(2 A *p 11、class A char *a;public:_(1_ /定義無參構(gòu)造函數(shù),使a的值為空A(char *aa a=_(2_; strcpy(a,aa; /用aa所指字符串初始化a所指向的動(dòng)態(tài)存儲(chǔ)空間_ _(3_ /定義析構(gòu)函數(shù),刪除a所指向的動(dòng)態(tài)存儲(chǔ)空間;(3 p=new A(511、 答案:(1 A( a=0; 或A(:a(0 注:數(shù)據(jù)0可用NULL代替(2 new charstrle

44、n(aa+1(3 A( delete a;12、class A int a,b;public:A(int aa=0, int bb=0 _(1_ /分別用aa和bb對(duì)應(yīng)初始化a和b;main( _(2_ ; /定義類A的對(duì)象x并用5初始化,同時(shí)定義y并用x初始化_(3_ ; /定義p指針,使之指向?qū)ο髕12、 答案:(1 :a(aa,b(bb(2 A x(5,y(x 注:x(5與x=5等效,y(x 與y=x等效(3 A *p=&x13、class A int a,b;public:_(1_ /定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認(rèn)值為0,/在函數(shù)體中用aa初始化a,用bb初始化b;mai

45、n( A *p1, *p2;_(2_ ; /調(diào)用無參構(gòu)造函數(shù)生成由p1指向的動(dòng)態(tài)對(duì)象_(3_ ; /調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動(dòng)態(tài)對(duì)象,/使a和b成員分別被初始化為4和513、 答案:(1 A(int aa=0, int bb=0a=aa; b=bb;(2 p1=new A (3 p2= new A(4,514、 一種類定義如下:class Goodsprivate:char gd_name20; /商品名稱int weight; /商品重量static int totalweight; /同類商品總重量public:Goods (char*str,int w /構(gòu)造函數(shù)strcpy(g

46、d_name,str;weight=w;totalweight+=weight; Goods (totalweight -= weight; char* GetN(_(1_; /返回商品名稱int GetW(return weight;_(2_ GetTotal_Weight( /定義靜態(tài)成員函數(shù)返回總重量_(3_;14、(1 return gd_name (2 static int (3 return totalweight四、閱讀程序題:1、 #include #include void main( char a510="student","worker&qu

47、ot;,"soldier","cadre","peasant"char s110, s210;strcpy(s1,a0; strcpy(s2,a0;for(int i=1;i<5;i+ if(strcmp(ai, s1>0 strcpy(s1,ai;if(strcmp(ai, s2<0 strcpy(s2,ai;cout< 2、 #include #include class CD char* a;int b;public:void Init(char* aa, int bba=new charstrlen(a

48、a+1;strcpy(a,aa;b=bb;char* Geta( return a;int Getb( return b;void Output( cout< dx;void main(CD dy;dx.Init("abcdef",30;dy.Init("shenyafen",3*dx.Getb(+5;dx.Output(;dy.Output(;abcdef 30shenyafen 953、#include #include class CD char* a;int b;public:void Init(char* aa, int bba=new

49、charstrlen(aa+1;strcpy(a,aa;b=bb;char* Geta( return a;int Getb( return b;void Output( cout< ;void main(CD dx,dy;char a20;dx.Init("abcdef",30;strcpy(a,dx.Geta(;strcat(a,"xyz"dy.Init(a,dx.Getb(+20;dx.Output(;dy.Output(;abcdef 30abcdefxyz 50 4、#include #include class A char *a;pu

50、blic:A(char *s a=new charstrlen(s+1;strcpy(a,s;cout< A( delete a; cout<<"Destructor!"< ;void main( A x("xuxiaokai"A *y=new A("weirong"delete y;xuxiaokaiweirongDestructor!Destructor!5、#include class A int a;public:A(int aa=0: a(aa cout< A( cout<<&quo

51、t;Xxk"void main( A *p; A x3=1,2,3,y=4;cout< p=new A3;cout< delete p;cout< 1 2 3 40 0 0XxkXxkXxkXxkXxkXxkXxk五、程序改錯(cuò)1. 在下面的定義中,NODE是鏈表結(jié)點(diǎn)的結(jié)構(gòu),appendToList則是一函數(shù),其功能是:在list所指向的鏈表的末尾添加一個(gè)新的值為x的結(jié)點(diǎn),并返回表頭指針。函數(shù)中有兩處錯(cuò)誤,指出錯(cuò)誤所在行的行號(hào)并提出改正意見。struct NODEint data;NODE *next;NODE* appendToList(NODE *list, in

52、t x /1行NODE *p=new int; /2行p->data=x; /3行p->next=NULL; /4行if(list=NULL return p; /5行NODE *p1=list; /6行while(p1->next!=NULL p1=p1->next; /7行,鏈表非空先找到表尾p1=p; /8行,讓原表尾指針指向新添加的結(jié)點(diǎn)return list; 錯(cuò)誤行的行號(hào)為_2_和_8_。分別改正為NODE *p=new NODE;和_strcpy(p1,p_ p1->next=p; _。 2、 假定要求下面程序輸出結(jié)果為“d=800,f=60”,在第4-23行中存在著三條語(yǔ)句錯(cuò)誤,請(qǐng)指出錯(cuò)誤語(yǔ)句的行號(hào)并改正。#include class A /1行int a10; int n; /2行public: /3行A(int aa, int nn: n(nn /4行for(int i=0; i aai=ai ; /5 行 /6行int Get(int i return ai; /7行int SumA(int n; /8行; /9行int A:SumA(int n /10行int s=0; /11行for(int j=0; j 行 return s; /13行 /14行void main( /15行int a=2,5,8,10,15,20;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論