(績效考核)面向對象程序設計形成性考核冊作業(yè)四_第1頁
(績效考核)面向對象程序設計形成性考核冊作業(yè)四_第2頁
(績效考核)面向對象程序設計形成性考核冊作業(yè)四_第3頁
(績效考核)面向對象程序設計形成性考核冊作業(yè)四_第4頁
(績效考核)面向對象程序設計形成性考核冊作業(yè)四_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

壹、填空題:A.無參構造函數B.帶參構造函數C.析構函數D.拷貝構造函數2.假定AB為壹個類,則執(zhí)行“ABa[10];”語句時調用該類無參構造函數的次數為(D)。A.0B.1C.9D.10A.3B.4C.5D.94.假定AB為壹個類,px為指向該類的壹個含有n個對象的動態(tài)數組的指針,則執(zhí)行“delete[]px;”語句時共調用該類析構函數的次數為(C)。A.0B.1C.nD.n+15.對類中引用成員的初始化是通過構造函數中給出的(C)實現(xiàn)的。A.函數體B.參數表C.初始化表D.初始化表或函數體6.壹個類的靜態(tài)數據成員所表示屬性(C)。A.是類的或對象的屬性B.只是對象的屬性C.只是類的屬性D.類和友元的屬性7.被非靜態(tài)成員函數訪問的類的數據成員(A)。A.能夠是非靜態(tài)數據成員或靜態(tài)數據成員B.不可能是類的靜態(tài)數據成員C.只能是類的非靜態(tài)數據成員D.只能是類的靜態(tài)數據成員A.增強數據安全性B.提高程序的可靠性C.提高程序的效率和靈活性D.保證類的封裝性9.于重載壹個運算符時,其參數表中沒有任何參數,這表明該運算符是(B)。A.作為友元函數重載的1元運算符B.作為成員函數重載的1元運算符C.作為友元函數重載的2元運算符D.作為成員函數重載的2元運算符10.如果表達式a+b中的“+”是作為成員函數重載的運算符,若采用運算符函數調用格式,A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)A.a.operator++(1)B.operator++(a)C.operator++(a,1)D.a.operator++()A.()B.=C.++D.*13.下面是重載雙目運算符+的普通函數原形,其中最符合+原來含義的是(A)。A.Valueoperator+(Value,Value);B.Valueoperator+(Value,int);C.Value&operator+(Value,Value);D.ValA.運算符函數的返回值類型是ostream&。B.重載的運算符必須定義為類的成員函數。C.運算符函數的第壹個參數的類型是ostream&。A.部分特性,且允許增加新的特性或重定義基類的特性B.部分特性,但不允許增加新的特性或重定義基類的特性C.所有特性,且允許增加新的特性或重定義基類的特性D.所有特性,但不允許增加新的特性或重定義基類的特性16.對于公有繼承,基類中的私有成員于派生類中將(C)。A.能夠直接使用成員名訪問B.能夠通過成員運算符訪問C.仍然是基類的私有成員D.變?yōu)榕缮惖乃接谐蓡T17.建立包含有類對象成員的派生類對象時,自動調用構造函數的執(zhí)行順序依次為(C)的構A.自己所屬類、對象成員所屬類、基類B.對象成員所屬類、基類、自己所屬類C.基類、對象成員所屬類、自己所屬類D.基類、自己所屬類、對象成員所屬類A.派生類至少有壹個基類B.派生類可作為另壹個派生類的基類C.派生類除了包含它直接定義的成員外,仍包含其基類的成員D.派生類所繼承的基類成員的訪問權限保持不變二、填空題1.當壹個隊列為滿時,不能對其做插入元素的操作。__elemHead->next指向隊首結點的后繼(即下壹個)結點。3.于壹個用鏈表實現(xiàn)的隊列類中,若鏈隊為空或只含有壹個結點,則隊首指針的值和隊尾指針的值相同。4.壹個類的析構函數通常用于實現(xiàn)釋放該類對象中指針成員所指向的動態(tài)存儲空5.定義類動態(tài)對象數組時,其元素只能靠自動調用該類的無參構造函數來進行6.假定AB為壹個類,則執(zhí)行“ABa[10];”語句時,系統(tǒng)自動調用該類構造函數的次數為______7.對類中引用成員的初始化只能通過于構造函數中給出的初始化表來實現(xiàn)。8.假定要把aa定義為AB類中的壹個引用整數型數據成員,則定義語句為_int&aa;__。類自動定義壹個無參構造函數"AB(){}"。義該類的對象時,能夠有3種不同的定義格式。語句“ABx(5);”是錯誤(正確/錯誤)的。14.重載運算符時,該運算符的__優(yōu)先級、結合性以及操作符的個數不允許改變。16.重載抽取運算符>>時,其運算符函數的返回值類型應當是istream&。17.類型轉換函數沒有返回值類型,而且參數表為__空。18.當保護繼承時,基類的_公有和保護__成員于派生類中成為保護成員,派生類對象不能直接訪問基類的任何成員。19.引進虛基類的根本目的是為了消除二義性。三、程序填空:1.已知壹個利用數組實現(xiàn)棧的類定義如下:constintARRAY_SIZE=10;classStack{voidInit(){top=-1;}//初始化棧為空voidPush(intnewElem);//向棧中壓入壹個元素intPop();//從棧頂彈出壹個元素boolEmpty(){//判??読f(top==-1)returntrue;elsereturnfalse;}intDepth(){returntop+1;}//返回棧的深度voidPrint();//按照后進先出原則依次輸出棧中每個元素,直到??諡橹筰ntelem[ARRAY_SIZE];//用于保存堆棧元素的數組inttop;//指明棧頂元素位置的指針該類的Pop和Print函數的實現(xiàn)分別如下: if(top==-1){cout<<"???"<<endl;exit(1);//中止運行}}voidStack::Print(){while(!Empty())}(1)intStack::Pop()(2)elem[top--](3)Pop()2.#include<iostream.h>#include<stdlib.h>int*a;intn;intMaxLen;A():a(0),n(0),MaxLen(0){}A(int*aa,intnn,intMM){MaxLen=MM;if(n>MaxLen)exit(1); (1);//由a指向長度為MaxLen的動態(tài)數組for(inti=0;i<n;i++)a[i]=aa[i];}intGetValue(inti)(2)//函數體返回a[i]的值voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10};Ar(b,10,10);for(i=0;i<10;i++)(3);//把r對象的a數據成員中的每個//元素值依次累加到s中cout<<"s="<<s<<endl;}(1)a=newint[MaxLen](2){returna[i];}(3)s+=r.GetValue(i)3.于下面壹段類定義中,Derived類公有繼承了基類Base。需要填充的函數由注釋內容給出classBase{intmem1,mem2;//基類的數據成員Base(intm1,intm2){mem1=m1;mem2=m2;}voidoutput(){cout<<mem1<<''<<mem2<<'';}//...classDerived:publicBase{intmem3;//派生類本身的數據成員//構造函數,由m1和m2分別初始化mem1和mem2,由m3初Derived(intm1,intm2,intm3);//輸出mem1,mem2和mem3數據成員的值voidoutput(){ (1);cout<<mem3<<endl;}//...Derived::Derived(intm1,intm2,intm3):(2){(3);}(1)Base::output()(2)Base(m1,m2)(3)mem3=m3四、寫出程序運行結果:1.#include<iostream.h>classFranction{//定義分數類intnume;//定義分子intdeno;//定義分母//把*this化簡為最簡分數,具體定義于另外文件中實現(xiàn)voidFranSimp();//返回倆個分數*this和x之和,具體定義于另外文件中實現(xiàn)FranctionFranAdd(constFranction&x);//置分數的分子和分母分別0和1voidInitFranction(){nume=0;deno=1;}//置分數的分子和分母分別n和dvoidInitFranction(intn,intd){nume=n;deno=d;}//輸出壹個分數voidFranOutput(){cout<<nume<<'/'<<deno<<endl;}voidmain(){Franctiona,b,c,d;a.InitFranction(6,15);b.InitFranction(3,10);c.InitFranction();c=a.FranAdd(b);d=c.FranAdd(a);cout<<"a:";a.FranOutput();cout<<"b:";b.FranOutput();cout<<"c:";c.FranOutput();cout<<"d:";d.FranOutput();}程序運行結果為:a:6/15d:11/102.#include<iostream.h>A(){a=b=0;}A(intaa,intbb){a=aa;b=bb;}intSum(){returna+b;}int*Mult(){int*p=newint(a*b);}voidmain(){int*k;Ax(2,3),*p;p=newA(4,5);cout<<x.Sum()<<''<<*(x.Mult())<<endl;cout<<p->Sum()<<''<<*(k=p->Mult())<<endl;deletek;}程序運行結果為:#include<iostream.h>classDate{Date(inty=2000,intm=1,intd=1){Year=y;Month=m;Day=d;}voidPrintDate(){cout<<Year<<'/'<<Month<<'/'<<Day<<endl;}classTime{Time(inth=0,intm=0,ints=0){Hour=h;Minutes=m;Seconds=s;}voidPrintTime(){cout<<Hour<<':'<<Minutes<<':'<<Seconds<<endl;}intHour,Minutes,Seconds;classDate_Time:publicDate,publicTime{Date_Time(inty,intmo,intd,inth=0,intmi=0,ints=0):Date(y,mo,d),Time(h,mi,s){};voidPrintDate_Time(){PrintDate();PrintTime();}voidmain(){Date_Timea,b(2002,10,1,23,59,59),c(2002,12,31);a.PrintDate_Time();b.PrintDate_Time();c.PrintDate_Time();}程序運行結果為:2000/1/12002/10/123:59:592002/12/31/****************test.h**************************/#include<iostream.h>{voidInitP(floatx0=0,floaty0=0){X=x0,Y=y0;}voidMove(floatxf,floatyf){X+=xf;Y+=yf;}floatGetX(){returnX;}floatGetY(){returnY;}private:floatX,Y;classRectangle:publicPoint{voidInitR(floatx,floaty,floatw,floath){InitP(x,y);W=w;H=h;}voidZoomR(floatk){W*=k,H*=k;}floatGetH(){returnH;}floatGetW(){returnW;}//***********************************test.cpp*******************#include”test.h”voidmain(){rect.InitR(10,20,30,40);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<','<<rect.GetH()<<endl;rect.Move(5,6);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<','<<rect.GetH()<<endl;rect.ZoomR(7);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<','<<rect.GetH()<<endl;}程序運行結果為:15,26,210,280五、指出程序或函數的功能1.intCount(IntNode*f){if(!f)return0;while(f){}}假定IntNode的類型定義為:structIntNode{intdata;//結點值域IntNode*next;//結點指針域函數的功能為:統(tǒng)計出以f為表頭指針的鏈表中結點的個數。2.intf(constchar*s){while(*s++)i++;函數的功能為:求出且返回字符指針參數s所指向的字符串長度。六、程序改錯,請根據程序段或函數模塊的功能改寫個別地方的錯誤。1.下面是分數類fract的定義及測試主程序,于類定義及其友元函數定義中有倆處錯誤,更classfract{intden;//分子intnum;//分母fract(intd=0,intn=1):den(d),num(n){}//1行friendfract&operator+=(fract,fract&);//2行voidshow(){cout<<den<<'/'<<num;}//3行friendfract&operator+=(fractf1,fractf2)//5行f1.den=f1.den*f2.num+f1.num*f2.den;//8行f1.num*=f2.num;//9行}voidmain(){fractfr(3,4);fr+=fract(5,7);}錯誤行的行號為2和5。分別改正為friendfract&operator+=(fract&,fract);和fract&operator+=(fract&f1,fractf2);。七、編程:1.根據下面類中構造函數的原型和注釋寫出它的類外定義。classStrings{char*s;//指向動態(tài)分配的字符串數組空間intn;//記錄字符串長度Strings(char*str);//構造函數,利用str字符串長度初始化n,//利用str字符串初始化s所指的字符串空間Strings(Strings&str);//拷貝構造函數Strings&Give(Strings&str);//實現(xiàn)str賦值給*this的功能StringsUion(Strings&str);//實現(xiàn)*this和str中的字符串合且的//功能,把合且結果存入臨時對象且返回intLenth(){returnn;}//返回字符串長度voidPrint(){cout<<s<<endl;}//輸出字符串類外定義如下:Strings::Strings(Strings&str)//拷貝構造函數{s=newchar[n+1];}2.下列程序段中,A_class的成員函數Variance()可求出倆數的平方差,Variance()函數從A_class類中分離出來,用友元函數來實現(xiàn)該函數的功能。classA_class{A_class(inti,intj):x(i),y(j){if(y>x){t=x;x=y;y=t;}}intVariance(){returnx*x-y*y;}//其它函數從略voidmain(){A_classA_obj(3,5);cout<<"Result:"<<A_obj.Variance()<<endl;}改寫后的程序如下:classA_class{A_class(inti,intj):x(i),y(j){if(y>x){t=x;x=y;y=t;};}//其它函數從略friendintVariance(A_class&ac);//參數名任意intVariance(A_class

溫馨提示

  • 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

提交評論