版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計(jì)練習(xí)題1ー、單項(xiàng)選擇題.對C++語言和C語言的兼容性,描述正確的是(A)A.C++兼専c B. C++部分兼容CC.C++不兼容C D. C兼容C++.在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對象是(C)A.cerr B. cinc.cout D. cfile.對使用關(guān)鍵字new所開辟的動(dòng)態(tài)存儲(chǔ)空間,釋放時(shí)必須使用(C)A.free B. createc.delete D. realse.如沒有使用成員訪問權(quán)限關(guān)鍵字定義類的數(shù)據(jù)成員,則默認(rèn)為(A)A.private B? publicC.protected D. friend5,使用值傳遞方式將實(shí)參傳給形參,下列說法正確的是(A)a?形?是實(shí)力的備份 B.實(shí)參是形參的備份C.形參和實(shí)參是同一對象 D,形參和實(shí)參無聯(lián)系6,在函數(shù)調(diào)用時(shí),如某ー默認(rèn)參數(shù)要指明一個(gè)特定值,則有(A)a?其之前所有參數(shù)部必須m值 B,其之后所有參數(shù)都必須賦值C.其前、后所有參數(shù)都必須賦值 D.其前、后所有參數(shù)都不必賦值7.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達(dá)式不正確的是(C )A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);m-max(22?59,7o)t D.intm=max(59,max(22,70));.下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(A)a.函數(shù)體語句較多 B,函數(shù)體語句較少C.函數(shù)執(zhí)行時(shí)間較短 D.函數(shù)執(zhí)行時(shí)間過長.intFunc(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載(BC)A.intFunC(int>int>int); B.doubleFuncfinGinthC.doubleFunc(doubleydouble);D.doubleFunc(intydouble);.對類中聲明的變量,下列描述中正確的是( )A,屬于全局變量 B.只屬于該類c.屬于發(fā)類,菓些情況下也可被娯類不同實(shí)例所共享D,任何情況下都可被該類所有實(shí)例共享.類的私有成員可在何處訪問(A,通過子類的對象訪問C.通過該類對象訪問B,本類及子類的成員函數(shù)中D.本類的成員函數(shù)中如果沒有為ー個(gè)類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是(A,鋼年富總是自動(dòng)創(chuàng)建一個(gè)不帯參數(shù)的構(gòu)選的數(shù)B.這個(gè)類沒有構(gòu)造函數(shù)13.C.這個(gè)類不需要構(gòu)造函數(shù)D.該類不能通過編譯13.C.這個(gè)類不需要構(gòu)造函數(shù)D.該類不能通過編譯ー個(gè)類可包含析構(gòu)函數(shù)的個(gè)數(shù)是(0個(gè)1個(gè)C,至少一個(gè)C,至少一個(gè)D,0個(gè)或多個(gè)14.this14.this指針存在的目的是(A.保證基類公有成員在子類中可以被訪問B.保證毎個(gè)對?擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼C.保證基類保護(hù)成員在子類中可以被訪問D.保證基類私有成員在子類中可以被訪問下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是(A.類本身的成員函數(shù)只能訪問自身的私有成員B.類的對象只能訪問該類的公有成員C,普通函數(shù)不能直接訪問類的公有成員,必須通過對象訪問D.一個(gè)類可以將另ー個(gè)類的對象作為成員在編譯指令中,宏定義使用哪個(gè)指令(B.#dcfincB.#dcfincD.#else17.設(shè)類A將其它類對象作為成員,則建立A類對象時(shí),下列描述正確的是(17.18.A.A類構(gòu)造函數(shù)先執(zhí)行B.成員構(gòu)造的數(shù)先執(zhí)行C.兩者并行執(zhí)行下列描述錯(cuò)誤的是(D.不能確定A.在創(chuàng)建對泰蔭,靜春成員不存在A.在創(chuàng)建對泰蔭,靜春成員不存在C.靜態(tài)成員函數(shù)不能是虛函數(shù)B.靜態(tài)成員是類的成員D,靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員19.對于友元描述正確的是(A.友元是本類的成員函數(shù)B,友元不是本類的成員的數(shù)20.C.友元不是函數(shù)D.友元不能訪問本類私有成員在哪種派生方式中,派生類可以訪問基類中的protected成員(A.public和privateC.protected和privateB.puMic和protectedD.僅protected二、填空題24.定義虛函數(shù)所用的關(guān)鍵字是ー'い3_。.類的繼承是指子類繼承基類的一成員初一和成員函數(shù)。.不同對象可以調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為ー多?ー。._.イ皿_指令指示編譯器將一個(gè)源文件嵌入到帶該指令的源文件之中。.設(shè)類A有成員函數(shù)voidFun(void);若要定義ーt"指向類成員函數(shù)的指針變量pafn來指向Fun,該指針變量的聲明語句是:_void(A::?pafnXvold);_。.設(shè)在程序中使用如下語句申請了一個(gè)對象數(shù)組:Point*ptr=newPoint|2|;則在需要釋放ptr指向的動(dòng)態(tài)數(shù)組對象時(shí),所使用的語句是—dMi]”ー。.在保護(hù)派生中,基類權(quán)限為Private的成員在派生類中一不可訪同一。.類A有如下成員函數(shù)intA::fun(doublex){return(int)x/2;}intA::fun(intx){returnx*2;}設(shè)a為類A的對象,在主函數(shù)中有ints=a.fun(6.0)+a.fun(2),則執(zhí)行該語句后,s的值為フ。.對象傳送的消息一般由3部分組成:接收對象名、調(diào)用操作名和一參數(shù)ー。.將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對象指針,實(shí)參是對象的ー舶.在C++中,聲明布爾類型變量所用的關(guān)鍵字是ー砕_。C++語言中可以實(shí)現(xiàn)輸出ー個(gè)換行符并刷新流功能的操控符是ー°間_。三、改錯(cuò)題(下面的類定義中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見)#include<iostream.h>voidmain(){intx=5,y=6;constint*p=&x;生、J〃修改京見,去掉本句飄去掉上句中的constcout?*p?endl;}#include<iostream.h>classf{private:intx,y;public:fl(){x=0;y=0;}print(){coutvvxW,?y?endl;}};voidmain(){fa;a.n(i.I);,修改?見:本句改為a.nけ或修改成員函效n的定義a.print();44.#include<iostream.h>classpoint{private:floatx;public:voidf(floata){x=a;}voidf(){x=0;}friendfloatmax(point<&a,point&b);}:floatmax(point<&a,point<&b){return(a.x>b.x)?a.x:b.x;}voidmain(){pointa,b;a.f(2.2);b.f(3.3);〃修改知coutvvma*a.8,}四、完成程序題.完成下面類中的成員函數(shù)的定義.classpoint(private:intm,n;public:point(int?int);point(point&);):point::point(intayintb){m=a;n=b;)point::point(point&t)|m=t.m;n=t.n;}.下面是ー個(gè)輸入半徑,輸出其面積和周長的CH程序,在下劃線處填上正確的語句。#include<iostream>usingnamespacestd;constdoublep】=3.14159;voidmain()doubler;coutvv"r=,f;_cin>>r_;doublel=2.0*pi*r;doubles=pi*r*r;coutw"\nThelongis:"?l?endl;cout?"Theareais:"?s?endl;}.在下劃線處填上缺少的部分。#include<iostream>usingnamespacestd;classcomplex{public:intreal;intimag;complex(intr=0,inti=0){real=r;imag=i;}};complexoperator+( complex&b)|intr=a.real4-b.real;inti=a.imag+b.imag;returncomplexyu;}voidmain(){complexx(L2)>y(3,4),z;z=x+y;cout?z.real?"+"?z.imag?"i"?endl;}.程序的輸出結(jié)果如下:b950,30請根據(jù)輸出數(shù)據(jù)在下面程序中的下劃線處填寫正確的語句。源程序如下:#inc!ude<iostream>usingnamespacestd;classbase{private:intm;public:base(){};base(inta):m(a){}intget(){returnm;}voidset(inta){m=a;})?voidmain(){base*ptr=newbase|2|;ptr->set(30);ptr=_mr+i;ptr->set(50);basea|2)={l,9};cout?a|0|.get()?w,"?a|l|.get()?endl;cout?ptr->get()?r,,”;ptr=ptr-l;cout?jtr->gct()?endl;delete)|ptr;}五、程序分析題.給出下面程序的輸出結(jié)果。#include<iostream.h>template<classT>classSample(Tn;public:Sampie(Ti){n=i;}intoperator==(Sample&);template<classT>intSample<T>::operator==(Sample&s)(if(n=s.n)return1;elsereturn0;}voidmain()(Sample<int>sl(2),s2(3)J .coutvv"Si與s2的數(shù)據(jù)成員"?(sl=s2?〃相等":"不相等")?endl;Sample<long>s3(25)fs4(25);cout?"s3與s4的數(shù)據(jù)成員"《(s3=s4?"相等":"不相等")《endl;}.給出下面程序的輸出結(jié)果。#include<iostream>usingnamespacestd;template<classT>Tmax(TmbTm2){return(m1>m2)?ml:m2;}voidmain(){cout?max(l,7)?"\t"?max(2.0,5.0)?endl;cout?max(zyr/b,)vv"\t"?max("A","a")?endl;}.給出下面程序的輸出結(jié)果#include<iostream>usingnamespacestd;classA{public:intx;A(){}A(inta){x=a;}intget(inta){returnx+a;}voidmain(){Aa(8)sint(A::*p)(int);p=A::get;cout?(a.*p)(5)?endl;A*pi=&a;cout?(pi->*P)(7)?endl;}.給出下面程序的輸出結(jié)果。include<iostream>#include<string>usingnamespacestd;classBook{char*title;char*author;intnumsold;public:Book(){}Book(constchar*strLconstchar*str2,constintnum){intlen=strlen(strl);title=newchar|len+l|;strcpy(title,strl);len=strlcn(str2);author=newchar|len+l|;strcpy(author?str2);numsold=num;)voidsetbook(constchar*strl,constchar*str2,constintnum){intlen=strlen(strl);title=newchar|len+l|;strcpy(titlc,strl);len=strlen(str2);author=newchar|len+l|;strcpy(author?str2);numsold=num;}?Book(){deletetitle;deleteauthor;}voidprint(ostream&output){outputvv"書名:"?title?endl;outputvv"作者:"?author?endl;outputvv"月銷售量:"?numsold?endl;}卜voidmain(){Bookobjl(〃數(shù)據(jù)結(jié)構(gòu)",〃嚴(yán)蔚敏",200),obj2;objl.print(cout);obj2.setbook(wC++語言程序設(shè)計(jì)","李春葆",210);obj2.print(cout);}六、程序設(shè)計(jì)題(本大題共1小題,共10分).在三角形類TR1實(shí)現(xiàn)兩個(gè)函數(shù),功能是輸入三個(gè)頂點(diǎn)坐標(biāo)判斷是否構(gòu)成三角形#include<iostream.h>#include<math.h>classpoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}point(){x=0;y=0;}voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx;}floatgety(){returny;}};classtri{pointx,y,z;floatsi,s2,s3;public: ...settri(....);//用于輸入三個(gè)頂點(diǎn)坐標(biāo)....test(....);//用于判斷是否構(gòu)成三角形請寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題C++程序設(shè)計(jì)練習(xí)題2ー、單項(xiàng)選擇題1.編寫C++程序一般需經(jīng)過的幾個(gè)步驟依次是(A.編譯、編輯、連接、調(diào)試A.編譯、編輯、連接、調(diào)試C.編譯、調(diào)試、編輯、連接B.0?、?譯、連接、調(diào)試D.編輯、調(diào)試、編譯、連接.函數(shù)調(diào)用func((expl,exp2),(exp3,exp4,exp5))中所含實(shí)參的個(gè)數(shù)為(A.1C.4B.2D.5.函數(shù)調(diào)用func((expl,exp2),(exp3,exp4,exp5))中所含實(shí)參的個(gè)數(shù)為(A.1C.4B.2D.5.假定AB為一個(gè)類,則執(zhí)行“ABa(2),b[3],*p[4]語句時(shí)共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為(A.3C.5B.4D.9.假定AB為一個(gè)類,px為指向該類的ー個(gè)含有n個(gè)對象的動(dòng)態(tài)數(shù)組的指針,則執(zhí)行“deleteロpx;”語句時(shí)共調(diào)用該類析構(gòu)函數(shù)的次數(shù)為(A.0用該類析構(gòu)函數(shù)的次數(shù)為(A.0B.1D.n+1.如果表達(dá)式++a中的“X■”是作為成員函數(shù)重載的運(yùn)算符,若采用運(yùn)算符函數(shù)調(diào)用格式,則可表示為(A.a.operator+-K1)C.operator-H-(a,l).如果表達(dá)式++a中的“X■”是作為成員函數(shù)重載的運(yùn)算符,若采用運(yùn)算符函數(shù)調(diào)用格式,則可表示為(A.a.operator+-K1)C.operator-H-(a,l).繼承機(jī)制的作用是(A.信息隱藏c.定義圻類B.operator-H-(a)D.a.operator-H-()B.數(shù)據(jù)封裝D.數(shù)據(jù)抽象.以下哪個(gè)基類中的成員函數(shù)表示純虛函數(shù)?(virtualvoidvf(int);C.virtualvoidvfvirtualvoidvf(int);C.virtualvoidvf(尸。;voidvf(int)=0;D.virtualvoidyf(int){}.假定一個(gè)類的構(gòu)造函數(shù)為“A(intaa,intbb){a=aa;b=aa*bb;}”,則執(zhí)行"Ax(4,5);”語句后,x.a和x.b的值分別為()A.4.假定一個(gè)類的構(gòu)造函數(shù)為“A(intaa,intbb){a=aa;b=aa*bb;}”,則執(zhí)行"Ax(4,5);”語句后,x.a和x.b的值分別為()A.4和5C.4和20.ー個(gè)類的靜態(tài)數(shù)據(jù)成員所表示屬性(A.是類或?qū)ο蟮膶傩詂.只是類的屬性.ー個(gè)C++源程序文件的擴(kuò)展名為(.h5和4D.20和5)B.只是對象的屬性D.是類和友元的屬性)C..cppD..cp二、填空題.重載操作符時(shí),應(yīng)聲明為.在C++中,編譯指令都是以ー“ー函數(shù)。(符號(hào))開始。.C++支持兩種多態(tài)性,編譯時(shí)的多態(tài)性和__運(yùn)行一時(shí)的多態(tài)性。.假定用戶為類AB定義了一個(gè)構(gòu)造函數(shù)"AB(intaa=0):a(aa){ド,則定義該類的對象時(shí),可以有.的定義格式。.若p指向x,則 *P與x的表示是等價(jià)的。種不同.當(dāng)函數(shù)參數(shù)表用_,。保留字表示時(shí),則表示該參數(shù)表為空。.每個(gè)對象都是所屬類的ー個(gè) 實(shí)例 .2().作為類的成員函數(shù)重載ー個(gè)運(yùn)算符時(shí),參數(shù)表中只有一個(gè)參數(shù),說明該運(yùn)算符有.個(gè)操作數(shù)。三、改錯(cuò)題21.假定要求下面程序輸出“d=8O0,f=60”,在第5-20行中存在著三條語句錯(cuò)誤,請指出錯(cuò)誤語句的行號(hào)并改正。#include<iostream.h>classA{inta[10];intn;public:〃1行〃2行〃3行A(intaaロ,intnn):n(nn){for(inti=0;i<n;i-H-)aa[i]=a[i];}intGet(inti){returna[i];}intSumA(intn);};intA::SumA(intn){ints=0;for(intj=0;j<n;j++)s+=a[j];〃4行行修改為,for(inti=0;i<n;i++)a[i]=aa[i];〃6行〃7行〃8行〃9行〃10行//ll行〃12行returns;}voidmain(){inta[]={2,5,8,10,15,20};Ax(a,6);intd=l;for(inti=0;i<4;i++)d*=x.a[i];intf=SumA(6);cout?Md=H?d<<,/;cout?Mf=H?f?endl;}〃13行〃14行〃15行〃16行〃17行〃18行〃i9行修改為,for(inti=0;i<4;i++)d*=x.Get(i);修改知intf=x.SumA(6);//21行〃22行〃23行.下面程序段第4到7行中存在著三條語句的語法錯(cuò)誤,請指出錯(cuò)誤語句的行號(hào)并改正。classA{inta,b;constintc;publicA0:c(0);a(0);b(0){}A(intaa,intbb)c(aa+bb);{a=aa;b=bb;}};Aa,b(l,2);A*x=&a,&y=b;A*z=newA,w[10];1/I行〃2行〃3行//4行佑行?A():c(0),a(0),b(0){)的行?>A(intaa,intbb):c(aa+bb){a=aa;b=bb;}〃7行〃8行〃9行//io行やA*z=newA;四、程序填空題(請按提示要求完成以下程序段的填空).在下面一段類定義中,Derived類公有繼承了基類Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。classBase{private:intmeml,mem2;〃基類的數(shù)據(jù)成員public: Base(intml,intm2){meml=ml;mem2=m2;}voidoutput(){cout?mem1?9,?mem2?,,;)〃…摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題classDerived:publicBase(private:intmem3;〃派生類本身的數(shù)據(jù)成員public:〃構(gòu)造函數(shù),由ml和m2分別初始化meml和mem2,由m3初始化mem3Derived(intml9intm2,intm3);/喩出meml,mem2和mem3數(shù)據(jù)成員的值voidoutput(){(0:cout?mem3?endl;}//...);Derived::Derived(intml,intm2,intm3):⑵{⑶;}需要補(bǔ)充的語句為:(1)Basc::output()(2)Bascfml.m2) (3)mem3=m3;24.classA{inta,b;public:(4)〃定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認(rèn)值為0,{a=aa;b=bb;}/Aft函數(shù)體中用aa初始化a,用bb初始化b};main(){A*pl,*p2;⑸;〃調(diào)用無參構(gòu)造函數(shù)生成由pl指向的動(dòng)態(tài)對象(6);〃調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動(dòng)態(tài)對象,〃使a和b成員分別被初始化為4和5}需ズ補(bǔ)充的語句為,(4)A(intaa=0,intbb=O)(5)pl=newA;(6)p2=newA(4,5);25.已知一個(gè)類的定義如下:(假設(shè)類的成員函數(shù)已實(shí)現(xiàn))#include<iostream.h>classAA{inta[10];intn;public:voidSetA(intaa||,intnn)5〃用數(shù)組aa初始化數(shù)據(jù)成員a,〃用nn初始化數(shù)據(jù)成員nintMaxA();〃從數(shù)組a中前n個(gè)元素中査找最大值voidSortA();〃采用選擇排序的方法對數(shù)組a中前n個(gè)元素〃進(jìn)行從小到大排序voidInsertAO5〃采用插入排序的方法對數(shù)組a中前n個(gè)元素進(jìn)行從小到大排序voidPrintA()?〃依次輸出數(shù)組a中的前n個(gè)元素〃最后輸出ー個(gè)換行);使用該類的主函數(shù)如下:voidmain()inta[10]={23,78,46,55,62,76,90,25,38,42};AAx;皿;intm=(8);J9L;cout?m?endl;}該程序運(yùn)行結(jié)果為:23784655627678需要補(bǔ)充的語句カI(xiàn)(7)x.Seta(a.6); (8)x.MaxA()(9)x.PrintA()五、程序分析題(閱讀以下程序,寫出其運(yùn)行結(jié)果)當(dāng)從鍵盤上輸入9.98時(shí),寫出下面程序的執(zhí)行結(jié)果。#indudevio§tream.h>voidmain(){inta,b;charch;cin?a?ch?b;/Z從鍵盤上輸入9.98cout?a?endl?b?endi;}#include<iostream.h>classaa{public:virtualintfunc(){return0;}};classtest:publicaa{public:intfunc(){return58;});voidmain(){testd;aa&b=d;cout?b.func()?endl;cout?b.aa::func()?endl;}#include<iostream.h>classmyclass{public:intnumber;voidset(inti);intnumber=8;voidmyclass::set(inti){number=i;}voidmain(){myclassmyl;intnumber=20;myl.set(6);cout?myl.number?endl;myl.set(numbcr);cout?myl.number?endl;myl.set(::number);cout?my1.number?endl;}#include<iostream.h>classa{public:virtualvoidprint(){cout?”thisisclassaprinting."?endl;};);classb:publica{public:voidprint(){};);classc:publicb|public:voidprint(){cout?"thisisclasscprinting."?endl;});voidshow(a&aa){aa.print();}voidmain()(aa;bb;cc;show(a);show(b);show(c);)3〇.#include<iostream.h>classDate(intYear,Month,Day;public:Date(inty=2001,intm=l,intd=l){Year=y;Month=m;Day=d;}voidPrintDate(){cout?Year?"/"?Month?"/"?Day?endl;}classTime{intHoure,Minutes,Seconds;public:Time(inth=5,intm=30,ints=0){Houre=h;Minutes=m;Seconds=s;}voidPrintTime(){cout?Houre?H:M?Minutes?M:M?Seconds?end!;});classDate_Time:publicDate,publicTime{public:Date_Time(乂};Date_Time(inty,intmo,intd,inth=O,intmi=0,ints=0):Date(y,mo,d),Time(h,mi,s){}voidPrintDate_Time(){PrintDate();PrintTime();}};voidmain()(Date_Timea,b(2002,10,l,6,20,0),c(2003,3,8,6,7);a.PrintDate_Time();b.PrintDate_Time();c.PrintDate_Time();)#include<iostream.h>voidf2(int&x,int&y)|intz=x;x=y;y=z;)voidmain(){intx=10,y=26;coutvv”x,y="vvxvv","?yvVendl;f2(x,y);cout?Mx,y=M?x?M,u?y?endl;X-H-;y-;f2(y,x);cout?,,x,y=M?x?,*,u?y?endl;)ー、單項(xiàng)選擇題.以下說法中正確的是( )A.CH程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行B.C++程序總是從main函數(shù)開始執(zhí)行C.C++函數(shù)必須有返回值,否則不能使用函數(shù)D.C++程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個(gè)程序文件中.以下關(guān)于函數(shù)模板敘述正確的是( )A.函數(shù)模板也是ー個(gè)具體類型的函數(shù)B.函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)是同一個(gè)概念C通過使用不同的類型*數(shù),函數(shù)樓板可以生成不同類型的函數(shù)D.用函數(shù)模板定義的函數(shù)沒有類型.在重載ー個(gè)運(yùn)算符時(shí),其參數(shù)表中沒有任何參數(shù),這表明該運(yùn)算符是( )A.作為友元函數(shù)重載的1元運(yùn)算符B.作ル成員函數(shù)重教的1元運(yùn)算符C.作為友元函數(shù)重載的2元運(yùn)算符D.作為成員函數(shù)重載的2元運(yùn)算符.構(gòu)造函數(shù)不具備的特征是( )A.構(gòu)造函數(shù)的函數(shù)名與類名相同B.構(gòu)造函數(shù)可以重載C.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)D.構(gòu)造函數(shù)必須指定類型說明TOC\o"1-5"\h\z.在C++中,封裝是借助什么達(dá)到的( )A.結(jié)構(gòu) B.數(shù)組c.類 D.函數(shù).在哪種情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)?( )A.函數(shù)體含有循環(huán)語句 B.函數(shù)體含有遞歸語句c.Mt代碼少、索繁調(diào)用 D.函數(shù)代碼多、不常調(diào)用.在關(guān)鍵字public后面定義的成員為類的( )A.私有成員 B.公用成員C.保護(hù)成員 D.任何成員.以下哪個(gè)基類中的成員函數(shù)表示純虛函數(shù)?( )A.virtualvoid B.voidtt(int)=0;C.virtualvoidtt(int); D.virtualvoidtt(int){}.假定AA是一個(gè)類,“AA*abc()con§t;”是該類中一個(gè)成員函數(shù)的原型,若該函數(shù)返回this值,當(dāng)用x.abcO調(diào)用該成員函數(shù)后,X的值( )A.已經(jīng)被改變 B.可能被改變c.不交 D.受到函數(shù)調(diào)用的影響.C++對C語言作了很多改進(jìn),即從面向過程變成為面向?qū)ο蟮闹饕蚴牵?)A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)C規(guī)定函數(shù)說明符必須用原型D.引進(jìn)了類和對蠶的概念2007年10月自考面向?qū)ο蟪绦蛟O(shè)計(jì)試題二、填空題.如果ー個(gè)派生類只有一個(gè)唯一的基類,則這樣的繼承關(guān)系稱為ー單繼承一。.C++支持兩種多態(tài)性:____時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。.所有模板都以template關(guān)鍵字和一個(gè)ー類型?數(shù)ー表開頭。.若一個(gè)函數(shù)的定義處于調(diào)用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的ーメ則ー語句。.類型轉(zhuǎn)換函數(shù)沒有返回值類型,而且參數(shù)表為ー空。.C++提供的預(yù)處理命令有嵌入指令,條件編譯指令和_城義指令一。.對象將其大部分實(shí)現(xiàn)細(xì)節(jié)隱藏起來,這種機(jī)制稱為ー值息(Mi.定義類動(dòng)態(tài)對象數(shù)組時(shí),其元素只能靠自動(dòng)調(diào)用該類的一ー構(gòu)胤來進(jìn)行初始化。.在函數(shù)體之前加一關(guān)鍵字可以防止函數(shù)誤操作改變數(shù)據(jù)成員的值。三、改錯(cuò)題(本大題共2小題,每小題6分,共12分).下面是分?jǐn)?shù)類fract的定義及測試主程序,在類定義及其友元函數(shù)定義中1到6行中有三處錯(cuò)誤,更正錯(cuò)誤后程序應(yīng)顯示41/28,請指出錯(cuò)誤所在行的行號(hào)并給出改正意見。classfract{intden; 〃分子intnum; 〃分母public in行TOC\o"1-5"\h\zfract(intd=0,intn=l):den(d),num(n){} //2行friendfract&operator+=(fract,fract&); 〃3行voidshow(){cout?den?*/'?num;} //4行}; //5行friendfract&operator+=(fractfl,fractf2) 〃6行( 〃7行fl.den=fl.den*f2.num+fl.num*f2.den; //8行fl.num*=f2.num; 〃9行returnfl; 〃10 行voidmain(){fractfr(3,4);fr+=fract(5,7);fr.show();錯(cuò)誤行的行號(hào)為ー1ヽ—3一和一6ー。分別改正為ー^public:ヽ friendfract&operator+=(fract&,fract&); 和friendfract&operator+=(fract&fl,fract&f2):〇.下面程序段第13.17行中存在著三條語句錯(cuò)誤,請指出錯(cuò)誤語句的行號(hào)并說明原因。TOC\o"1-5"\h\zclassA{ 〃1行inta; 〃2行public: //3行A(intaa=0):a(aa){} //4行}; //5行classB{ 〃6 行inta,b; //7 行constintc; //8 行〃9行〃10行//l!行〃9行〃10行//l!行1112行〃i3行應(yīng)去掉c=aa-bb;〃14行}Ba,b(l,2);Bx=a,y(b),z(l,2,3);//I5行 應(yīng)加上分號(hào)0〃16行〃17行Z的定義可以是"1,2);Ad;public:B():c(0){a=b=0;}B(intaa,intbb):d(aa+bb){a=aa;b=bb;c=aa-bb;錯(cuò)誤行的行號(hào)為_」3ヽ15ー和17一.錯(cuò)誤原因分別為_常成員變量只能用初始化表的方式初始化ー、_沒有分號(hào)一和 z定義借謾ー_0四、程序填空題(請按提示要求完成以下程序段的填空)23.在下面一段類定義中,Derived類是由直接基類Base1和Base2所派生的,Derived類包含有兩個(gè)間接基類BaseBase,在初始化函數(shù)Init中,需要把xl和x2的值分別賦給屬于基類Basel的x成員和屬于基類Base2的x成員。classBaseBase{protected:intx;public:BaseBase(){x=1;}classBasel:publicBaseBase{public:Basel(){}};classBasel:publicBaseBase{public:Base2(){}};classDerived:_⑴_(tái)(public:Derived(){}voidInit(intxl,intx2){一⑶一;voidoutput(){cout?Basel::x?,9?Base2::x?endl;};需要補(bǔ)充的語句為,(1)publicBasci,publicBasc2(2)Bascl::x"xl:(3)Basc2::x"x2;24.#include<iostream.h>#include<stdlib.h>classA{int*a;intn;intMaxLen;public:AO:a(0),n(0),MaxLen(O){}A(int*aa,intnn,intMM){n=nn;MaxLen=MM;if(n>MaxLen)exit(l);a=newint|MaxLen|;(4); 〃以i為循環(huán)變量把a(bǔ)a數(shù)組中每個(gè)元素值〃傳送給a數(shù)組的對應(yīng)元素中}~A();intGetValue(inti){returna|i];}〃函數(shù)體返回a[i]的值};(5) 〃析構(gòu)函數(shù)的類外定義voidmain()(intb|10|={l,2,3,4,5,6,7,8,9,10};Ar(b,10,10);inti,s=0;(6);〃以i為循環(huán)變量,把r對象的a數(shù)據(jù)成員中的〃每個(gè)元素值依次累加到s中cout?"s="?s?endl;}需要補(bǔ)充的語句ル,(4)forfinti=0;i<n;i++)a|i]=aa|i|;(5)A::?A(){delete||a;}(6)for(i=0;i<10;i++)s+=r.GetValue(i);25.下面是ー維數(shù)組類ARRAY的定義,ARRAY與普通一維數(shù)組區(qū)別是:(1)用()而不是[]進(jìn)行下標(biāo)訪問,(2)下標(biāo)從1而不是從0開始,(3)要對下標(biāo)是否越界進(jìn)行檢査。classARRAY{int*v;〃指向存放數(shù)組數(shù)據(jù)的空間ints; 〃數(shù)組大小public:ARRAY(inta||,intn);^ARRAY(){delete|1v;}intsize(){returns;}int&operator()(intn);};(7)operator()(intn){ 〃〇的運(yùn)算符函數(shù)定義if((8)){cerrvv”下標(biāo)越界!パ;exit(l);}//exit函數(shù)的功能是退出程序運(yùn)行return(9);需要補(bǔ)充的語句ル,(7)int&ARRAY::(8)n>s(9)v|n+1|五、程序分析題閱讀以下程序,寫出其運(yùn)行結(jié)果。26.#include<iostream.h>classtest{private:staticintval;inta;public:staticintfunc();staticvoidsfunc(test&r);};inttest::val=10;inttest::funcO(val—;returnval;}voidtest::sfunc(test&r)(r.a=15;cout?°rcsult3=''?r.a;)voidmain()(cout?Mresultl=''?test::func()?endl;testa;cout?Mresult2=''?a.func()?endl;test::sfunc(a);).#include<iostream.h>classposition{public:intx,y;voidinit(intinitx,intinity);intgetxvalue();intgetyalue();};voidposition::init(intinitx,intinity)x=initx;y=inity;}intposition::getxvalue(){returnx;}intposition::getyalue(){returny;}voidprintout(position&rl){cout?rl.getxva加e()vvnM?rl.getyalue()?*\nf;}voidmain()(positiona|6|={{1,1},{2,2},{3,3},{4,4},{5,5},{6,6}};position*pa=a;a|2|.init(7,8);pa->init(5,6);for(inti=0;i<5;i++)printout(*(pa++));.#include<iostream.h>classtest{public:virtualvoidfunl(){cout?”testfunl"?endl;}virtualvoidfun2(){cout?"testfun2"?endl;}voidfun3(){cout?"testfun3"?endl;}};classftt:publictest(public:voidfunl(){cout?"fttfunl"?endl;}virtualvoidfun2(){cout?"fttfun2"?endl;}virtualvoidfun3(){cout?"fttfun3"?endl;}};voidmain()(test*pp;fttq;pp=&q;pp->funl();pp->fun2();pp->fun3();}.#include<iostream.h>classcomplex{intreal;intimag;public:complex(intr=0,inti=0):real(r),imag(i){}complexoperator-H-(){real++;return*this;}voidshow(){cout?real?endl?imag;}};voidmain(){complexc(5,9);-H-c;c.show();)30.#include<iostream.h>classA{inta;public:A(intaa=0):a(aa){cout?a?endl;}~A(){cout?Hlln?endl;}voidmain(){A*p;Ax|2|={l,2};p=newA|3|;delete||p;)31.#include<iostream.h>classA{int*a;public:A(intx=0):a(newint(x)){}?A(){deletea;}intgetAO{return*a;}voidsetA(intx){*a=x;}};voidmain(){Axl,x2(3);A*p=&x2;p->setA(x2.getA()+5);xl.setA(l5+xl.getA());cout?x1.getA0?,,?x2.getA()?endl;}C++程序設(shè)計(jì)練習(xí)題4ー、單項(xiàng)選擇題.ー個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,可以選用( )A.內(nèi)法函數(shù) B,重載函數(shù)C.遞歸函數(shù) D,嵌套函數(shù).C++的繼承性允許派生類繼承基類的( )A,部分特性,并允許增加新的特性或重定義基類的特性B,部分特性,但不允許增加新的特性或重定義基類的特性c,所有特性,并允許増加新的特性或宜定義基類的特性D.所有特性,但不允許增加新的特性或重定義基類的特性.在C++中,封裝是借助什么達(dá)到的?( )A.結(jié)構(gòu) B.類C.數(shù)組 D,函數(shù).建立包含有類對象成員的派生類對象時(shí),自動(dòng)調(diào)用構(gòu)造函數(shù)的執(zhí)行順序依次為( )A.自己所屬類、對象成員所屬類、基類的構(gòu)造函數(shù)B,對象成員所屬類、基類、自己所屬類的構(gòu)造函數(shù)C.基類、對葷成員所!!類、自己所!(類的構(gòu)造函數(shù)D.基類、自己所屬類、對象成員所屬類的構(gòu)造函數(shù)TOC\o"1-5"\h\z.類的析構(gòu)函數(shù)是對ー個(gè)對象進(jìn)行以下哪種操作時(shí)自動(dòng)調(diào)用的?( )A.建立 B.撤消C.賦值 D,引用.下列不懸描述類的成員函數(shù)的是( )A.構(gòu)造函數(shù) B,析構(gòu)函數(shù)c.友元的效 D.拷貝構(gòu)造函數(shù).所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于( )A.全局變量 B.局部變量C,靜態(tài)變量 D,寄存器變量.假定AB為ー個(gè)類,則執(zhí)行ABx:語句時(shí)將自動(dòng)調(diào)用該類的( )A.有參構(gòu)造函數(shù) B,無參構(gòu)造函數(shù)C,拷貝構(gòu)造函數(shù) D.賦值構(gòu)造函數(shù).假定AA為一個(gè)類,a()為該類公有的成員函數(shù),x為AA類對象,則訪問x成員函數(shù)a()的格式為()A.X.a B.x.a()C.x->a D.x->a()2007年10月自考面向?qū)ο蟪绦蛟O(shè)計(jì)試題.對于任一個(gè)類,用戶所能定義的構(gòu)造函數(shù)的個(gè)數(shù)至多為( )A.O B.1C.2 d,任意個(gè)二、填空題(請?jiān)跉靶☆}的空格中填上正確答案).類對象的四大基本特性是多態(tài)性、繼承性、ー抽象性一和封裝性。.為了使類中的成員不能被類外的函數(shù)通過成員操作符訪問,則應(yīng)把該成員的訪問權(quán)限定義為ーホ”し。.C++程序的源文件擴(kuò)展名為ー.所有模版都是以jmp.關(guān)鍵字和一個(gè)形參表開頭的。.在#include命令中所包含的頭文件,可以是系統(tǒng)定義的頭文件,也可以是ー用戶(自し定義的頭文件。.ー個(gè)const對象只能訪問ー常一成員函數(shù)。.C++是通過引用運(yùn)算符ー&一來定義一個(gè)引用的。.若y是x的引用,則對y的操作就是對ーxー的操作。.執(zhí)行操作將釋放由p所指向的動(dòng)態(tài)分配的數(shù)據(jù)空間。.C++的流庫預(yù)定義了4個(gè)流,它們是cin、COUt、_ccrr_和clog。三、改錯(cuò)題.假定下面程序?qū)⒎謹(jǐn)?shù)a和b相加,其和賦值給c并輸出,要求輸出結(jié)果為“13ハ8”,其主函數(shù)5到8行之間存在著三行語句錯(cuò)誤,請指出錯(cuò)誤行的行號(hào)并改正。#include<iostream.h>classFranction{ 〃定義分?jǐn)?shù)類intnume; 〃定義分子intdeno; 〃定義分母public:〃把?this化簡為最簡分?jǐn)?shù),具體定義在另外文件中實(shí)現(xiàn)voidFranSimpO;〃返回兩個(gè)分?jǐn)?shù)?this和X之和,具體定義在另外文件中實(shí)現(xiàn)FranctionFranAdd(constFranction&x);〃置分?jǐn)?shù)的分子和分母分別〇和1voidInitFranction(){nume=0;deno=l;}//置分?jǐn)?shù)的分子和分母分別n和dvoidInitFranction(intn,intd){nume=n;dcno=d;}〃輸出ー個(gè)分?jǐn)?shù)voidFranOutput(){cout?numc?//'?dcno?endl;}};voidmain()〃1行{〃2行Franctiona,b,c;〃3行a.lnitFranction(748);〃4行b.InitFranction(l);〃5行c.InitFranction();〃6行c=FranAdd(a,b);〃フ行cout?c.nume?,/'?c.dcno?endl;〃8行}〃9行錯(cuò)誤行的行號(hào)為_5ー、ー7_和一8ー。分別改正為 b.InitFrancdon(1,3);__^ c=a.Fran/\dd(b); cout?c.FranOutput()?endl;_^〇22.下面是ー個(gè)類的定義,在5到12行之間有3行存在語法錯(cuò)誤,請指出錯(cuò)誤行的行號(hào)并改正classCE{//I行private:〃2行inta,b;〃3行intgetmin(){return(a<b?a:b);}//4行public〃5行intc;〃6行voidSetValue(intxl,intx2,intx3){〃7行a=xl;b=x2;c=x3;〃8行};〃9行 實(shí)際上這不售一個(gè)錯(cuò)誤!intGetMin();//10行};//I!行intGetMin(){〃12行intd=getmin();〃13行return(d<c?d:c);〃14行}〃15行錯(cuò)誤行的行號(hào)為5ヽ_9_和_12。分別改正為public:ヽ去掉分號(hào)和_intCE::GetMin()(〇四、程序填空題23.classA{inta,b;public:2007年10月自考面向?qū)ο蟪绦蛟O(shè)計(jì)試題—(1)ー〃定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認(rèn)值為〇,
/底函數(shù)體中用aa初始化a,用bb初始化b};main(){A*pl,*p2;—(2)—"/調(diào)用無參構(gòu)造函數(shù)生成由p!指向的動(dòng)態(tài)對象—(3)—;〃調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動(dòng)態(tài)對象,〃使a和b成員分別被初始化為4和5需要補(bǔ)充的語句為,(1) A(intaa=O.intbb=O):a(aa).b(bb) (2)24.ー種類定義如下:#include<iostream.h>#include<string.h>classBooks{private:charbk_name[20];intprice;staticinttotalprice;public:Books(char*str,intp){strcpy(bk_name,str);price=p;totalprice+=price;}-Books(){totalprice-=price;}char*GetN(){(4)pl=newA;(3)p2=newA(4,5);〃書的名稱〃書的價(jià)格〃同類書總價(jià)格〃構(gòu)造函數(shù)//strcpy函數(shù)將str字符串的內(nèi)容拷貝到bkname〃定義靜態(tài)成員函數(shù)〃返回總價(jià)格〃定義靜態(tài)成員函數(shù)〃返回總價(jià)格returntotalprice;intGetP(){returnprice;}(5) GetTotal_Price(){—(6)一;需要補(bǔ)充的語句為,returnbk_name;(5)staticint(6)五、程序分析題(閱讀以下程序,寫出其運(yùn)行結(jié)果)#include<iostream.h>constintN=6;voidfun();voidmain(){for(inti=l;i<N;i++)funO;}voidfun(){staticinta=2;cout?(a+=3)?f';)#include<iostream.h>#include<iomanip.h>classfun{friendostream&operator?(ostream&,fun);}ff;ostream&operator?(ostream&os,funf){os.setf(ios::left);returnos;}voidmain(){cout?setfill(z*')?sehv(10)?12345?endl;cout?ff?setw(10)?5432l?endl;}#include<iostream.h>classa(public:virtualvoidfunc(){cout?nfuncinclassaH?endl;}classbpublic:virtualvoidfunc(){cout?MfuncinclassbM?endl;}};classc:publica,publicb{public:voidfunc(){cout?nfuncinclasscn?endl;}};voidmain(){cc;a&pa=c;b&pb=c;pa.func();pb.func();}#include<iostream.h>classtesta{public:testa(){al=O;}testa(inti){al=i;}voidprintout(){cout?al;}private:intal;};classtestb:publictesta{public:testb(){bl=0;};testb(inti9intj,intk);voidprintout();private:intbl;testaaa;2007年10月自考面向?qū)ο蟪绦蛟O(shè)計(jì)試題testb::testb(inti,intjjntk):testa(i),aa(j){bl=k;}voidtestb::printout(){testa::printout();cout?endl;}voidmain(){testbtt[2];tt[〇]=testb(9,3,5);tt[1]=testb(8,4,7);for(inti=0;i<2;i++)tt[i].printout();)30.#include<iostream.h>voidmain(){for(inti=-l;i<4;i++)cout?(i?‘〇':'*');}31.#include<iostream.h>classDate(intYear,Month,Day;public:voidSetDate(inty,intm,intd){Year=y;Month=m;Day=d;}voidPrintDate(){cout?Year?,7n?Month?,7M?Day?endl;}Date(){SetDate(2000,l9l);)Date(inty,intm,intd){SetDate(y,m,d);}};classTime{intHoure,Minutes,Seconds;public:voidSetTime(inth,intm,ints){Houre=h;Minutes=m;Seconds=s;}voidPrintTime(){cout?Houre?M:M?Minutes?,,:,,?Seconds?endl;}Time(){SetTime(0,0,0);}Time(inth,intm,ints){SetTime(h,m,s);});classDate_Time:publicDate,publicTime{public:Date_Time():Date(),Time(){};Date_Time(inty,intmo,intd,inth,intmi,ints):Date(y,mo,d),Time(h,mi,s){}voidPrintDate_TimeO{PrintDateO;PrintTimeO;}};voidmain()|DateTimedt_a,dt_b(2002,10,1,6,0,0);dt_a.PrintDate_Time();dt_b.SetTime(23,59,59);dt_b.PrintDate_Time();dt_a.SetDate(2002,12,31);dt_a.PrintDate_Time();全國2006年10月髙等教育自學(xué)考試C++程序設(shè)計(jì)練習(xí)題5ー、單項(xiàng)選擇題.有關(guān)C++編譯指令,以下敘述正確的是( )A.C+徳行可以寫多條編譯指令include指令中的文件名可含有路程信息CC++的編譯指令可以以#或//開始D.C++中不管井if后的常量表達(dá)式是否為真,該部分都需要編譯.在C++中把不返回任何類型的函數(shù)應(yīng)該說明為 ( )A.int B.charc.void D.double.以下有關(guān)析構(gòu)函數(shù)的敘述不正ゆ的是( )A.析構(gòu)函數(shù)沒有任何函數(shù)類型B.析構(gòu)函數(shù)的作用是在對象被撤銷時(shí)收回先前分配的內(nèi)存空間c.析構(gòu)的數(shù)可以有形,D.ー個(gè)類只有一個(gè)析構(gòu)函數(shù).若Sample類中的一個(gè)成員函數(shù)說明如下:voidset(Sample&a),則其中Sample&a的含義是( )A.指向類Sample的名為a的指針B.”是類Sample的對復(fù)引用,用來作函數(shù)Set()的形參C將a的地址賦給變量SetD.變量Sample與a按位與的結(jié)果作為函數(shù)Set的參數(shù).以下敘述錯(cuò)誤的是( )A.基類的保護(hù)成員在公有派生類中仍然是保護(hù)成員B.基類的保護(hù)成員在派生類中仍然是保護(hù)成員C基類的保護(hù)成員在私有派生類中是私有成員D.基類的保護(hù)成員不能被派生類的對象訪問則定義ー個(gè)丫類的對象時(shí)和刪除丫類對象時(shí),調(diào)用構(gòu)造函數(shù)和.假設(shè)ClassY:publicX,即類Y是類X的派生類,析構(gòu)函數(shù)的次序分別為( )則定義ー個(gè)丫類的對象時(shí)和刪除丫類對象時(shí),調(diào)用構(gòu)造函數(shù)和A.X,Y|Y,XC.V,X;X,Y7.下列虛基類的說明中,A.classvirtualB:C.virtualclassB:8.要實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編必須(正確的是
publicA
publicA)B.X,Y;D.Y,X;
)B.classBtvirtualpublicAD.classB:publicAvirtualB.B.參數(shù)個(gè)數(shù)D.函致體B.通過對象名來調(diào)用虛函數(shù)A.B.通過對象名來調(diào)用虛函數(shù)C.通過派生類對象來調(diào)用虛函數(shù).在派生類中定義虛函數(shù)時(shí),可以與基類中相應(yīng)的虛函數(shù)不同的是(A.參數(shù)類型C函數(shù)名稱全國2006年10月高等教育自學(xué)考試.下列關(guān)于靜態(tài)數(shù)據(jù)成員的描述中正確的是( )、靜あ數(shù)據(jù)成員是類的所有對復(fù)所共有的B.靜態(tài)數(shù)據(jù)成員要在構(gòu)造函數(shù)內(nèi)初始化C.類的每個(gè)對象有自己的靜態(tài)數(shù)據(jù)成員D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用.與C語言printf("Hello,World\n");語句功能相同的C++語句是( )A.cout?"Hello,World\n"; B.cout?nHello.World\nw;C. cin?MHello,World\nM; D.cin?MHeilo,World\nH;.實(shí)現(xiàn)兩個(gè)相同類型數(shù)加法的函數(shù)模板的聲明是( )A. add(Tx,Ty) B.Tadd(x,y)C. Tadd(Tx,y) D.Tadd(TムTy)二、填空題(請?jiān)诿啃☆}的空格中填上正確答案).在面向?qū)ο蟪绦蛟O(shè)計(jì)中,將一組數(shù)據(jù)和這組數(shù)據(jù)有關(guān)的操作集合組裝在ー起形成對象,這個(gè)過程叫一封裝」不同的對象可以調(diào)用相同名稱的函數(shù)并導(dǎo)致完全不同的行為的現(xiàn)象稱為ー多あ一。.假如一個(gè)類的名稱為MyClass,則這個(gè)類缺省的構(gòu)造函數(shù)名稱為使用這個(gè)類的ー個(gè)對象初始化該類的另ー個(gè)對象時(shí),可以利用ー拷貝ー構(gòu)造函數(shù)來完成此功能。.局部對象和全局對象中,在同一程序中一全局對象—生存期最長;this指針始終指向當(dāng)前正在發(fā)出成員函數(shù)調(diào)用命令的_對蠶ー。.所謂賦值兼容規(guī)則是指在公有派生情況下,ー個(gè)一子ー類的對象可以作為一父ー類的對象來使用的地方。.帶有一鈍虛函數(shù)ー的類稱為抽象類,它只能作為一基類一來使用。.類模板用來表達(dá)具有相同一耐類里一的ー類ー_集合。.對已有的運(yùn)算符賦予多重含義,使同一運(yùn)算符作用于不同類型的數(shù)據(jù),稱為ー運(yùn)算符重載—,它的實(shí)質(zhì)就是ー1?好算符新的含義ー。三、改錯(cuò)題.下面類的定義中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并說明出錯(cuò)原因。classMyClass{intx=20,y?〃說明,類的成員變量不能在定義時(shí)初始化public:MyClass(intaa,intbb);intGetX();intGetY();};.以下程序?qū)崿F(xiàn)交換a,b變量的值,請用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。voidswap(n)”說明:傳值不能改變實(shí)參的值,應(yīng)改為傳引用voidsuap(int&&n){inttemp=m;m=n;n=temp;}voidmain(){inta=5,b=10;s、vap(a,b);cout?na=n?a?Mb=M?b;全國2006年10月髙等教育自學(xué)考試.下面程序中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并說明出錯(cuò)原因。classOne{protected:inta;public:voidsetOne(intx){a=x;}voidshowOne(){cout?Ma=,,?a?endl;}};classTwo:privateOne{public:voidsetTwo(intx){a=x;});voidmain(){Twoobj;obj.setTwo(lO);cout?,'obj.a?,,?obj.a?cndl:門說明]不能訪問obj的私有成員a}.下面程序?qū)崿F(xiàn)輸出半徑為2.5的圓的面積,但輸出結(jié)果是〇,找出原因并提出修改意見。classpoint{private:floatx,y;public:floatarea(),必須將其說明為虛函數(shù),才能實(shí)現(xiàn)多有今virtualfloatarea(){return0.0;}};constfloatpi=3.14159f;classcircle:publicpoint{private:floatradius;public:voidsetRadius(floatr){radius=r;}floatarea(){returnpi*radius*radius;}};voidmain(){point*p;circlec;c.setRadius(2.5);p=&c;cout?nTheareaofcircleisM?p->area()?end);}.下面程序中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并說明出錯(cuò)原因。classA(intx;friendclassB;};classB{};classC:publicB{voidfunc(A*p);voidC::func(A*p){A>、ー;}/里明:在類(中無法訪問類A的私有成員四、完成程序題.為使下列程序輸出結(jié)果為:丫=1,丫=3,か5請?jiān)跈M線處填上適當(dāng)?shù)淖志?以使程序完整。#include<iostream.h>classB{private:intY;public:B(inty=0){Y=y;}voidprintO{cout?nY=M?Y?M,M;});classD:publicB{private:Bb;intZ;public:D(intx9inty,intz):B(x),b(y){Z=z;}voidprint(){①_B”瞰)—;〃打印基類B中的成員丫②_b.printo_; 〃打印類成員b中的丫值cout?MZ=M<<Z?endl;}};voidmain(){ Dd(l,3,5);d.print();).在下面橫線處填上適當(dāng)字句,完成求最大值函數(shù)模板的定義。#include<iostream.h>template<typenameT>TMax(Tx,Ty){return(x>y?x:y);}^0 template<typenameT>TMax(Tx,Ty,Tz){Tt=Max(x,y);return(②_);}voidmain(){intx; doubley;x=Max(5,6);y=Max(12.3,3.4,7.8);cout?"x="?x?"y=''?y?endl;全國2006年10月髙等教育自學(xué)考試.在下面橫線處填上適當(dāng)字句,完成Distance函數(shù)的定義。#include<iostream.h>#include<math.h>classPoint(private:doubleX,Y;public:Point(doublex=0,doubley=0){X=x;Y=y;}voidMove(doublex,doubley){X=x;Y=y;}frienddoubleDistance(Point&pl,Point&p2);〃計(jì)算兩點(diǎn)間距);doubleDistance(Point&pl,Point&p2){doubledx=①_pi.x_p2.x_;doubledy=②__piy_p2.y_;returnsqrt(dx*dx+dy*dy);}voidniain(){Pointa(lJ);Pointb(a);b.Move(4,5);cout?Distance(a,b)?endl;}.為使下列程序輸出結(jié)果為:A::f()B::f()C::f()請?jiān)跈M線處填上適當(dāng)?shù)淖志?以使程序完整。#includc<iostream.h>classA{public: virtualvoid(1() {COUt?"A::f()\n";}};classB:publicA{public:voidf(){cout?"B::f()\n";}};classC:publicA{public:voidf(){cout?"C::f()\n";});voidmain()(Aa,②_*P ;Bb;Cc;p=&a;p->f();P=&b;p->f();p=&c;p->f();全國2006年10月高等教育自學(xué)考試.在下面橫線處填上適當(dāng)字句,完成類成員函數(shù)的定義。#include<iostream.h>classComplex{private:floatreal,imag;public:Complex(floatr=0,floati=0){real=r;imag=i;}voidDisplay(){cout?real;if(imag>0)cout?n+M?imag?Min;elseif(imag<0)cout?imag?niM;cout?endl;}Complexoperator+(Complex&b);friendComplexoperator-(Complex&a,Complex&b);};ComplexComplex::operator+(Complex&b){Complex*t=newComplex((D__real+b.real,imag+h.imag_);return*t;Complexoperator-(Complex&a,Complex&b)(Complex*t=newComplex((2)_j.real-b.reaLa.imag-b.imag_ );return*t;}voidmain(){Complexcl(4.0,5.0),c2(2.0,-5.0),c3;c3=cl+c2;c3.Display();c3=cl-c2;c3.Display();}五、程序分析題.寫出下面程序的輸出結(jié)果。#includc<iostream.h>#include<iomanip.h>inti=l;voidother(void)(staticinta=2,b;intc=10;a=a+l;i=i+3;c=c+5;cout?setw(5)?i?sehv(5)?a?setw(5)?b?setw(5)?c?endl;b=a;全國2006年10月髙等教育自學(xué)考試voidmain(void)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 渝西高鐵重慶開州牽220千伏外部供電工程環(huán)境影響報(bào)告表
- 手機(jī)安規(guī)考試題及答案
- 攝影專業(yè)單招考試題及答案
- 全科醫(yī)師兒科考試題庫及答案
- 《GAT 749-2008 公安檔案信息數(shù)據(jù)交換格式》專題研究報(bào)告
- 2026年深圳中考語文散文閱讀專項(xiàng)試卷(附答案可下載)
- 病理科給臨床的培訓(xùn)課件
- 2026年深圳中考物理命題趨勢預(yù)測試卷(附答案可下載)
- 2026年大學(xué)大二(建筑學(xué))建筑歷史與理論階段測試題及答案
- 2026年深圳中考生物眼球的結(jié)構(gòu)和視覺的形成試卷(附答案可下載)
- 汽車橫向課題申報(bào)書
- 《某醫(yī)院兒科實(shí)習(xí)護(hù)生實(shí)習(xí)護(hù)生的心理復(fù)原力情況調(diào)查探析》6800字
- 室上性心動(dòng)過速病人的護(hù)理查房
- 鋁扣板墻面施工協(xié)議
- DL∕T 1115-2019 火力發(fā)電廠機(jī)組大修化學(xué)檢查導(dǎo)則
- 宅基地兄弟贈(zèng)與協(xié)議書
- 影視文學(xué)劇本分析其文體特征
- (正式版)JTT 1218.6-2024 城市軌道交通運(yùn)營設(shè)備維修與更新技術(shù)規(guī)范 第6部分:站臺(tái)門
- 高考物理一輪復(fù)習(xí)重難點(diǎn)逐個(gè)突破專題71旋轉(zhuǎn)圓模型放縮圓模型平移圓模型(原卷版+解析)
- 重慶市萬州區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試卷+
- 內(nèi)科質(zhì)控會(huì)議管理制度
評論
0/150
提交評論