C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后習(xí)題答案(游洪躍)_第1頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后習(xí)題答案(游洪躍)_第2頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后習(xí)題答案(游洪躍)_第3頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后習(xí)題答案(游洪躍)_第4頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后習(xí)題答案(游洪躍)_第5頁
已閱讀5頁,還剩171頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程第1章C++程序設(shè)計(jì)基礎(chǔ)習(xí)題解答

編輯ppt一、選擇題1.下列語句中,錯(cuò)誤的是

。A)constintbuffer=256; B)constinttemp;C)constdouble*point; D)double*constpt=newdouble(5.5);解析:修飾符const聲明的常量只能被讀取,該常量必須在聲明時(shí)進(jìn)行初始化,并且它的值在程序中不能改變。選項(xiàng)B)沒有初始化,錯(cuò)誤。選項(xiàng)C)定義了一個(gè)指向constdouble的指針,其意義為指針point指向的變量不能通過指針point來改變,D)中表示指針pt是常量指針,已在聲明時(shí)進(jìn)行了初始化。答案:B編輯ppt2.關(guān)于函數(shù)重載,下列敘述中錯(cuò)誤的是

。A)重載函數(shù)的函數(shù)名必須相同 B)重載函數(shù)必須在參數(shù)個(gè)數(shù)或類型上有所不同C)重載函數(shù)的返回值類型必須相同 D)重載函數(shù)的函數(shù)體可以有所不同解析:函數(shù)重載是用同一個(gè)函數(shù)名字在不同的參數(shù)類型或參數(shù)個(gè)數(shù)上做類似的操作方作,它們的實(shí)現(xiàn)方法可以不同。所以說,重載函數(shù)的函數(shù)名必須相同,函數(shù)體可以有所不同。函數(shù)重載必須在參數(shù)類型或參數(shù)個(gè)數(shù)上不一樣,不能依靠返回值不一樣來區(qū)分重載函數(shù)。答案:C編輯ppt3.有以下程序:voidFun(inti,intj){ cout<<i+j<<endl; //輸出i+j}voidFun(inti){ cout<<i++<<endl; //輸出i++}intmain() //主函數(shù)main(){ inta=1; //定義變量i Fun(a); //調(diào)用Fun() return0; //返回值0,返回操作系統(tǒng)}該程序執(zhí)行后輸出的結(jié)果是

。A)1 B)2 C)3 D)4解析:由于主函數(shù)中調(diào)用的Fun()函數(shù)只有一個(gè)參數(shù),故執(zhí)行的是voidFun(inti)的版本,執(zhí)行“cout<<i++<<endl;”時(shí),由于是后綴“++”,所以先輸出i的值1,再使i加1。答案:A編輯ppt二、編程題1.編寫一個(gè)C++程序,要求輸出“歡迎學(xué)習(xí)C++語言!”。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdintmain() //主函數(shù)main(){ cout<<"歡迎學(xué)習(xí)C++語言!"<<endl; //用C++的方法輸出一行

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息

return0; //返回值,返回操作系統(tǒng)}

編輯ppt*2.編一個(gè)程序,用一個(gè)函數(shù)實(shí)現(xiàn)求n個(gè)整型數(shù)據(jù)的最小值。函數(shù)原型如下:intMin(inta[],intn)參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdintMin(inta[],intn) //求n個(gè)整型數(shù)據(jù)的最小值{ intm=a[0],i; //臨時(shí)變量 for(i=1;i<n;i++) { //依次比較求最小值 if(a[i]<m) { //如果a[i]更小 m=a[i]; //a[i]為當(dāng)前最小值 } }

returnm; //返回最小值}intmain() //主函數(shù)main(){ inta[]={1,2,3,4,5,6,7,8,9,-10},n=10; cout<<"最小值為"<<Min(a,n)<<endl; //輸出最小值 system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息 return0; //返回值,返回操作系統(tǒng)}編輯ppt3.求2個(gè)數(shù)或3個(gè)整數(shù)中的最大數(shù),用兩個(gè)同名函數(shù)實(shí)現(xiàn),要求編寫測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdintMax(intx,inty) //求x,y的最大值{ returnx>y?x:y; //返回x,y的最大值}intMax(intx,inty,intz) //求x,y,z的最大值{ intm=x>y?x:y; //x,y的最大值

m=m>z?m:z; //m,z的最大值

returnm; //返回x,y,z的最大值}intmain() //主函數(shù)main(){ cout<<"2,3的最大值為"<<Max(2,3)<<endl;

cout<<"1,6,8的最大值為"<<Max(1,6,8)<<endl;

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt4.用變量的引用作函數(shù)形參,實(shí)現(xiàn)交換兩個(gè)整型變量,要求編寫測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdvoidSwap(int&x,int&y) //交換x,y的值{ intt=x;x=y;y=t; //循環(huán)賦值交換x,y的值}intmain() //主函數(shù)main(){ intx=1,y=6; cout<<"交換前:"<<x<<","<<y<<endl; Swap(x,y); cout<<"交換后:"<<x<<","<<y<<endl; system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息 return0; //返回值,返回操作系統(tǒng)}編輯ppt*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdvoidSort(inta[],intn) //對(duì)a[0]...a[n-1]進(jìn)行排序{ inttem,i,j; //定義變量 for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) { //a[i]比a[j]更大 tem=a[i];a[i]=a[j];a[j]=tem; }}……編輯ppt*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。參考程序:……voidSort(floata[],intn) //對(duì)a[0]...a[n-1]進(jìn)行排序{ floattem; //臨時(shí)變量 inti,j; //定義變量 for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) { //a[i]比a[j]更大 tem=a[i];a[i]=a[j];a[j]=tem; }}……編輯ppt*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。參考程序:……voidSort(doublea[],intn) //對(duì)a[0]...a[n-1]進(jìn)行排序{ doubletem; //臨時(shí)變量 inti,j; //定義變量 for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) { //a[i]比a[j]更大 tem=a[i];a[i]=a[j];a[j]=tem; }}……編輯ppt*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。參考程序:……intmain() //主函數(shù)main(){ inta[]={1,3,2,5,6,9,0,6}; //定義a floatb[]={1.6,3.3,2.8,5.6,6.8,9.6,0.6,6.8}; //定義b doublec[]={1.2,3.1,2.6,5.8,6.8,9.8,0.8,6.2};//定義c inti,n=8; //定義變量 Sort(a,n); //對(duì)a排序 cout<<"a:"; //輸出提示 for(i=0;i<n;i++) cout<<a[i]<<""; //輸出a[i] cout<<endl; //換行……編輯ppt*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。參考程序:…… Sort(b,n); //對(duì)b排序 cout<<"b:"; //輸出提示 for(i=0;i<n;i++) cout<<b[i]<<""; //輸出b[i] cout<<endl; //換行 Sort(c,n); //對(duì)c排序 cout<<"c:"; //輸出提示 for(i=0;i<n;i++) cout<<c[i]<<""; //輸出c[i] cout<<endl; //換行 system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息 return0; //返回值,返回操作系統(tǒng)}編輯pptC++面向?qū)ο蟪绦蛟O(shè)計(jì)教程第2章類和對(duì)象習(xí)題解答

編輯ppt一、選擇題1.下列選項(xiàng)中,不屬于面向?qū)ο蟪绦蛟O(shè)計(jì)特征的是

。A)繼承性 B)多態(tài)性C)類比性 D)封裝性解析:封裝性、繼承性和多態(tài)性是面向?qū)ο笏枷氲?個(gè)主要特征。封裝性指將數(shù)據(jù)和算法捆綁成一個(gè)整體,這個(gè)整體就是對(duì)象,描述對(duì)象的數(shù)據(jù)被封裝在其內(nèi)部。繼承性是指一種事物保留了另一種事物的全部特征,并且具有自身的獨(dú)有特征。多態(tài)性主要指當(dāng)多個(gè)事物繼承自一種事物時(shí),同一操作在它們之間表現(xiàn)出不同的行為。答案:C編輯ppt2.在面向?qū)ο蠓椒ㄖ?,?shí)現(xiàn)信息隱蔽是依靠

。A)對(duì)象的繼承 B)對(duì)象的多態(tài)C)對(duì)象的封裝 D)對(duì)象的分類解析:在面向?qū)ο蠓椒ㄖ?,封裝性是指將數(shù)據(jù)和算法捆綁成一個(gè)整體,這個(gè)整體就是對(duì)象,描述對(duì)象的數(shù)據(jù)被封裝在內(nèi)部,只可以通過對(duì)象提供的算法來進(jìn)行操作,從而實(shí)現(xiàn)信息隱蔽。答案:C編輯ppt3.下列關(guān)于類和對(duì)象的敘述中,錯(cuò)誤的是

。A)一個(gè)類只能有一個(gè)對(duì)象 B)對(duì)象是類的具體實(shí)例C)類是某一類對(duì)象的抽象 D)類和對(duì)象的關(guān)系就像數(shù)據(jù)類型和變量的關(guān)系解析:在面向?qū)ο笤O(shè)計(jì)中,類是同一種對(duì)象的抽象,而不只是對(duì)一個(gè)對(duì)象的抽象,一個(gè)類具有多個(gè)對(duì)象。對(duì)象是類的具體實(shí)例。就像數(shù)據(jù)類型和變量的關(guān)系,一種數(shù)據(jù)類型可以定義多個(gè)變量,一個(gè)變量卻只能是一種數(shù)據(jù)類型。答案:A編輯ppt4.有以下類聲明:classMyClass{intnum;};則MyClass類的成員num是

。A)公有數(shù)據(jù)成員 B)公有成員函數(shù) C)私有數(shù)據(jù)成員 D)私有成員函數(shù)解析:函數(shù)聲明時(shí),函數(shù)名后必須帶“{}”,所以num是數(shù)據(jù)成員。在類中,當(dāng)沒有用訪問權(quán)限標(biāo)識(shí)符標(biāo)識(shí)時(shí),默認(rèn)為私有權(quán)限。答案:C編輯ppt5.在下列函數(shù)原型中,可以作為類AA構(gòu)造函數(shù)的是

。A)voidAA(int); B)intAA(); C)AA(int)const D)AA(int);解析:構(gòu)造函數(shù)用于初始綸對(duì)象的數(shù)據(jù)成員,沒有返回類型,而且由于常成員函數(shù)不能更新對(duì)象的數(shù)據(jù)成員,所以常成員函數(shù)也不可能作為構(gòu)造函數(shù)。答案:D編輯ppt6.下列關(guān)于this指針的敘述中,正確的是

。A)任何與類相關(guān)的函數(shù)都有this指針 B)類的成員函數(shù)都有this指針C)類的友元函數(shù)都有this指針 D)類的非靜態(tài)成員函數(shù)才有this指針解析:this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對(duì)象。但是有兩種與類相關(guān)的函數(shù)都沒有this指針,即靜態(tài)成員函數(shù)和友元函數(shù)。答案:D編輯ppt7.有以下程序:classTest{private: staticintn; //靜態(tài)成員public: Test(){n+=2;} //構(gòu)造函數(shù) ~Test(){n-=3;} //析構(gòu)函數(shù) staticintGetNum(){returnn;} //返回n};intTest::n=1; //初始化nintmain() //主函數(shù)main(){ Test*p=newTest; //定義指針p deletep; //釋放p指向的動(dòng)太對(duì)象 cout<<"n="<<Test::GetNum()<<endl;//輸出n return0; //返回值0,返回操作系統(tǒng)}執(zhí)行后的輸出結(jié)果是

。A)n=0 B)n=1 C)n=2 D)n=3解析:靜態(tài)數(shù)據(jù)成員初始化的值為1,執(zhí)行“Test*p=newTest”將調(diào)用構(gòu)造函數(shù),執(zhí)行“n+=2;”,n的值變?yōu)?,執(zhí)行“deletep;”時(shí)將調(diào)用析構(gòu)函數(shù),執(zhí)行“n-=3;”,n的值減3,變?yōu)?。答案:A編輯ppt8.有以下程序:classMyClass{private: intn; //數(shù)據(jù)成員public: MyClass(intk):n(k){} //構(gòu)造函數(shù) intGet(){returnn;} //返回n intGet()const{returnn+1;} //返回n+1};intmain() //主函數(shù)main(){ MyClassa(5); //定義對(duì)象a constMyClassb(6); //定義對(duì)象b cout<<a.Get()<<b.Get()<<endl; //輸出信息

return0; //返回值0,返回操作系統(tǒng)}運(yùn)行后的輸出結(jié)果是

。A)55 B)57 C)75 D)77解析:const是一個(gè)判斷重載的標(biāo)志,a.Get調(diào)用“intGet(){returnn;}”,故得到5,而常對(duì)象b執(zhí)行"b.Get”時(shí),調(diào)用常成員函數(shù)“intGet()const{returnn+1;}”,故得到6+1=7。答案:B編輯ppt9.由于常對(duì)象不能被更新,因此

。A)通過常對(duì)象只能調(diào)用它的常成員函數(shù) B)通過常對(duì)象只能調(diào)用靜態(tài)成員函數(shù)C)常對(duì)象的成員都是常成員 D)通過常對(duì)象可以調(diào)用任何不改變對(duì)象值的成員函數(shù)解析:通過常對(duì)象只能調(diào)用類中的常成員函數(shù),而不能調(diào)用類中的其他成員函數(shù)。答案:A編輯ppt10.下列情況中,不會(huì)調(diào)用復(fù)制構(gòu)造函數(shù)的是

。A)用一個(gè)對(duì)象去初始化同一類的另一個(gè)新對(duì)象時(shí)B)將類的一個(gè)對(duì)象賦予該類的另一個(gè)對(duì)象時(shí)C)函數(shù)的形參是類的對(duì)象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí)D)函數(shù)的返回值是類的對(duì)象的引用,函數(shù)執(zhí)行返回調(diào)用時(shí)解析:只要在程序的執(zhí)行中,需要用一個(gè)對(duì)象來初始化另一個(gè)對(duì)象,都要調(diào)用復(fù)制構(gòu)造函數(shù),包括A、B、C三種情況。答案:D編輯ppt11.以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是

。A)public B)static C)protected D)private解析:類的訪問權(quán)限有三種:公有、私有、保護(hù),關(guān)鍵字分別是public,private,protected,。static用于靜態(tài)成員的聲明。答案:B編輯ppt12.有以下程序:classMyClass{public: MyClass(){cout<<"A";} //無參構(gòu)造函數(shù) MyClass(charc){cout<<c;} //帶參構(gòu)造函數(shù) ~MyClass(){cout<<"B";} //析構(gòu)函數(shù)};intmain() //主函數(shù)main(){ MyClassa,*p; //定義變量 p=newMyClass('X'); //分配動(dòng)態(tài)空間 deletep; //釋放動(dòng)態(tài)空間 cout<<endl; //換行

return0; //返回值0,返回操作系統(tǒng)}執(zhí)行這個(gè)程序,屏幕上將顯示輸出

。A)ABX B)ABXB C)ABXB D)AXBB解析:定義對(duì)象a時(shí),調(diào)用一次構(gòu)造函數(shù)“MyClass(){cout<<"A";}”,但定義對(duì)象指針p時(shí)不調(diào)用構(gòu)造函數(shù);使用new動(dòng)態(tài)創(chuàng)建對(duì)象時(shí),根據(jù)參數(shù)情況調(diào)用“MyClass(charc){cout<<c;}”,輸出X;執(zhí)行“deletep;”時(shí),需要調(diào)用一次析構(gòu)函數(shù),輸出B;最后主函數(shù)結(jié)束時(shí),對(duì)象a調(diào)用一次析構(gòu)函數(shù),輸出B。答案:D編輯ppt13.有以下程序:classTest{public: staticinta; //靜態(tài)成員 voidInit(){a=1;} //初始化函數(shù) Test(inta=6){Init();a++;} //構(gòu)造函數(shù)};intTest::a=0; //初始化aTestobj; //定義全局對(duì)象intmain() //主函數(shù)main(){ cout<<obj.a<<endl; //輸出a return0; //返回值0,返回操作系統(tǒng)}運(yùn)行時(shí)輸出的結(jié)果是

。A)0 B)1 C)2 D)3解析:首先初始化靜態(tài)數(shù)據(jù)成員a為0,然后在定義全局對(duì)象obj時(shí)調(diào)用構(gòu)造函數(shù)。這時(shí)有兩個(gè)a,一個(gè)是“Test(inta=6){Init();a++;}”函數(shù)中的局部變量a,另一個(gè)是靜態(tài)數(shù)據(jù)成員a,需要靠作用域來區(qū)分。在執(zhí)行Init()時(shí),由于離開了構(gòu)造函數(shù)“Test(inta=6){Init();a++;}”的作用域,Init()里的a為靜態(tài)數(shù)據(jù)成員,這時(shí)靜態(tài)數(shù)據(jù)成員a賦值為1;之后回到構(gòu)造函數(shù)執(zhí)行a++,這個(gè)a為“Test(inta=6){Init();a++;}”中的a,值變?yōu)?,但當(dāng)構(gòu)造函數(shù)執(zhí)行完畢后,該局部變量a隨之消失,與對(duì)象無關(guān)。obj.a調(diào)用的是靜態(tài)數(shù)據(jù)成員,結(jié)果為1。答案:B編輯ppt14.有以下程序:classTest{private: longx; //私有數(shù)據(jù)成員public: Test(longa):x(a){} //構(gòu)造函數(shù) friendlongFun(Tests); //友元};longFun(Tests){ if(s.x<=1)return1; //遞歸結(jié)束 elsereturns.x*Fun(Test(s.x-1)); //遞歸調(diào)用}intmain() //主函數(shù)main(){ intsum=0; //定義變量 for(inti=0;i<6;i++) sum+=Fun(Test(i)); //累加求和 cout<<sum<<endl; //輸出sum

return0; //返回值0,返回操作系統(tǒng)}運(yùn)行后的輸出結(jié)果是

。A)120 B)16 C)154 D)34解析:友元函數(shù)Fun()參數(shù)表中的對(duì)象在初始化時(shí)需執(zhí)行構(gòu)造函數(shù)“Test::Test(longa)”,調(diào)用過程為:先調(diào)用構(gòu)造函數(shù)Test(i),使Test中x的值為i,再通過友元函數(shù)直接訪問Test.x,執(zhí)行Fun()中的語句,可得到:Fun(Test(0))=1,F(xiàn)un(Test(1))=1,F(xiàn)un(Test(2))=2*1,F(xiàn)un(Test3)=3*2*1=6,F(xiàn)un(Test(4))=4*3*2*1=24,F(xiàn)un(Test(5))=5*4*3*2*1=120,sum=1+1+2+6+24+120=154。答案:C編輯ppt15.有以下程序:classTest{private: inta; //數(shù)據(jù)成員public: Test(){cout<<"無參構(gòu)造函數(shù)"<<endl;} //無參構(gòu)造函數(shù) Test(inta){cout<<a<<endl;} //帶參構(gòu)造函數(shù) Test(constTest©):a(copy.a) //復(fù)制構(gòu)造函數(shù) {cout<<"復(fù)制構(gòu)造函數(shù)"<<endl;} ~Test(){cout<<"析構(gòu)函數(shù)"<<endl;} //析構(gòu)函數(shù)};intmain() //主函數(shù)main(){ Testa(3); //定義對(duì)象

return0; //返回值0,返回操作系統(tǒng)}運(yùn)行時(shí)的輸出結(jié)果是

。A)3 B)無參構(gòu)造函數(shù) C)復(fù)制構(gòu)造函數(shù) D)3 析構(gòu)函數(shù) 析構(gòu)函數(shù) 析構(gòu)函數(shù)解析:創(chuàng)建對(duì)象a時(shí)帶有參數(shù)3,故調(diào)用構(gòu)造函數(shù)Test(inta),輸出3并換行;程序結(jié)束時(shí)調(diào)用析構(gòu)函數(shù)~Test(),輸出“析構(gòu)函數(shù)”并換行。答案:D編輯ppt16.有以下程序:classMyClass{private: intn; //數(shù)據(jù)成員public: MyClass(intm):n(m){} //構(gòu)造函數(shù) voidPrint()const{cout<<"const:n="<<n<<"";} //常成員函數(shù) voidPrint(){cout<<"n="<<n<<"";} //非常成員函數(shù)};intmain() //主函數(shù)main(){ constMyClassobj1(10); //常對(duì)象 MyClassobj2(20); //非常對(duì)象 obj1.Print(); //輸出信息 obj2.Print(); //輸出信息 cout<<endl; //換行

return0; //返回值0,返回操作系統(tǒng)}程序的輸出結(jié)果是

。A)n=10const:n=20 B)const:n=10const:n=20C)const:n=10n=20 D)n=10n=20解析:根據(jù)const修飾符選擇對(duì)應(yīng)的構(gòu)造函數(shù),objl為常對(duì)象,調(diào)用常成員函數(shù),輸出“const:n=10”,obj2為一般對(duì)象,調(diào)用優(yōu)先調(diào)用非常成員函數(shù),輸出“n=20”。答案:C編輯ppt二、填空題1.在面向?qū)ο蠓椒ㄖ校?/p>

描述的是具有相同屬性與操作的一組對(duì)象。解析:在面向?qū)ο笤O(shè)計(jì)中,一個(gè)對(duì)象是由一些屬性和操作構(gòu)成的。對(duì)象的屬性描述了對(duì)象的內(nèi)部細(xì)節(jié)。類是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類的所有對(duì)象提供統(tǒng)一的抽象描述。答案:類編輯ppt2.非成員函數(shù)應(yīng)聲明為類的

函數(shù)才能訪問這個(gè)類的private成員。。解析:類具有數(shù)據(jù)封裝和隱藏的特性,通常只有類的成員函數(shù)才能訪問類的私有成員,外部函數(shù)只能訪問類的公有成員。但在某些情況下,需要在類的外部訪問類的私有成員,這時(shí)必須依靠引入友元來實(shí)現(xiàn)。答案:友元編輯ppt3.下列程序的輸出結(jié)果為:01試將程序補(bǔ)充完整。classPoint{private: intx,y; //坐標(biāo) staticintcount; //靜態(tài)數(shù)據(jù)成員public: Point(intm=0,intn=0):x(m),y(n){count++;}//構(gòu)造函數(shù) ~Point(){count--;} //析構(gòu)函數(shù) intGetX()const{returnx;} //返回x intGetY()const{returny;} //返回y staticvoidShowCount(){cout<<count<<endl;}//輸出count};

//靜態(tài)數(shù)據(jù)成員的初始化intmain() //主函數(shù)main(){ Point::ShowCount(); //輸出count Pointa(6,8); //定義對(duì)象 Point::ShowCount(); //輸出count system(“PAUSE”);//調(diào)用庫函數(shù)system(),輸出提示信息 return0; //返回值0,返回操作系統(tǒng)}。解析:由第一次調(diào)用GetCount()函數(shù)輸出count的值為0可知,應(yīng)將其初始化為0,再根據(jù)靜態(tài)數(shù)據(jù)成員的初始化格式:類型類名::靜態(tài)成員名字=值;可得橫線處填寫的語句。答案:intPoint::count=0;編輯ppt4.有以下類聲明:classMyClass{ inti;private: intj;protected: intk;public: intm,n;};其中私有成員的數(shù)量是

。解析:在用class聲明類的成員聲明中,如果沒有標(biāo)識(shí)成員的訪問權(quán)限,則默認(rèn)為私有的訪問權(quán)限,故i為私有訪問權(quán)限。答案:2編輯ppt5.有以下程序:classInteger{private: intn; //數(shù)據(jù)成員public: Integer(intn=0){

=n;} //構(gòu)造函數(shù) voidShow()const{cout<<n<<endl;} //輸出n};intmain() //主函數(shù)main(){ Integeri; //定義對(duì)象i i.Show(); //輸出信息

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示 return0; //返回值0,返回操作系統(tǒng)}解析:在構(gòu)造函數(shù)函數(shù)中,變量n是函數(shù)的形參,由于與Integer的數(shù)據(jù)成員同名,用函數(shù)參數(shù)n給Integer的數(shù)據(jù)成員n賦值時(shí),需要this指針或作用域運(yùn)算符進(jìn)行區(qū)分。答案:this->n或

Integer::n編輯ppt6.有以下程序:classA{public: A(){cout<<"A";} //構(gòu)造函數(shù) ~A(){cout<<"~A";} //析構(gòu)函數(shù)};intmain() //主函數(shù)main(){ A*p=newA; //定義指針 deletep; //釋放動(dòng)態(tài)空間 cout<<endl; //換行 system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示 return0; //返回值0,返回操作系統(tǒng)}程序的輸出結(jié)果是

。解析:創(chuàng)建動(dòng)態(tài)對(duì)象時(shí)需調(diào)用A的構(gòu)造函數(shù),輸出“A”;釋放動(dòng)態(tài)對(duì)象時(shí),調(diào)用A的析構(gòu)函數(shù),輸出“~A”。答案:A~A編輯ppt三、編程題1.定義一個(gè)滿足如下要求的Date類。(1)用下面的格式輸出日期:年-月-日(2)設(shè)置日期。并編出應(yīng)用程序,定義日期對(duì)象,設(shè)置日期,輸出該對(duì)象提供的日期。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdclassDate{private://數(shù)據(jù)成員

intyear; //年

intmonth; //月

intday; //日……編輯ppt1.定義一個(gè)滿足如下要求的Date類。(1)用下面的格式輸出日期:年-月-日(2)設(shè)置日期。并編出應(yīng)用程序,定義日期對(duì)象,設(shè)置日期,輸出該對(duì)象提供的日期。參考程序:……public://公有函數(shù)

Date(inty=2010,intm=1,intd=1): year(y),month(m),day(d){} //構(gòu)造函數(shù)

voidSet(inty,intm,intd) //設(shè)置日期

{year=y;month=m;day=d;} voidShow()const //顯示日期

{cout<<year<<"-"<<month<<"-"<<day<<endl;}};intmain() //主函數(shù)main(){ Dated; //定義對(duì)象

d.Show(); //顯示日期

d.Set(2016,6,18); //設(shè)置日期

d.Show(); //顯示日期

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt2.定義一個(gè)時(shí)間類Time,能提供和設(shè)置由時(shí)、分、秒組成的時(shí)間,并編出應(yīng)用程序,定義時(shí)間對(duì)象,設(shè)置時(shí)間,輸出該對(duì)象提供的時(shí)間。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdclassTime{private://數(shù)據(jù)成員

inthour; //時(shí)

intminute; //分

intsecond; //秒public://公有函數(shù)

Time(inth=0,intm=0,ints=0): //構(gòu)造函數(shù)

hour(h),minute(m),second(s){}

voidSet(inth,intm,ints) //設(shè)置日期

{hour=h;minute=m;second=s;} voidShow()const //顯示日期

{cout<<hour<<":"<<minute<<":"<<second<<endl;}};intmain() //主函數(shù)main(){ Timet; //定義對(duì)象

t.Show(); //顯示時(shí)間

t.Set(8,6,18); //設(shè)置時(shí)間

t.Show(); //顯示時(shí)間

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt*3.編寫設(shè)計(jì)一個(gè)People(人)類。該類的數(shù)據(jù)成員有姓名(name)、年齡(age)、身高(height)、體重(weight)和人數(shù)(num),其中人數(shù)為靜態(tài)數(shù)據(jù)成員,成員函數(shù)有構(gòu)造函數(shù)(People)、進(jìn)食(Eatting)、運(yùn)動(dòng)(Sporting)、顯示(Show)和顯示人數(shù)(ShowNum)。其中構(gòu)造函數(shù)由已知參數(shù)姓名(nm)、年齡(a)、身高(h)和體重(w)構(gòu)造對(duì)象,進(jìn)食函數(shù)使體重加1,運(yùn)動(dòng)函數(shù)使身高加1,顯示函數(shù)用于顯示人的姓名、年齡、身高、體重,顯示人數(shù)函數(shù)為靜態(tài)成員函數(shù),用于顯示人數(shù)。假設(shè)年齡的單位為歲,身高的單位為厘米,體重的單位為市斤,要求所有數(shù)據(jù)成員為private訪問權(quán)限,所有成員函數(shù)為public訪問權(quán)限,在主函數(shù)中定義若干個(gè)對(duì)象,通過對(duì)象直接訪問類的所有非靜態(tài)成員函數(shù),通過類訪問靜態(tài)成員函數(shù)。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdclassPeople{private://數(shù)據(jù)成員 charname[9]; //姓名 intage; //年齡 intheight; //身高 doubleweight; //體重 staticintnum; //人數(shù)……編輯ppt……public://公有函數(shù) People(charnm[]="無名氏",inta=16,inth=168,intw=118): age(a),height(h),weight(w){strcpy(name,nm);num++;} voidEatting(){weight++;} //進(jìn)食 voidSporting(){height++;} //運(yùn)動(dòng) voidShow() const //顯示信息 { cout<<"個(gè)人信息:"<<endl; cout<<"姓名:"<<name<<endl; cout<<"年齡:"<<age<<"歲"<<endl; cout<<"身高:"<<height<<"厘米"<<endl; cout<<"體重:"<<weight<<"市斤"<<endl<<endl; } staticvoidShowNum() //顯示人數(shù) {cout<<"人數(shù):"<<num<<endl;}};intPeople::num=0; //初始化靜態(tài)數(shù)據(jù)成員num……編輯ppt……intmain() //主函數(shù)main(){ Peoplep1; //定義對(duì)象 p1.Show(); //顯示信息

Peoplep2("李敏",18,170,108); //定義對(duì)象 p2.Eatting(); //進(jìn)食 p2.Sporting(); //運(yùn)動(dòng) p2.Show(); //顯示信息

People::ShowNum(); //顯示人數(shù) system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出提示信息 return0; //返回值,返回操作系統(tǒng)}編輯ppt*4.定義一個(gè)描述員工(Employee)基本情況的類,數(shù)據(jù)成員包括編號(hào)(num)、姓名(name)、性別(sex)、工資(wage)、人數(shù)(count)、總工資(totalWage)。其中姓名定義為長(zhǎng)度為18的字符數(shù)組,性別為為長(zhǎng)度為3的字符數(shù)組,其它數(shù)據(jù)成員類型為整型,總工資和人數(shù)為靜態(tài)數(shù)據(jù)成員,函數(shù)成員包括構(gòu)造函數(shù)、顯示基本數(shù)據(jù)函數(shù)(ShowBase)和顯示靜態(tài)數(shù)據(jù)函數(shù)(ShowStatic),其中構(gòu)造函數(shù)由已知參數(shù)編號(hào)(nu)、姓名(nm)、性別(sx)和工資(wg)構(gòu)造對(duì)象,顯示基本數(shù)據(jù)函數(shù)用于顯示學(xué)生的編號(hào)、姓名、性別和工資,顯示靜態(tài)數(shù)據(jù)函數(shù)為靜態(tài)成員函數(shù),用于顯示人數(shù)和總工資;要求所有數(shù)據(jù)成員為protected訪問權(quán)限,所有成員函數(shù)為public訪問權(quán)限,在主函數(shù)中定義若干個(gè)員工對(duì)象,分別顯示員工基本信息,以及顯示員工人數(shù)和總工資。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdclassEmployee{protected://數(shù)據(jù)成員

intnum; //編號(hào)

charname[18]; //姓名

charsex[3]; //姓名

intwage; //工資

staticintcount; //人數(shù)

staticinttotalWage; //總工資……編輯ppt……public://公有函數(shù)

Employee(intnu,charnm[],charsx[],intwg):num(nu),wage(wg)

{strcpy(name,nm);strcpy(sex,sx);count++;totalWage+=wg;}; voidShowBase() //顯示基本數(shù)據(jù)

{ cout<<"個(gè)人基本信息:"<<endl; cout<<"學(xué)號(hào):"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"性別:"<<sex<<endl; cout<<"工資:"<<wage<<"元"<<endl<<endl; } staticvoidShowStatic() //顯示靜態(tài)數(shù)據(jù)

{ cout<<"人數(shù):"<<count<<endl; cout<<"總工資:"<<totalWage<<"元"<<endl; }};intEmployee::count=0; //初始化靜態(tài)數(shù)據(jù)成員countintEmployee::totalWage=0; /初始化靜態(tài)數(shù)據(jù)成員totalWage……編輯ppt……intmain() //主函數(shù)main(){ Employeee1(1008,"李杰","男",2680); //定義對(duì)象

e1.ShowBase(); //顯示基本數(shù)據(jù)

Employeee2(1009,"李敏","女",2860); //定義對(duì)象

e2.ShowBase(); //顯示基本數(shù)據(jù)

e2.ShowStatic(); //顯示靜態(tài)數(shù)據(jù)

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息

return0; //返回值,返回操作系統(tǒng)}編輯pptC++面向?qū)ο蟪绦蛟O(shè)計(jì)教程第3章模板習(xí)題解答編輯ppt一、選擇題1.下列關(guān)于模板的敘述中,錯(cuò)誤的是

。A)模板聲明中的第一個(gè)符號(hào)總是關(guān)鍵字templateB)在模板聲明中用“<”和“>”括起來的部分是模板的類型形參表C)類模板不能有數(shù)據(jù)成員D)在一定條件下函數(shù)模板的類型實(shí)參可以省略解析:由模板聲明的格式可知選項(xiàng)A、B正確。在調(diào)用模板函數(shù)時(shí),如果編譯系統(tǒng)從模板函數(shù)的類型實(shí)參表中得到的信息已經(jīng)能夠判斷部分或全部虛擬類型參數(shù)所對(duì)應(yīng)的實(shí)際類型,而且它們又正好是模板形參中最后的若干個(gè)參數(shù),則在模板類型實(shí)參表中可以省略這幾個(gè)參數(shù),選項(xiàng)D正確。類模板中可以有數(shù)據(jù)成員,數(shù)據(jù)成員的類型可以是虛擬類型,也可以是具體類型,選項(xiàng)C錯(cuò)誤。答案:C編輯ppt2.有以下函數(shù)模板定義:template<classElemType>ElemTypeFun(constElemType&x,constElemType&y){returnx*x+y*y;}在下列對(duì)Fun()的調(diào)用中,錯(cuò)誤的是

。A)Fun(3,5); B)Fun(3.0,5.5); C)Fun(3,5.5); D)Fun<int>(3,5.5);解析:當(dāng)從模板函數(shù)類型實(shí)參表獲得的信息有矛盾時(shí),模板類型實(shí)參不能省略。例如選項(xiàng)C中,編譯系統(tǒng)從第一個(gè)參數(shù)3獲得的信息是ElemType對(duì)應(yīng)于int,而從第二個(gè)參數(shù)5.5處獲得的信息是ElemType對(duì)應(yīng)于double,兩者相互矛盾,因此,編譯時(shí)將產(chǎn)生錯(cuò)誤。解決的方法之一是顯式給出虛擬類型參數(shù)ElemType對(duì)應(yīng)的模板類型實(shí)參,強(qiáng)制ElemType對(duì)應(yīng)于int。答案:C編輯ppt3.關(guān)于關(guān)鍵字class和typename,下列表述中正確的是

。A)程序中typename都可以替換為classB)程序中的class都可以替換為typenameC)在模板類型形參表中只能用typename來聲明參數(shù)的類型D)在模板類型形參表中只能用class或typename來聲明參數(shù)的類型解析:程序中的typename都可以替換為class,但程序中的class不可以全部替換為typename。例如:在“模板類型形參表”中,關(guān)鍵字typename和class是可以互換的;但是在“類模板名”前的關(guān)鍵字class代表的含義是類,不可以用typename代替,選項(xiàng)B錯(cuò)誤。在模板類型形參表中除了typename和class以外也可以用常規(guī)類型來聲明參數(shù)的類型,選項(xiàng)C、D錯(cuò)誤。答案:A編輯ppt4.有以下函數(shù)模板:template<classElemType>ElemTypeSquare(constElemType&x){returnx*x;}其中ElemType是

。A)函數(shù)形參 B)函數(shù)實(shí)參 C)模板類型形參 D)模板類型實(shí)參解析:由函數(shù)模板的定義可知ElemType為模板類型形參。答案:C編輯ppt5.C++中的模板包括

。A)對(duì)象模板和函數(shù)模板 B)對(duì)象模板和類模板C)函數(shù)模板和類模板 D)變量模板和對(duì)象模板解析:C++語言通過模板提供了一種將類型參數(shù)化的機(jī)制,其中包括函數(shù)模板和類模板。答案:C編輯ppt二、填空題1.已知一個(gè)函數(shù)模板的聲明如下:template<typenameT1,typenameT2>T1Fun(T2n){returnn*5.0;}若要求以int型數(shù)7為函數(shù)實(shí)參調(diào)用該模板函數(shù),并返回一個(gè)double型數(shù),則該調(diào)用應(yīng)表示為

。解析:當(dāng)虛擬類型類型參數(shù)作為函數(shù)的返回值類型,而函數(shù)的返回值類型與函數(shù)參數(shù)的類型可以不同時(shí),不管函數(shù)類型實(shí)參的類型是什么,均不能省略模板類型實(shí)參,此題的模板類型實(shí)參應(yīng)為<double,int>。答案:Fun<double,int>(7)編輯ppt2.已知intdbl(intn){returnn+n;}和longdbl(longn){returnn+n;}是一個(gè)函數(shù)模板的兩個(gè)實(shí)例,則該函數(shù)模板的聲明是template<typenameElemType>

解析:將類型int和long參數(shù)化,用模板類型參數(shù)ElemType代替,可得該函數(shù)模板。答案:ElemTypeDbl(ElemTypen){returnn+n;}編輯ppt3.下面程序的運(yùn)行結(jié)果是

。template<classElemType>ElemTypeMin(constElemType&a,constElemType&b)//求a,b的最小值{ if(a<b)returna; //a更小

elsereturnb; //b更小}intmain() //主函數(shù)main(){ intn1=4,n2=5; //定義整型變量

doubled1=0.35,d2=4.4; //定義實(shí)型變量

cout<<"最小整數(shù)="<<Min(n1,n2)<<"," <<"最小實(shí)型="<<Min(d1,d2)<<endl; //輸出信息

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示 return0; //返回值0,返回操作系統(tǒng)}

解析:模板函數(shù)Min()根據(jù)調(diào)用它的實(shí)參類型的不同,生成不同的函數(shù)版本,例如,返回兩個(gè)int型數(shù)的最小值或返回兩個(gè)double型數(shù)的最小值。答案:最小整數(shù)=4,最小實(shí)型=0.35編輯ppt三、編程題1.試使用函數(shù)模板實(shí)現(xiàn)輸出一個(gè)數(shù)組各元素的值,要求編寫測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdtemplate<classElemType>voidDisplay(ElemTypea[],intn) //輸出數(shù)組a各元素之值{ for(inti=0;i<n;i++) cout<<a[i]<<""; //輸出a[i] cout<<endl; //換行}intmain() //主函數(shù)main(){ inta[]={1,2,3,4,5,6,7,8,9}; //定義數(shù)組

Display(a,9); //輸出a system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt2.編寫一個(gè)復(fù)數(shù)類模板Complex,其數(shù)據(jù)成員real和image的類型未知,定義相應(yīng)的成員函數(shù),包括構(gòu)造函數(shù)、輸出復(fù)數(shù)值的函數(shù)、求復(fù)數(shù)和的函數(shù)和求復(fù)數(shù)差的函數(shù),主函數(shù)中定義模板類對(duì)象,分別以int和double實(shí)例化類型參數(shù)。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間std//聲明復(fù)數(shù)類模板template<classElemType>classComplex{private://數(shù)據(jù)成員 ElemTypereal; //實(shí)部 ElemTypeimage; //虛部public://公有函數(shù) Complex(ElemTyper=0,ElemTypei=0):real(r),image(i){} voidShow()const; //輸出復(fù)數(shù) staticComplexAdd(constComplex&z1,constComplex&z2); staticComplexSub(constComplex&z1,constComplex&z2);};……編輯ppt……template<classElemType>voidComplex<ElemType>::Show()const //輸出復(fù)數(shù){ if(image<0)cout<<real<<image<<"i"<<endl;//虛部為負(fù),例如-5i elseif(image==0)cout<<real<<endl; //虛部為0,例如3 elsecout<<real<<“+”<<image<<“i”<<endl;//虛部為正,例如+5i}template<classElemType>Complex<ElemType>Complex<ElemType>::Add(constComplex&z1, constComplex&z2) //復(fù)數(shù)加法{ Complexz(z1.real+z2.real,z1.image+z2.image);//定義復(fù)數(shù)對(duì)象 returnz; //返回復(fù)數(shù)}template<classElemType>Complex<ElemType>Complex<ElemType>::Sub(constComplex&z1, constComplex&z2) //復(fù)數(shù)減法{ Complexz(z1.real-z2.real,z1.image-z2.image);//定義復(fù)數(shù)對(duì)象 returnz; //返回復(fù)數(shù)}……編輯ppt……intmain() //主函數(shù)main(){ Complex<int>z1(2,3),z2(6,-5),z3; //定義復(fù)數(shù)對(duì)象 z1.Show(); //輸出z1 z2.Show(); //輸出z2 z3=Complex<int>::Add(z1,z2); //z3=z1+z2 z3.Show(); //輸出z3 z3=Complex<int>::Sub(z1,z2); //z3=z1-z2 z3.Show(); //輸出z3 Complex<double>z4(2.1,3.8),z5(6.8,-5.1),z6;//定義復(fù)數(shù)對(duì)象 z4.Show(); //輸出z4 z5.Show(); //輸出z5 z6=Complex<double>::Add(z4,z5); //z6=z4+z5 z6.Show(); //輸出z3 z6=Complex<double>::Sub(z4,z5); //z6=z4-z5 z6.Show(); //輸出z6 system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息 return0; //返回值,返回操作系統(tǒng)}編輯ppt*3.編寫一個(gè)使用數(shù)組類模板Array對(duì)數(shù)組求最大值和求元素和的程序,要求編寫出測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間std//聲明數(shù)組類模板template<classElemType>classArray{private://數(shù)據(jù)成員

ElemType*elem; //存儲(chǔ)數(shù)據(jù)元素值

intsize; //數(shù)組元素個(gè)數(shù)public://公有函數(shù)

Array(intsz):size(sz){elem=newElemType[size];} //構(gòu)造函數(shù)

~Array(){deleteelem;} //析構(gòu)函數(shù)

voidSetElem(ElemTypee,inti); //設(shè)置元素值

ElemTypeGetElem(inti)const; //求元素值

ElemTypeMax()const; //求最大值

ElemTypeSum()const; //求元素之和};……編輯ppt……template<classElemType>voidArray<ElemType>::SetElem(ElemTypee,inti) //設(shè)置元素值{ if(i<0||i>=size) { cout<<"元素位置錯(cuò)!"<<endl; exit(1); //退出程序的運(yùn)行,返回到操作系統(tǒng)

} elem[i]=e; //設(shè)置元素值為e} template<classElemType>ElemTypeArray<ElemType>::GetElem(inti)const //求元素值{ if(i<0||i>=size) { cout<<"元素位置錯(cuò)!"<<endl; exit(2); //退出程序的運(yùn)行,返回到操作系統(tǒng)

} returnelem[i]; //返回元素值elem[i]} ……編輯ppt……template<classElemType>ElemTypeArray<ElemType>::Max()const //求最大值{ ElemTypem=elem[0]; //設(shè)elem[0]最大

for(inti=1;i<size;i++) if(elem[i]>m)m=elem[i]; //依次比較求最大值

returnm; //返回最大值}template<classElemType>ElemTypeArray<ElemType>::Sum()const //求元素之和{ ElemTypes=0; //定義變量

for(inti=1;i<size;i++) s=s+elem[i]; //依次求和

returns; //返回和}……編輯ppt……intmain() //主函數(shù)main(){ inta[]={1,9,7,5,6,3}; //定義數(shù)組a intn=6; //數(shù)組元素個(gè)數(shù)

Array<int>obj(n); //定義數(shù)組對(duì)象

inti; //定義變量

for(i=0;i<n;i++) obj.SetElem(a[i],i); //設(shè)置數(shù)組元素值

for(i=0;i<n;i++) cout<<obj.GetElem(i)<<""; //輸出元素值

cout<<endl; //換行

cout<<"最大值為:"<<obj.Max()<<endl; //輸出最大值

cout<<"各元素和為:"<<obj.Sum()<<endl; //輸出各元素之和

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt*4.對(duì)數(shù)組求最大值和求元素和的算法都編寫為函數(shù)模板,要求編寫出測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間stdtemplate<classElemType>ElemTypeMax(ElemTypea[],intn) //求最大值{ ElemTypem=a[0]; //設(shè)a[0]最大

for(inti=1;i<n;i++) if(a[i]>m)m=a[i]; //依次比較求最大值

returnm; //返回最大值}template<classElemType>ElemTypeSum(ElemTypea[],intn) //求元素之和{ ElemTypes=0; //定義變量

for(inti=1;i<n;i++) s=s+a[i]; //依次求和

returns; //返回和}……編輯ppt*4.對(duì)數(shù)組求最大值和求元素和的算法都編寫為函數(shù)模板,要求編寫出測(cè)試程序。參考程序:……intmain() //主函數(shù)main(){ inta[]={1,9,7,5,6,3}; //定義數(shù)組a intn=6; //數(shù)組元素個(gè)數(shù)

for(inti=0;i<n;i++) cout<<a[i]<<""; //輸出元素值

cout<<endl; //換行

cout<<"最大值為:"<<Max(a,n)<<endl; //輸出最大值

cout<<"各元素和為:"<<Sum(a,n)<<endl; //輸出各元素之和

system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息

return0; //返回值,返回操作系統(tǒng)}編輯ppt**5.對(duì)數(shù)組求最大值和求元素和的函數(shù)采用靜態(tài)成員函數(shù)的方式封裝成數(shù)組算法類模板ArrayAlg,要求編寫出測(cè)試程序。參考程序:#include<iostream> //編譯預(yù)處理命令usingnamespacestd; //使用命名空間std//聲明數(shù)組類模板template<classElemType>classArrayAlg{public://公有函數(shù) staticElemTypeMax(ElemTypea[],intn) //求最大值 { ElemTypem=a[0]; //設(shè)a[0]最大 for(inti=1;i<n;i++) if(a[i]>m)m=a[i]; //依次比較求最大值 returnm; //返回最大值 } staticElemTypeSum(ElemTypea[],intn) //求元素之和 { ElemTypes=0; //定義變量 for(inti=1;i<n;i++) s=s+a[i]; //依次求和 returns; //返回和 }};……編輯ppt**5.對(duì)數(shù)組求最大值和求元素和的函數(shù)采用靜態(tài)成員函數(shù)的方式封裝成數(shù)組算法類模板ArrayAlg,要求編寫出測(cè)試程序。參考程序:……intmain() //主函數(shù)main(){ inta[]={1,9,7,5,6,3}; //定義數(shù)組a intn=6; //數(shù)組元素個(gè)數(shù) for(inti=0;i<n;i++) cout<<a[i]<<""; //輸出元素值 cout<<endl; //換行 cout<<"最大值為:"<<ArrayAlg<int>::Max(a,n)<<endl; cout<<"各元素和為:"<<ArrayAlg<int>::Sum(a,n)<<endl; system("PAUSE"); //調(diào)用庫函數(shù)system(),輸出系統(tǒng)提示信息 return0; //返回值,返回操作系統(tǒng)}編輯pptC++面向?qū)ο蟪绦蛟O(shè)計(jì)教程第4章運(yùn)算符重載習(xí)題解答

編輯ppt一、選擇題1.通過運(yùn)算符重載,可以改變運(yùn)算符原有的

。A)操作數(shù)類型 B)操作數(shù)個(gè)數(shù) C)優(yōu)先級(jí) D)結(jié)合性解析:通過運(yùn)算符重載可以改變運(yùn)算符原有的操作數(shù)類型,但是不能改變運(yùn)算符操作數(shù)的個(gè)數(shù)以及優(yōu)先級(jí)和結(jié)合性。答案:A編輯ppt2.運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重含義,因此

。A)可以對(duì)基本類型(如int類型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義B)可以改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)C)只能重載C++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符D)C++中已經(jīng)有的所有運(yùn)算符都可以重載解析:重載運(yùn)算符的函數(shù)的參數(shù)不能全部是C++的標(biāo)準(zhǔn)類型,例如,不能改變運(yùn)算符“+”作用于兩個(gè)int型數(shù)的含義,即運(yùn)算符函數(shù)的參數(shù)中至少存在一個(gè)用戶自定義對(duì)象,故選項(xiàng)A錯(cuò)誤。運(yùn)算符重載不能改變運(yùn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論