




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象程序設計期末復習題及答案1面向對象程序設計期末復習題及答案1面向對象程序設計期末復習題及答案1xxx公司面向對象程序設計期末復習題及答案1文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設計,管理制度C++面向對象程序設計復習試題類型1、單項選擇題(在每小題的四個備選答案中,選出一個正確答案,并將正確答案的序號填在題干的括號內。15題,每小題2分,共30分)[主要從作業(yè)題目中抽出來]2.填空題。(10題,每小題3分,共30分)3、閱讀程序,寫出程序運行結果?!疽卜Q計算題】(3題,每小題5分,共15分)4、程序編制題【也稱綜合分析題】。(第1、2題每題8分,第3題9分,共25分)重點復習內容打*號是重點,打▲號是編程題出題范圍*基本概念,對象,消息,類。面向對象系統(tǒng)特性,封裝性,繼承性,多態(tài)性。*▲C++類的構成,類與對象,構造與析構,動態(tài)存儲,類嵌套。靜態(tài)成員,對象數(shù)組,友元。*函數(shù)重載。運算符重載。*引用定義與引用參數(shù)*基類與派生類的定義。*基類及派生類的訪問權(含派生類對基類的訪問、通過派生類對象對基類的訪問)和初始化。多繼承與虛基類。*多態(tài)性與虛函數(shù)。純虛函數(shù)、抽象類。*▲函數(shù)模板。*▲使用類來定義對象并在程序中的應用題型樣題填空題1.假定AB為一個類,則執(zhí)行“ABa[10];”語句時,系統(tǒng)自動調用該類的構造函數(shù)的次數(shù)為_________。答案:102.可以用p.a的形式訪問派生類對象P的基類成員a,其中a是_________。答案:公有繼承的公有成員3.能作為重載函數(shù)的調用的依據是_________。答案:參數(shù)個數(shù)、參數(shù)類型4.在進行完任何C++流的操作后,都可以用C++流的有關成員函數(shù)檢測流的狀態(tài);其中只能用于檢測輸入流是否結束狀態(tài)的操作函數(shù)名稱是_________答案:eof5.函數(shù)重載是指_________。答案:兩個或兩個以上的函數(shù)取相同的函數(shù)名,但形參的個數(shù)或類型不同6.在派生類中重新定義虛函數(shù)時必須在_________方面與基類保持一致。答案:參數(shù)個數(shù)閱讀程序例題【計算題】1.分析以下程序的執(zhí)行結果#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}voiddisp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};voidmain(){Samples1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的執(zhí)行結果#include<iostream.h>intadd(intx,inty){returnx+y;}intadd(intx,inty,intz){returnx+y+z;}voidmain(){inta=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl;}解:10,203.分析以下程序執(zhí)行結果#include<iostream.h>intadd(intx,inty){returnx+y;}doubleadd(doublex,doubley){returnx+y;}voidmain(){inta=4,b=6;doublec=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl;}解:10,104.分析以下程序執(zhí)行的結果#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){cout<<"x="<<x<<",y="<<y<<endl;}};voidmain(){Samples1,s2(1,2),s3(10,20);Sample*pa[3]={&s1,&s2,&s3};for(inti=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=205.分析以下程序的執(zhí)行結果:#include<iostream.h>classbase{intn;public:base(){};base(inta){cout<<"constructingbaseclass"<<endl;n=a;cout<<"n="<<n<<endl;}~base(){cout<<"destructingbaseclass"<<endl;}};classsubs:publicbase{intm;public:subs(inta,intb):base(a){cout<<"constructingsubclass"<<endl;m=b;cout<<"m="<<m<<endl;}~subs(){cout<<"destructingsubclass"<<endl;}};voidmain(){subss(1,2);}解:constructingbaseclassn=1constructingsubclassm=2destructingsubclassdestructingbaseclass6.分析以下程序的執(zhí)行結果:#include<iostream.h>classSample{protected:intx;public:Sample(){x=0;}Sample(intval){x=val;}voidoperator++(){x++;}};classDerived:publicSample{inty;public:Derived():Sample(){y=0;}Derived(intval1,intval2):Sample(val1){y=val2;}voidoperator--(){x--;y--;}voiddisp(){cout<<"x="<<x<<",y="<<y<<endl;}};voidmain(){Derivedd(3,5);d.disp();d++;d.disp();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37分析以下程序執(zhí)行結果:#include<iostream.h>classA{public:A(char*s){cout<<s<<endl;}~A(){}};classB:publicA{public:B(char*sl,char*s2):A(sl){cout<<s2<<endl;}};classC:publicA{public:C(char*sl,char*s2):A(sl){cout<<s2<<endl;}};classD:publicB,publicC{public:D(char*sl,char*s2,char*s3,char*s4):B(sl,s2),C(sl,s3){cout<<s4<<endl;}};voidmain(){Dd("classA","classB","classC","classD");}解:classAclassBclassAclassCclassD補充例題1.分析以下程序的執(zhí)行結果#include<iostream.h>template<classT>Tmax(Tx,Ty){return(x>y?x:y);}voidmain(){cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl;}解答:5,3.52.分析以下程序的執(zhí)行結果#include<iostream.h>voidmain(){inta[]={10,20,30,40},*pa=a;int*&pb=pa;pb++;cout<<*pa<<endl;}解答:輸出為:203.分析以下程序的執(zhí)行結果#include<iostream.h>template<classT>Tabs(Tx){return(x>0?x:-x);}voidmain(){cout<<abs(-3)<<“,”<<abs(-2.6)<<endl;}解答:輸出為:3,2.64.分析以下程序的執(zhí)行結果#include<iostream.h>classSample{charc1,c2;public:Sample(chara){c2=(c1=a)-32;}voiddisp(){cout<<c1<<“轉換為”<<c2<<endl;}};voidmain(){Samplea('a'),b('b');a.disp();b.disp();}解答:a轉換為Ab轉換為B5.分析以下程序的執(zhí)行結果#include<iostream.h>voidmain(){inta;int&b=a;//變量引用b=10;cout<<“a=”<<a<<endl;}解答:輸出為:a=106.分析以下程序的執(zhí)行結果#include<iostream.h>classSample{intx;public:Sample(){};Sample(inta){x=a;}Sample(Sample&a){x=a.x+++10;}voiddisp(){cout<<“x=”<<x<<endl;}};voidmain(){Samples1(2),s2(s1);s1.disp();s2.disp();}解答:x=3//++運算的結果x=12//2+107.分析以下程序的執(zhí)行結果#include<iostream.h>classSample{intx;public:Sample(){};Sample(inta){x=a;}Sample(Sample&a){x=a.x+1;}voiddisp(){cout<<“x=”<<x<<endl;}};voidmain(){Samples1(2),s2(s1);s2.disp();}解答:輸出為:x=3。程序編制題例題【綜合分析題】例1,寫出一個梯形類,操作有求面積和周長分析:由于要求梯形的面積和周長,那就要為梯形提供上底,下底,高,左邊長,右邊長等屬性。因此,梯形類描述為:Classechelon{Inttop,bottom,height,llength,rlength;Public:Echelon(){。。。}//構造函數(shù)IntArea(){。。。}//求面積IntPerimeter(){。。。。}//求周長}2.設計一個圓類circle和一個桌子類table,另設計一個圓桌類roundtable,它是從前兩個類派生的,要求輸出一個圓桌的高度、面積和顏色等數(shù)據。解:circle類包含私有數(shù)據成員radius和求圓面積的成員函數(shù)getarea();table類包含私有數(shù)據成員height和返回高度的成員函數(shù)getheight()。roundtable類繼承所有上述類的數(shù)據成員和成員函數(shù),添加了私有數(shù)據成員color和相應的成員函數(shù)。本題程序如下:#include<iostream.h>#include<string.h>classcircle{doubleradius;public:circle(doubler){radius=r;}doublegetarea(){returnradius*radius*3.14;}};classtable{doubleheight;public:table(doubleh){height=h;}doublegetheight(){returnheight;}};classroundtable:publictable,publiccircle{char*color;public:roundtable(doubleh,doubler,charc[]):circle(r),table(h){color=newchar[strlen(c)+1];strcpy(color,c);}char*getcolor(){returncolor;}};voidmain(){roundtablert(0.8,1.2,黑色);cout<<圓桌屬性數(shù)據:<<endl;cout<<高度:<<rt.getheight()<<米<<endl;cout<<面積:<<rt.getarea()<<平方米<<endl;cout<<顏色:<<rt.getcolor()<<endl;}3.編寫程序,定義一個類test,其成員數(shù)據及函數(shù)要求如下:(1)私有數(shù)據成員intdata(2)構造函數(shù)兩個test()及test(intd),前者將(1)中的數(shù)據成員data值設為0;后者將(1)中的數(shù)據成員data設定為指定值d(3)成員函數(shù)intsetdate()能在鍵盤讀入一個數(shù)值,然后將該數(shù)值賦給data4.定義一個抽象類tea代表茶葉,它有1個double類型的保護數(shù)據成員cost代表種植成本,它還有一個純虛函數(shù)price用來計算售價:doubleprice(void)函數(shù)返回值為茶葉的售價。由tea派生出具體類blacktea(紅茶),要求如下:(1)類中定義保護成員數(shù)據doubleo_cost,表示紅茶的經營成本(2)定義構造函數(shù)blacktea(doublebtc,doublebto_c),將cost和o_cost,數(shù)據成員設定為指定值(3)重載price計算出blacktea的售價。(假設:blacktea售價=(cost+o_cost)*1.2)5.編寫一個程序,輸入N個學生數(shù)據,包括學號、姓名、成績,要求輸出這些學生數(shù)據并計算平均分。分析:設計一個學生類Stud,除了包括no(學號)、name(姓名)和deg(成績)數(shù)據成員外,有兩個靜態(tài)變量sum和num,分別存放總分和人數(shù),另有兩個普通成員函數(shù)setdata()和disp(),分別用于給數(shù)據成員賦值和輸出數(shù)據成員的值,另有一個靜態(tài)成員函數(shù)avg(),它用于計算平均分。在main()函數(shù)中定義了一個對象數(shù)組用于存儲輸入的學生數(shù)據。本題程序如下:#include<stdio.h>#include<string.h>#defineN3classStud{intno;charname[10];intdeg;staticintnum;staticintsum;public:voidsetdata(intn,charna[],intd){no=n;deg=d;strcpy(name,na);sum+=d;num++;}staticdoubleavg(){returnsum/num;}voiddisp(){printf(%-5d%-8s%3d\n,no,name,deg);}};intStud::sum=0;intStud::num=0;voidmain(){Studst[N];inti,n,d;charna[10];for(i=0;i<N;i++){printf(輸入學號姓名成績:);scanf(%d%s%d,&n,na,&d);st[i].setdata(n,na,d);}printf(輸出數(shù)據\n);printf(學號姓名成績\n);for(i=0;i<N;i++)st[i].disp();printf(平均分=%g\n\n,Stud::avg());}本程序的執(zhí)行結果如下:輸入學號姓名成績:1stud189輸入學號姓名成績:2stud278輸入學號姓名成績:3stud84輸出數(shù)據學號姓名成績1stud1892stud2783stud384平均分=836.請編寫一個程序,以實現(xiàn)在屏幕上顯示如下的乘法表。1)12)243)3694)4812165)5101520256)612182430367)71421283542498)8162432404856649)918273645546372817.P463-P464函數(shù)模板需要掌握的內容面向對象程序設計的三大特征類和對象類:C++的一種數(shù)據類型,使用類的變量則稱為對象。C++的類是對象的抽象,是進行封裝和數(shù)據隱藏的工具,包括:數(shù)據成員和成員函數(shù)。一個類可以聲明多個對象,對象之間代碼共享,數(shù)據獨立。C++類的說明public:可被本類以外的函數(shù)訪問,是類與外部的接口;private:只能被該類成員函數(shù)和友元函數(shù)存取和調用;protected:可被本類和本類的派生類的成員函數(shù)訪問,用于類的繼承。成員函數(shù)默認時在類中定義的項都是私有的,類成員函數(shù)的外部實現(xiàn):使用對象名引用對象的公有成員函數(shù)。方法如下:對象名.成員函數(shù)名(參數(shù)列表)內聯(lián)函數(shù)的概念;定義內聯(lián)函數(shù)的兩種格式1)函數(shù)體放在類體內2)函數(shù)體放在類體外,使用inline關鍵字構造函數(shù)構造函數(shù)的作用是在對象被創(chuàng)建時為對象分配內存空間,對類的數(shù)據成員初始化并執(zhí)行對象的其他內部管理操作。構造函數(shù)與類同名構造函數(shù)可接收參數(shù)但不能有返回值,允許重載。當創(chuàng)建一個類的對象時,系統(tǒng)會自動調用類的構造函數(shù)。若未給類定義構造函數(shù),則編譯系統(tǒng)將為該類生成一個默認的構造函數(shù),它沒有參數(shù),只簡單地把對象中的每個實例變量初始化為0。析構函數(shù)一、C++語言概述1.了解C++語言的基本符號。2.了解C++語言的詞匯(保留字、標識符、常量、運算符、標點符號等)。3.掌握C++程序的基本框架(結構程序設計框架、面向對象程序設計框架等)。4.能夠使用VisualC++6.0集成開發(fā)環(huán)境編輯、編譯、運行與調度程序。二、數(shù)據類型、表達式和基本運算1.掌握C++數(shù)據類型(基本類型,指針類型)及其定義方法。2.了解C++的常量定義(整型常量,字符常量,邏輯常量,實型常量,地址常量,符號常量)。3.掌握變量的定義與使用方法(變量的定義及初始化,全局變量,局部變量)。4.掌握C++運算符的種類、運算優(yōu)先級和結合性。5.熟練掌握C++表達式類型及求值規(guī)則(賦值運算,算術運算符和算術表達式,關系運算符和關系表達式,邏輯運算符和邏輯表達式,條件運算,指針運算,逗號表達式)。三、C++的基本語句1.掌握C++的基本語句,例如賦值語句、表達式語句、復合語句、輸入、輸出語句和空格語句等。2.用if語句實現(xiàn)分支結構。3.用switch語句實現(xiàn)多分支選擇結構。4.用for語句實現(xiàn)循環(huán)結構。5.用while語句實現(xiàn)循環(huán)結構。6.用do…while語句實現(xiàn)循環(huán)結構。7.轉向語句(goto,continue,break和return)。8.掌握分支語句和循環(huán)語句的各種嵌套使用。四、數(shù)組、指針與引用1.掌握一維數(shù)組的定義、初始化和訪問,了解多維數(shù)組的定義、初始化和訪問。2.了解字符串與字符數(shù)組。3.熟練掌握常用字符串函數(shù)(strlen,strcpy,streat,strcmp,strstr等)。4.指針與指針變量的概念,指針與地址運算符,指針與數(shù)組。5.引用的基本概念,引用的定義與使用。注意事項:搞清楚指針與地址運算符的區(qū)別,指針與引用的區(qū)別。五、掌握函數(shù)的有關使用1.函數(shù)的定義方法和調用方法。2.函數(shù)的類型和返回值。3.形式參數(shù)與實在參數(shù),參數(shù)值的傳遞。4.變量的作用域、生存周期和存儲類別(自動、靜態(tài)、寄存器,外部)。5.遞歸函數(shù)。6.內聯(lián)函數(shù)。7.帶有缺省參數(shù)值的函數(shù)。注意事項:C++中,函數(shù)之間傳遞參數(shù)有傳值和傳地址兩種傳遞方式。六、熟練掌握類與對象的相關知識1.類的定義方式、數(shù)據成員、成員函數(shù)及訪問權限(public,private,protected)。2.對象和對象指針的定義與使用。3.構造函數(shù)與析構函數(shù)。4.靜態(tài)數(shù)據成員與靜態(tài)成員函數(shù)的定義與使用方式。5.常數(shù)據成員與常成員函數(shù)。6.This指針的使用。7.友元函數(shù)和友元類。8.對象數(shù)組與成員對象。七、掌握類的繼承與派生知識1.派生類的定義和訪問權限。2.繼承基類的數(shù)據成員與成員函數(shù)。3.基類指針與派生類指針的使用。4.虛基類。八、了解多態(tài)性概念1.虛函數(shù)機制的要點。2.純虛函數(shù)與抽象基類,虛函數(shù)。3.了解運算符重載。九、模板1.掌握簡單了解函數(shù)模板的定義和使用方式。2.掌握類模板的定義和使用方式,能夠寫出模板類呈現(xiàn)。十、輸入輸出流1.掌握C++流的概念。2.能夠使用格式控制數(shù)據的輸入輸出。3.掌握文件的I/O操作。詳細的復習內容一、C++語言語法基礎1、標識符是以字母或下劃線開頭,由字母、數(shù)字、下劃線組成的用來標識變量、函數(shù)、自定義類型的符號,它不能是C或C++的保留字。2、變量聲明與數(shù)據類型變量的聲明如右:類型名稱變量名,變量名=初值;指針變量的聲明:類型名稱*變量名;數(shù)組的聲明:類型名稱數(shù)組名[數(shù)組元素個數(shù)]={初值,初值,初值……};標準數(shù)據類型:boolcharintlongunsignedfloatdouble 標準類型可以強制類型轉換例如:floatx;inty=(int)x;自定義數(shù)據類型:結構struct聯(lián)合union類class定義方式:struct自定義類型名 { 成員變量類型成員變量名; ………… };類類型除外3、運算符與表達式運算符:一元運算符:++、--、*、&等 二元運算符:+、-、*、/、+=、||、&&等 三元運算符::
分量運算符:->、. 下標運算符:[] 括弧運算符:() 動態(tài)存儲運算符:new、delete注意在一個表達式中運算符的優(yōu)先級。其中尤其要注意++、--、->、.、*、&、=運算符。4、C或C++語句五種語句:表達式語句:例如:y=x*3+4; 空語句: ; 控制語句:例如:break;if(*****)……else 函數(shù)調用語句:例如:printf(*****); 復合語句:例如:{x=9+y*5; cout<<x;}除了復合語句以}號結束外,其余的語句全是用;結束。語句可以混合使用:例如if(x!=3){y=7;printf(“%d”,x*y);}其中有復合、控制、表達式、函數(shù)調用語句。5、三種程序結構1)順序結構2)分支結構用ifelseswitch……case……defaultbreak等控制。3)循環(huán)結構 用forwhiledo……whilebreakcontinue控制6、函數(shù)函數(shù)在C或C++中就是子程序函數(shù)的聲明返回類型函數(shù)名(參數(shù)類型形式參數(shù)名,………) {函數(shù)體 return返回值;}其中void型函數(shù)無return語句。如果不立即寫出函數(shù)的實現(xiàn),只是一個函數(shù)原形的聲明,可以省略形式參數(shù),如下:返回類型函數(shù)名(參數(shù)類型,………);函數(shù)的參數(shù)可以缺省,例如:intf2(intx,inty=8){………}同名函數(shù)如果參數(shù)的個數(shù)或類型不同,編譯器能自動識別該調用那一個函數(shù),這叫函數(shù)重載,例如:voidf2(){……}與voidf2(intx){……}7、指針指針就是地址,指針聲明見變量聲明一節(jié),指針指向同類變量:指針名=&變量名;取得指針指向的地址中的內容:*指針名指針可以運算和賦值,但不能直接賦值數(shù)字,賦零除外,這時零表示空指針。數(shù)組名就是固定指向數(shù)組開頭的常數(shù)指針。8、結構結構的聲明見變量聲明,用結構類型定義變量:C中struct結構名變量名;C++中結構名變量名;結構成員變量的訪問:通過結構變量:結構變量.成員變量 通過結構指針:指針名->成員變量在C++中結構是類的一種特例,也可以有成員函數(shù),但它與類不同,它的成員缺省時是公有的。二、面向對象的程序設計1、類與對象的概念類是一種自定義類型,是對一類對象的抽象,是對象的模板。對象是一個實體,是類的實例,對象由類建立,對象封裝了數(shù)據和對數(shù)據操作的函數(shù),有一個邊界,從外部對對象私有部分的訪問是被禁止的,對對象的操作要通過它對外的公共接口(公有區(qū))進行。同類對象有相同的成員函數(shù),相同的數(shù)據成員集合,但名字不同,數(shù)據成員的值也不一定相同(即對象的狀態(tài)不同)。對象的數(shù)據成員又叫對象的屬性,對象的成員函數(shù)又叫對象的方法,調用對象的方法叫向對象發(fā)送消息。對象之間靠消息聯(lián)系。面向對象的程序設計就是向未知對象發(fā)送消息的程序設計,面向對象的程序就是一組通信的對象。2、類的聲明class類名:[public]基類1名,[public]基類2名,……{ private: 類的私有成員,從對象外部不能訪問,它的派生類也不能訪問,只能它自己訪問。 protected: 類的保護成員,從對象外部不能訪問,它的派生類和它自己可以訪問。 public: 類的公有成員,對外公開的、可以任意訪問的成員。};成員變量的聲明:在類的{}中象普通變量一樣進行聲明,但不能賦初值。成員變量在對象中是這個對象的所有成員函數(shù)的全局變量。成員函數(shù)的聲明:在類的{}中先聲明函數(shù)的原形,再在類的{}之外:返回類型類名::函數(shù)名(參數(shù)類型形式參數(shù)名,………) {函數(shù)體 }3、對象定義與使用直接定義對象:類名對象名(構造函數(shù)實際參數(shù));通過定義類指針定義對象:類名*指針名; 指針名=new類名(構造函數(shù)實際參數(shù));通過定義類指針定義的對象需要用刪除:delete指針名;直接定義對象數(shù)組:類名數(shù)組名[數(shù)組元素個數(shù)];在定義對象數(shù)組時初始化數(shù)組:類名數(shù)組名[數(shù)組元素個數(shù)]={類名(構造參數(shù)),……};通過類指針定義數(shù)組:指針名=new類名[數(shù)組元素個數(shù)];通過類指針定義對象數(shù)組不能調用帶參數(shù)的構造函數(shù)對數(shù)組進行初始化。通過類指針定義的數(shù)組的刪除:deltet[]指針名;使用對象成員:直接定義的對象:對象名.成員名通過指針定義的對象:指針名->成員名一維對象數(shù)組元素的訪問:數(shù)組名[下標].成員名或(*(數(shù)組名+下標)).成員名 指針名[下標].成員名或(*(指針名+下標)).成員名每個對象都有一個指向自己的常數(shù)指針,即this指針。在計算機中所有同類對象有不同的數(shù)據成員,但是只有共同的一組成員函數(shù),成員函數(shù)靠this指針來識別是來自哪一個對象的調用。同類對象可以相互賦值。對象間賦值缺省是對應成員的賦值,成員中有指針時通常需要重載賦值號=。普通類型變量向對象賦值時會自動調用相應的構造函數(shù)建立一個隱藏的臨時對象,再進行對象間賦值。4、構造與析構函數(shù)構造函數(shù)是在用類定義對象時對對象進行初始化的函數(shù),在定義對象時自動被調用。構造函數(shù)與類同名,無返回類型,可以有參數(shù),可以重載,可以缺省參數(shù)。析構函數(shù)是在對象撤消時自動被調用的,作用是用來清除對象動態(tài)申請的資源,析構函數(shù)與類同名,但前加一個~,無參數(shù),不能重載。構造函數(shù)和析構函數(shù)一般不能顯式調用,構造函數(shù)在下面三種情況是例外:對象數(shù)組初始化,在賦值號右邊建立臨時隱藏對象供對象賦值用,return返回對象??截悩嬙旌瘮?shù)的參數(shù)是同類對象或同類對象的引用,缺省的拷貝構造函數(shù)是將樣板對象的數(shù)據成員對應賦值給新建對象。當數(shù)據成員中有指針時,一般需要編寫自己的拷貝構造函數(shù)。5、靜態(tài)成員靜態(tài)成員是同類對象的公共成員,靜態(tài)成員函數(shù)沒有this指針,不能直接訪問類的普通成員,只能訪問靜態(tài)成員,普通成員函數(shù)可以訪問靜態(tài)成員,任何一個對象改變了靜態(tài)成員變量的值,將改變所有對象的該成員。在類外對靜態(tài)成員變量的初始化:類型類::成員變量=初始值;6、友元友元就是讓類外的函數(shù)或別的類訪問私有區(qū),友元不是該類的成員,它破壞封裝。友元有三種:友元函數(shù)。是類外的一般函數(shù)。聲明:friend返回類型函數(shù)名(類形式參數(shù),……);友元成員。是其它類的成員函數(shù)。聲明:friend返回類型其它類名::函數(shù)名(類形式參數(shù),……);友元類。別的類。聲明:friendclass其它類名;友元可以在類的任何區(qū)聲明,友元聲明是單向的,沒有傳遞性。由于友元沒有this指針,所以友元的形式參數(shù)是對象或對象的引用。7、類的繼承和訪問權限派生類繼承了基類的成員,可以有公有派生和私有派生。繼承關系如下:有的部分被舍棄,反之不能賦值。8、
多繼承問題一個類可以有多個基類,如果都是公有繼承,在不同繼承路徑上繼承的公共基類,由于在派生類中存在多個副本,會出現(xiàn)訪問的二義性問題,要將這些副本合成一個,可以在派生時將這個基類聲明為虛基類。9、構造函數(shù)和析構函數(shù)的調用次序在一個派生類中如果有對象成員,則基類、對象成員和派生類的構造次序如下:先基類后對象成員最后派生類對象自身析構的次序與構造次序相反。構造函數(shù)和析構函數(shù)的調用次序與構造和析構次序相同。構造函數(shù)的實現(xiàn)如下:派生類名::構造函數(shù)名(參數(shù)表):基類1構造函數(shù)(參數(shù)),基類1構造函數(shù)(參數(shù)),…… 對象成員1(構造參數(shù)表),對象成員2(構造參數(shù)表),…… {派生類對象的構造函數(shù)體 }10、流與流類庫流運算符:<<、>>流類庫:iostream、istream、ostream、ios,ios是istream、ostream的基類,istream和ostream又是iostream的基類,ios是抽象類。使用流類庫要在程序前加上:#include“iostream.h”標準輸出流:cout是流向屏幕,它是一個ostream類的對象。標準輸入流:cin是由鍵盤流入,它是一個istream類的對象。11、函數(shù)重載重載是指一個符號可以有多重意義。函數(shù)重載參看前面所述。一般函數(shù)、普通成員函數(shù)、構造函數(shù)可以重載,析構函數(shù)不能重載。12、操作符重載對于對象與對象、對象與標準類型變量之間的運算,需要對運算符重載。一般可以有成員函數(shù)重載和友元函數(shù)重載。函數(shù)名:operator運算符(參與運算的參數(shù))要注意++、--、<<、>>運算符的重載,其中<<、>>運算符重載要流類(istream和ostream類)對象或引用作參數(shù)和返回值。其中=、()、[]、->只能用成員函數(shù)重載。將類類型轉換成普通類型與運算符重載類似。普通類型轉換成類類型用構造函數(shù)實現(xiàn)。13、多態(tài)性分為靜態(tài)的多態(tài)性和動態(tài)的多態(tài)性。靜態(tài)的多態(tài)性用重載實現(xiàn)。動態(tài)的多態(tài)性是指:同一個消息發(fā)給不同對象,對象的反應不同。它是在運行過程中進行連接的,所以由叫動態(tài)聯(lián)編。它的基礎是虛函數(shù)。14、虛函數(shù)與純虛函數(shù)虛函數(shù)的聲明:virtual返回類型函數(shù)名(參數(shù)表);當用基類指針指向派生類對象時,通過這個指針調用虛函數(shù)將首先調用派生類中的實現(xiàn),如果派生類中沒有寫這個函數(shù)的實現(xiàn),則調用基類中的實現(xiàn)。虛函數(shù)的虛特性可以傳遞。如果派生類不寫虛函數(shù)自己的實現(xiàn),它又要在它的派生類中使用基類虛函數(shù)的虛特性,可以編寫一個空的虛函數(shù)。純虛函數(shù)的聲明:virtual返回類型函數(shù)名(參數(shù)表)=0;純虛函數(shù)不需要寫它的實現(xiàn),含有純虛函數(shù)的類叫抽象類,不能建立對象,可以作基類和定義指針。在抽象類的派生類中要寫出純虛函數(shù)的實現(xiàn),否則需要再次聲明這個函數(shù)是虛函數(shù),這樣這個派生類也是抽象類。虛函數(shù)實現(xiàn)了動態(tài)連接,但在構造和析構函數(shù)中調用虛函數(shù)時是靜態(tài)連接,即沒有虛特性。15、模板函數(shù)模板與模板函數(shù),定義、實例化,模板函數(shù)的重載。類模板與模板類,定義、實例化,類模板的派生。一、單選題第1題如果友元函數(shù)重載一個運算符時,其參數(shù)表中沒有任何參數(shù)則說明該運算符是()A、一元運算符B、二元運算符C、選項A)和選項B)都可能D、重載錯誤答案:D第2題C++類體系中,不能被派生類繼承的有()。A、轉換函數(shù)B、構造函數(shù)C、虛函數(shù)D、靜態(tài)成員函數(shù)答案:B第3題以下敘述中正確的是()A、構成C++語言程序的基本單位是類B、可以在一個函數(shù)中定義另一個函數(shù)C、main()函數(shù)必須放在其他函數(shù)之前D、所有被調用的函數(shù)一定要在調用之前進行定義答案:A第4題設inta=10,b=11,c=12;,表達式(a+b)的值為()A、2B、0C、-2D、1答案:B第5題下列關于構造函數(shù)說法不正確的是()A、構造函數(shù)必須與類同名B、構造函數(shù)可以省略不寫C、構造函數(shù)必須有返回值D、在構造函數(shù)中可以對類中的成員進行初始化答案:C第6題設有數(shù)組定義:chararray[]=”China";,則數(shù)組array所占的空間為()A、4個字節(jié)B、5個字節(jié)C、6個字節(jié)D、7個字節(jié)答案:C第7題若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*P=a,i;其中O≤i≤9,則對a數(shù)組元素不正確的引用是()A、a[p-a]B、*(&a[i])C、p[i]D、a[10]答案:D第8題如果友元函數(shù)重載一個運算符時,其參數(shù)表中沒有任何參數(shù)則說明該運算符是()A、一元運算符B、二元運算符C、選項A)和選項B)都可能D、重載錯誤答案:D第9題表示在輸出時顯示小數(shù)位,和在文件輸入時判斷文件尾的函數(shù)分別是()A、showbase()和eof()B、showpoint()和eof()C、showpoint()和bad()D、showpoint()和good()答案:B第10題下面程序的運行結果為()以下是引用片段:#includevoidmain(){for(inta=0,x=0;!x&&a<=10;a++){a++;}cout<<a;}A、10B、11C、12D、0答案:C第11題以下各選項組中,均是C++語言關鍵字的組是()A、publicoperatorthisB、shodstringstaticC、itwhile〉=D、privatecoutprintf答案:A第12題在位運算中,操作數(shù)每右移一位,其結果相當于()A、操作數(shù)乘以2B、操作數(shù)除以2C、操作數(shù)乘以4D、操作數(shù)除以4答案:B第13題若定義intk=7,x=12;,則值為3的表達式是()A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)答案:D第14題一個類的友元函數(shù)能夠訪問該類的()A、私有成員B、保護成員C、公有成員D、所有成員答案:D第15題設有數(shù)組定義:chararray[]=”China";,則數(shù)組array所占的空間為()A、4個字節(jié)B、5個字節(jié)C、6個字節(jié)D、7個字節(jié)答案:C第16題下面關于數(shù)組的描述錯誤的是()A、在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針B、長度為n的數(shù)組,下標的范圍是0-n-1C、數(shù)組的大小必須在編譯時確定D、數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)答案:D第17題下列關于模板的說法正確的是()A、模板的實參在任何時候都可以省略B、類模板與模板類所指的是同一概念C、類模板的參數(shù)必須是虛擬類型的D、類模板中的成員函數(shù)全部都是模板函數(shù)答案:D第18題下列描述正確的是()A、表示m〉n為true或mn&&mB、switch語句結構中必須有default語句C、if語句結構中必須有else語句D、如果至少有一個操作數(shù)為true,則包含“‖”運算符的表達式為true答案:D第19題在進行完任何C++流的操作后,都可以用C++流的有關成員函數(shù)檢測流的狀態(tài);其中只能用于檢測輸入流狀態(tài)的操作函數(shù)名稱是()A、failB、eofC、badD、good答案:B第20題下列描述中哪個是正確的()。A、私有派生的子類無法訪問父類的成員B、類A的私有派生子類的派生類,C無法初始化其祖先類A對象的屬性,因為類A的成員對類C是不可訪問的C、私有派生類不能作為基類派生子類D、私有派生類的所有子孫類將無法繼續(xù)繼承該類的成員答案:B第21題在重載一個運算符時,如果其參數(shù)表中有一個參數(shù),則說明該運算符是()A、一元成員運算符B、二元成員運算符C、一元友元運算符D、選項B)和選項C)都可能答案:D第22題下列關于構造函數(shù)的描述中,錯誤的是()A、構造函數(shù)可以設置默認參數(shù)B、構造函數(shù)在定義類對象時自動執(zhí)行C、構造函數(shù)可以是內聯(lián)函數(shù)D、構造函數(shù)不可以重載答案:D第23題函數(shù)fun的返回值是()以下是引用片段:fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!=‘\0’)num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}A、字符串a的長度B、字符串b的長度C、字符串a和b的長度之差D、字符串a和b的長度之和答案:D第24題下面關于類和對象的描述中,錯誤的是()A、類就是C語言中的結構體類型,對象就是C語言中的結構體變量B、類和對象之間的關系是抽象和具體的關系C、對象是類的實例,一個對象必須屬于一個已知的類D、類是具有共同行為的若干對象的統(tǒng)一描述體答案:A第25題下列描述正確的是()A、表示m>n為true或mn&&mB、switch語句結構中必須有default語句C、if語句結構中必須有else語句D、如果至少有一個操作數(shù)為true,則包含“‖”運算符的表達式為true答案:D第26題下列關于模板的說法正確的是()A、模板的實參在任何時候都可以省略B、類模板與模板類所指的是同一概念C、類模板的參數(shù)必須是虛擬類型的D、類模板中的成員函數(shù)全部都是模板函數(shù)答案:D第27題在位運算中,操作數(shù)每右移一位,其結果相當于()A、操作數(shù)乘以2B、操作數(shù)除以2C、操作數(shù)乘以4D、操作數(shù)除以4答案:B第28題下列程序的運行結果為()以下是引用片段:#includevoidprint(doublea){cout<<++a;}voidprint(inta,intb){cout<<a<<b;}voidmain(){print(1.2);cout<<"";print(3,4);}A、1.234B、2.234C、1.243D、2.243答案:B第29題下列虛基類的聲明中正確的是()A、classvirtualB:publicAB、classB:virtualpublicAC、classB:publicAvirtualD、virtualclassB:publicA答案:B第30題以下各選項組中,均是C++語言關鍵字的組是()A、publicoperatorthisB、shodstringstaticC、itwhile>=D、privatecoutprintf答案:A第31題下面程序的結果為(),以下是引用片段:voidmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i〈3;i++)cout《a[i][2-i];}A、159B、753C、357D、591答案:C第32題C++語言是從早期的C語言逐漸發(fā)展演變而來的.與C語言相比,它在求解問題方法上進行的最大改進是()A、面向過程B、面向對象C、安全性D、復用性答案:B第33題下列關于C++語言類的描述中錯誤的是()A、類用于描述事物的屬性和對事物的操作B、類與類之間通過封裝而具有明確的獨立性C、類與類之間必須是平等的關系,而不能組成層次結構D、類與類之間可以通過一些方法進行通信和聯(lián)絡答案:C第34題下列關于構造函數(shù)說法不正確的是()A、構造函數(shù)必須與類同名B、構造函數(shù)可以省略不寫C、構造函數(shù)必須有返回值D、在構造函數(shù)中可以對類中的成員進行初始化答案:C第35題下面關于類和對象的描述中,錯誤的是()A、類就是C語言中的結構體類型,對象就是C語言中的結構體變量B、類和對象之間的關系是抽象和具體的關系C、對象是類的實例,一個對象必須屬于一個已知的類D、類是具有共同行為的若干對象的統(tǒng)一描述體答案:A第36題有以下結構體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把節(jié)點b連接到節(jié)點a之后的語句是(),以下是引用片段:structnode{chardata;structnode*next;}a,b,*p=&a,*q=&b;A、a.next=qB、p.next=&bC、p->next=&bD、(*p).next=q答案:B第37題以下敘述中正確的是()A、構成C++語言程序的基本單位是類B、可以在一個函數(shù)中定義另一個函數(shù)C、main()函數(shù)必須放在其他函數(shù)之前D、所有被調用的函數(shù)一定要在調用之前進行定義答案:A第38題下列關于C++語言類的描述中錯誤的是()A、類用于描述事物的屬性和對事物的操作B、類與類之間通過封裝而具有明確的獨立性C、類與類之間必須是平等的關系,而不能組成層次結構D、類與類之間可以通過一些方法進行通信和聯(lián)絡答案:C第39題在C++語言中,數(shù)據封裝要解決的問題是()A、數(shù)據的規(guī)范化B、便于數(shù)據轉換C、避免數(shù)據丟失D、防止不同模塊之間數(shù)據的非法訪問答案:D第40題考慮函數(shù)原型voidtest(inta,intb=7,char="*"),下面的函數(shù)調用中,屬于不合法調用的是()A、test(5)B、test(5,8)C、test(6,"#")D、test(0,0."*")答案:C第41題下面描述中,表達錯誤的是()A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承是基類中的private成員在派生類中仍是private的C、公有繼承時基類中的protected成員在派生類中仍是protected的D、私有繼承時基類中的public成員在派生類中是private的答案:B第42題下面程序的運行結果為()以下是引用片段:#includeclassA{public:A(){cout<<"1";}~A(){cout<<"2";}};classB:publicA{public:B(){cout<<"3";}~B(){cout<<"4";}};voidmain(){Bb;}A、1234B、1324C、1342D、3142答案:C第43題for(intx=0,y=0;!x&&y〈=5;y++)語句執(zhí)行循環(huán)的次數(shù)是()A、0B、5C、6D、無次數(shù)答案:C第44題下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,在劃線處應填入的選項是(),以下是引用片段:voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while();j=k/11;cout《"316=13*"《i《"+"《"11*"《j;}A、k/11B、k%11C、k/11==0D、k%11==0答案:B第45題表示在輸出時顯示小數(shù)位,和在文件輸入時判斷文件尾的函數(shù)分別是()A、showbase()和eof()B、showpoint()和eof()C、showpoint()和bad()D、showpoint()和good()答案:B二、填空題第1題假定x是一個邏輯量,則x&&true的值為__________。答案:x第2題C++頭文件和源程序文件的擴展名分別為______和______。答案:.h.cpp第3題假定x=5,y=6,則表達式x++*++y的值為__________。答案:35第4題假定類AB中有一個公用屬性的靜態(tài)數(shù)據成員bb,在類外不通過對象名訪問該成員bb的寫法為__________。答案:AB::bb第5題字符串”\nThis\’sapen\n\n”的長度為__________。答案:15第6題變量分為全局和局部兩種,________變量沒有賦初值時,其值是不確定的。答案:局部第7題一個函數(shù)的函數(shù)體就是一條_________語句。答案:復合第8題變量分為全局和局部兩種,________變量沒有賦初值時,其值是不確定的。答案:局部第9題假定x和y為整型,其值分別為16和5,則x/y和double(x)/y的值分別為__________和__________。答案:33.2第10題對一個類中的數(shù)據成員的初始化可以通過構造函數(shù)中的______實現(xiàn),也可以通過構造函數(shù)中的_________實現(xiàn)。答案:初始化表函數(shù)體第11題行尾使用注釋的開始標記符為__________。答案://第12題C++常數(shù)0x145對應的十進制值為__________。答案:325第13題假定x=5,y=6,則執(zhí)行表達式y(tǒng)*=x++計算后,x和y的值分別為__________和__________。答案:630第14題假定x是一個邏輯量,則x||true的值為__________。答案:true(或1)第15題假定一個結構類型定義為“structD{inta;union{intb;doublec;};D*d[2];};”,則該類型的大小為___________字節(jié)。答案:20第16題若一個函數(shù)的定義處于調用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的______語句。答案:原型(或聲明)第17題signedchar類型的值域范圍是________至__________之間的整數(shù)。答案:-128+127第18題多行注釋的開始標記符和結束標記符分別為__________和__________。答案:/**/第19題使用#include命令可以包含一個頭文件,也可以包含一個______文件。答案:程序第20題十進制常數(shù)245對應的八進制的C++表示為__________。答案:0365第21題程序中的預處理命令是指以______字符開頭的命令。答案:#第22題當使用_______保留字作為函數(shù)類型時,該函數(shù)不返回任何值。答案:void第23題C++常數(shù)0345對應的十進制值為__________。答案:2第24題bool和char類型的數(shù)據分別占用_________和________個字節(jié)。答案:11第25題假定x是一個邏輯量,則x&&false的值為__________。答案:false(或0)第26題一個完整程序中必須有一個名為________的函數(shù)。答案:main第27題float和double類型的數(shù)據分別占用_________和________個字節(jié)。答案:48第28題假定x和ch分別為int型和char型,則sizeof(x)和sizeof(ch)的值分別為______和______。答案:41第29題一條表達式語句必須以______作為結束符。答案:分號第30題C++語言是在_________語言的基礎上發(fā)展起來的。答案:C三、計算題第1題分析以下程序的執(zhí)行結果:#include<iostream.h>classbase{intn;public:base(){};base(inta){cout<<"constructingbaseclass"<<endl;n=a;cout<<"n="<<n<<endl;}~base(){cout<<"destructingbaseclass"<<endl;}};classsubs:publicbase{intm;public:subs(inta,intb):base(a){cout<<"constructingsubclass"<<endl;m=b;cout<<"m="<<m<<endl;}~subs(){cout<<"destructingsubclass"<<endl;}};voidmain(){subss(1,2);}答案:解:constructingbaseclassn=1constructingsubclassm=2destructingsubclassdestructingbaseclass第2題分析以下程序的執(zhí)行結果#include<iostream.h>template<classt>tmax(tx,ty){return(x>y?x:y);}voidmain(){cout<<max(2,5)<<","<<max(3.5,2.8)<<endl;}答案:解答:5,3.5第3題分析以下程序的執(zhí)行結果#include<iostream.h>classSample{charc1,c2;public:Sample(chara){c2=(c1=a)-32;}voiddisp(){cout<<c1<<"轉換為"<<c2<<endl;}};voidmain(){Samplea('a'),b('b');a.disp();b.disp();}答案:a轉換為Ab轉換為B第4題分析以下程序的執(zhí)行結果#include<iostream.h>intadd(intx,inty){returnx+y;}intadd(intx,inty,intz){returnx+y+z;}voidmain(){inta=4,b=6,c=10;cout<<add(a,b)<<","<<add(a,b,c)<<endl;}答案:解:10,20第5題分析以下程序執(zhí)行結果#include<iostream.h>intadd(intx,inty){returnx+y;}doubleadd(doublex,doubley){returnx+y;}voidmain(){inta=4,b=6;doublec=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl;}答案:解:10,10第6題分析以下程序執(zhí)行的結果#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){cout<<"x="<<x<<",y="<<y<<endl;}};voidmain(){Samples1,s2(1,2),s3(10,20);Sample*pa[3]={&s1,&s2,&s3};for(inti=0;i<3;i++)pa[i]->disp();}答案:解:x=0,y=0x=1,y=2x=10,y=20第7題分析以下程序的執(zhí)行結果:#include<iostream.h>classSample{protected:intx;public:Sample(){x=0;}Sample(intval){x=val;}voidoperator++(){x++;}};classDerived:publicSample{inty;public:Derived():Sample(){y=0;}Derived(intval1,intval2):Sample(val1){y=val2;}voidoperator--(){x--;y--;}voiddisp(){cout<<"x="<<x<<",y="<<y<<endl;}};voidmain(){Derivedd(3,5);d.disp();d++;d.disp();d--;d--;d.disp();}答案:解:x=3,y=5x=4,y=5x=2,y=3第8題分析以下程序的執(zhí)行結果#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}voiddisp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};voidmain(){Samples1,s2(2,3);s1.disp();s2.disp();}答案:解:x=0,y=0x=2,y=3x!=yx=y第9題分析以下程序的執(zhí)行結果#include<iostream.h>classSample{intx;public:Sample(){};Sample(inta){x=a;}Sample(Sample&a){x=a.x+++10;}voiddisp(){cout<<"x="<<x<<endl;}};voidmain(){Samples1(2),s2(s1);s1.disp();s2.disp();}答案:x=3//++運算的結果x=12//2+10四、綜合分析題第1題編寫一個操作有求面積和求周長的長方形類。答案:ClassRectangle{Intwidth,length;Public:Rectangle(){width=length=0;}//構造函數(shù)IntArea(){returnwidth*length;}//求面積IntPerimeter(){return(width+length)*2;}//求周長}第2題設計一個圓類circle和一個桌子類table,另設計一個圓桌類roundtable,它是從前兩個類派生的,要求輸出一個圓桌的高度、面積和顏色等數(shù)據。答案:解:circle類包含私有數(shù)據成員radius和求圓面積的成員函數(shù)getarea();table類包含私有數(shù)據成員height和返回高度的成員函數(shù)getheight()。roundtable類繼承所有上述類的數(shù)據成員和成員函數(shù),添加了私有數(shù)據成員color和相應的成員函數(shù)。本題程序如下:#include<iostream.h>#include<string.h>classcircle{doubleradius;public:circle(doubler){radius=r;}doublegetarea(){returnradius*radius*3.14;}};classtable{doubleheight;public:table(doubleh){height=h;}doublegetheight(){returnheight;}};classroundtable:publictable,publiccircle{char*color;public:roundtable(doubleh,doubler,charc[]):circle(r),table(h){color=newchar[strlen(c)+1];strcpy(color,c);}char*getcolor(){returncolor;}};voidmain(){roundtablert(0.8,1.2,黑色);cout<<圓桌屬性數(shù)據:<<endl;cout<<高度:<<rt.getheight()<<米<<endl;cout<<面積:<<rt.getarea()<<平方米<<endl;cout<<顏色:<<rt.getcolor()<<endl;}第3題設計一個學生類student,包括姓名和三門課程成績,利用重載運算符”+“將所有學生的成績相加放在一個對象中,再對該對象求各門課程的平均分。答案:解:#include<iostream.h>#include<iomanip.h>#include<string.h>classstudent{charname[10];intdeg1,deg2,deg3;public:student(){}student(charna[],intd1,intd2,intd3){strcpy(name,na);deg1=d1;deg2=d2;deg3=d3;}friendstudentoperator+(students1,students2){staticstudentst;st.deg1=s1.deg1+s2.deg1;st.deg2=s1.deg2+s2.deg2;st.deg3=s1.deg3+s2.deg3;returnst;}voiddisp(){cout<<setw(10)<<name<<setw(5)<<deg1<<setw(5)<<deg2<<setw(5)<<deg3<<endl;}friendvoidavg(student&s,intn){cout<<setw(10)<<平均分<<setw(5)<<s.deg1/n<<setw(5)<<s.deg2/n<<setw(5)<<s.deg3/n<<endl;}};第4題寫出一個梯形類,操作有求面積和周長答案:分析:由于要求梯形的面積和周長,那就要為梯形提供上底,下底,高,左邊長,右邊長等屬性。因此,梯形類描述為:Classechelon{Inttop,bottom,height,llength,rlength;Public:Echelon(){top=bottom=height=llength=rlength=0;}//構造函數(shù)IntArea(){return(top+bottom)*height/2;}//求面積IntPerimeter(){returntop+bottom+llength_rlength;}//求周長}第5題定義一個抽象類tea代表茶葉,它有1個double類型的保護數(shù)據成員cost代表種植成本,它還有一個純虛函數(shù)price用來計算售價:doubleprice(void)函數(shù)返回值為茶葉的售價。由tea派生出具體類blacktea(紅茶),要求如下:(1)類中定義保護成員數(shù)據doubleo_cost,表示紅茶的經營成本(2)定義構造函數(shù)blacktea(d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抵押合同六8篇
- 伸縮門采購合同合同
- 新零售模式下智慧物流配送優(yōu)化策略
- 灑水車合同5篇
- 商業(yè)保密協(xié)議書十
- 公司員工保底協(xié)議
- 2025年貴港貨運資格證培訓考試題
- 2025年寧夏貨車從業(yè)資格證答題軟件
- 陶瓷插芯市場分析及競爭策略分析報告
- 珠光材料市場分析及競爭策略分析報告
- 2024-2030年中國稅務師事務所行業(yè)管理模式及投資前景展望報告版
- 2024年全國高考英語試題及答案-湖南卷
- 部編人教版小學四年級下冊道德與法治全冊教案及每課教學反思
- 中建吊籃安拆專項施工方案(專家論證版)
- 《汽車維修接待實務》 課件全套 孫麗學習情景1-8 汽車維修服務接待認知 -新能源汽車維修接待
- 2020年礦建監(jiān)理工作總結
- 獸醫(yī)學英語詞匯【參考】
- 浙江省溫州市2024-2025學年高三上學期一模英語試題 含解析
- 建筑施工安全生產包保責任實施方案
- 《時代與變革?版畫藝術的魅力》教學設計
- 《民法典》醫(yī)療損害責任篇培訓課件
評論
0/150
提交評論