C++課后習(xí)習(xí)題解答_第1頁
C++課后習(xí)習(xí)題解答_第2頁
C++課后習(xí)習(xí)題解答_第3頁
C++課后習(xí)習(xí)題解答_第4頁
C++課后習(xí)習(xí)題解答_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 面向?qū)ο蟮姆椒▽W(xué)1什么是面向?qū)ο蠓椒▽W(xué)解:面向?qū)ο蠓椒▽W(xué)就是盡量模擬人類習(xí)慣的思維方式,使軟件開發(fā)的方法與過程盡可能接近人類認(rèn)識(shí)世界、解決問題的方法與過程,從而使描述問題的問題空間(即問題域)與實(shí)現(xiàn)解法的解空間(即求解域)在結(jié)構(gòu)上盡可能一致。2什么是對(duì)象它與傳統(tǒng)的數(shù)據(jù)有何關(guān)系有什么不同解:對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體。它與傳統(tǒng)數(shù)據(jù)有本質(zhì)的不同,傳統(tǒng)數(shù)據(jù)是被動(dòng)地等待對(duì)它進(jìn)行處理,對(duì)象是進(jìn)行處理的主體。3什么是封裝性和繼承性解:封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要特點(diǎn),即將對(duì)象的屬性和行為封裝在對(duì)象的內(nèi)部,形成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。繼承性是子類

2、自動(dòng)共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。4什么是多態(tài)性解:多態(tài)性是面向?qū)ο蠓椒ǖ闹匾卣?。不同的?duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。5試寫出學(xué)生管理系統(tǒng)中所涉及的類(屬性和方法)。學(xué)生管理系統(tǒng)中學(xué)生信息有:姓名、學(xué)號(hào)、年齡、成績(jī);學(xué)生管理系統(tǒng)完成學(xué)生信息輸入、學(xué)生信息輸出、插入學(xué)生信息、刪除學(xué)生信息、查找學(xué)生信息。解:class Studentprivate: char cName12;ET Framework之上的高級(jí)程序設(shè)計(jì)語言。C#集C語言的簡(jiǎn)潔強(qiáng)大、C+的面向?qū)ο?、VB的圖形化設(shè)計(jì)方法、Java的編譯與執(zhí)行機(jī)制等優(yōu)點(diǎn)于一身。C#是創(chuàng)新性的新式編程語

3、言,它巧妙地結(jié)合了最常用的行業(yè)語言和研究語言中的功能,并引入了多種潛在的新功能,提高了開發(fā)人員在語言構(gòu)造方面的效率,將快速的應(yīng)用程序開發(fā)與對(duì)底層平臺(tái)各種功能的訪問緊密結(jié)合在一起,使得程序員能夠在.NET平臺(tái)上快速開發(fā)各種應(yīng)用程序。7C+支持多態(tài)性主要表現(xiàn)在哪些方面解:C+支持兩種多態(tài)性,即編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過重載來實(shí)現(xiàn)的,運(yùn)行時(shí)的多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的。思考題1設(shè)計(jì)一個(gè)棧類,實(shí)現(xiàn)的操作有初始化棧、入棧、出棧、判??铡=猓篶lass Stackprivate: int top; int s100;public: void Ini_Stack(); 3o <

4、;<" "<< <<" "<<datai.score <<endl;2定義一個(gè)圖書類,圖書信息有圖書名稱、作者、出版社、價(jià)格。要求利用棧實(shí)現(xiàn)圖書的入庫、出庫和顯示等功能。const int MAXSIZE=5; ame<<" "<<datai.author<<" "<<datai.publish<<" "<<datai.price<<end

5、l;3有Distance類和Point類,將Distance類定義為Point類的友元類來實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離。第5章 靜態(tài)與命名控制1下列靜態(tài)數(shù)據(jù)成員的特性中,錯(cuò)誤的是( D )。 A說明靜態(tài)數(shù)據(jù)成員時(shí),前邊要加關(guān)鍵字static B靜態(tài)數(shù)據(jù)成員在類外進(jìn)行初始化 C引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符 D靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共有的2下列關(guān)于靜態(tài)數(shù)據(jù)成員的敘述,錯(cuò)誤的是( A )。 A靜態(tài)數(shù)據(jù)成員在對(duì)象調(diào)用析構(gòu)函數(shù)后,從內(nèi)存中撤銷 B即使沒有實(shí)例化類,靜態(tài)數(shù)據(jù)成員也可以通過類名進(jìn)行訪問 C類的靜態(tài)數(shù)據(jù)成員是該類所有對(duì)象所共享 D類的靜態(tài)數(shù)據(jù)成員需要

6、初始化3下列關(guān)于靜態(tài)成員的敘述中,錯(cuò)誤的是( B )。 A類的外部可以直接調(diào)用類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù) B與一般成員一樣,只有通過對(duì)象才能訪問類的靜態(tài)成員 C類的靜態(tài)數(shù)據(jù)成員不能在構(gòu)造函數(shù)中初始化 D類的一般成員函數(shù)可以調(diào)用類的靜態(tài)成員4聲明類的成員為靜態(tài)成員,必須在其前面加上關(guān)鍵字( B )。 AconstBstaticCpublicDvirtual 5靜態(tài)成員為該類的所有( B )共享。 A成員B對(duì)象Cthis指針D友元6程序運(yùn)行結(jié)果:1237程序運(yùn)行結(jié)果:CStatic:val=10思考題1利用靜態(tài)數(shù)據(jù)成員的概念,編寫一個(gè)類,統(tǒng)計(jì)目前存在多少個(gè)該類的對(duì)象。class Aprivat

7、e:static int n;public:A()n+;void Print()cout<<n<<endl;int A:n=0;int main()A a1;();A a5,a2; ();return 0;2利用靜態(tài)數(shù)據(jù)成員的概念,編寫一個(gè)學(xué)生類,學(xué)生信息包括姓名、學(xué)號(hào)、成績(jī);統(tǒng)計(jì)學(xué)生的總?cè)藬?shù)及總成績(jī),并輸出。#include "iostream"#include"iomanip"using namespace std;class Studentprivate:char *name;int stu_no;float score;s

8、tatic int total_num;static float total_score;public:Student(char *na,int no,float sco);void Print();int Student:total_num =0;float Student:total_score =0;int main()Student s1("張明",1,90);();Student s2("王蘭",2,95);();Student s3("于敏",3,87);();return 0;Student:Student(char *

9、na,int no,float sco)name=new charstrlen(na)+1;strcpy(name,na);stu_no=no;score=sco;total_num+;total_score=total_score+score;void Student:Print() cout<<"第"<<total_num<<"個(gè)學(xué)生:"<<name<<setw(4)<<stu_no<<setw(4)<<score <<endl;cout<

10、;<"總?cè)藬?shù)是:"<<total_num<<endl;cout<<"總分?jǐn)?shù)是:"<<total_score<<endl;3利用靜態(tài)的概念,編寫一個(gè)小貓類,統(tǒng)計(jì)并輸出每個(gè)小貓的重量、小貓的總數(shù)量及總重量。class small_cat 態(tài) 綁定。在運(yùn)行時(shí)確定函數(shù)調(diào)用稱為 動(dòng)態(tài) 綁定。2如果A是從B繼承而來,則A叫 子 類,B叫 父 類。3在多重派生過程中,如果想使公共的基類在派生時(shí)只有一個(gè)副本,則可以將這個(gè)基類聲明為 虛基類 。二、選擇題1在類的繼承與派生過程中,關(guān)于派生類不正確的說法是(

11、B )。 A派生類可以繼承基類的所有特性B派生類只能繼承基類的部分特性 C派生類可以重新定義已有的成員D派生類可以改變現(xiàn)有成員的屬性2派生類對(duì)象對(duì)它的基類成員,(A )是可以訪問的。 A公有繼承的公有成員B公有繼承的私有成員 C公有繼承的保護(hù)成員D私有繼承的共有成員3下列敘述中不正確的是( C )。 A含純虛函數(shù)的類稱為抽象類B不能直接由抽象類建立對(duì)象 C抽象類不能作為派生類的基類D純虛函數(shù)沒有其函數(shù)的實(shí)現(xiàn)部分4當(dāng)定義派生類的對(duì)象時(shí),調(diào)用構(gòu)造函數(shù)的正確順序是(A )。 A先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù) B先調(diào)用派生類的構(gòu)造函數(shù),再調(diào)用基類的構(gòu)造函數(shù) C調(diào)用基類的構(gòu)造函數(shù)和派生類的

12、構(gòu)造函數(shù)的順序無法確定 D調(diào)用基類的構(gòu)造函數(shù)和派生類的構(gòu)造函數(shù)是同時(shí)進(jìn)行的5關(guān)于多重繼承二義性的描述中,(D)是錯(cuò)誤的。 A一個(gè)派生類的兩個(gè)基類中都有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員的訪問可能出現(xiàn)二義性 B解決二義性最常用的方法是對(duì)成員名的限定 C基類和派生類中出現(xiàn)同名函數(shù),也存在二義性 D一個(gè)派生類是從兩個(gè)基類派生而來的,而這兩個(gè)基類又有一個(gè)共同的基類,對(duì)該基類成員進(jìn)行訪問時(shí),也可能出現(xiàn)二義性6派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含(C )。 A基類的構(gòu)造函數(shù)B派生類的自對(duì)象的初始化 C基類的自對(duì)象的初始化D派生類的一般數(shù)據(jù)成員的初始化7下列關(guān)于protected成員說法,正確的是(

13、 A )。 A在派生類中仍然是protected的B具有private成員和public成員的雙重角色 C在派生類中是private的D在派生類中是public的8下列關(guān)于虛函數(shù)的說法,正確的是(C )。 A虛函數(shù)是一個(gè)static類型的成員函數(shù) B虛函數(shù)是一個(gè)非成員函數(shù) C基類中采用virtual聲明一個(gè)虛函數(shù)后,派生類中定義相同原型的函數(shù)時(shí)可以不加virtual聲明 D派生類中的虛函數(shù)與基類中相同原型的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)或類型9關(guān)于虛函數(shù)和抽象類描述中,( C )是錯(cuò)誤的。 A純虛函數(shù)是一種特殊的函數(shù),它沒有具體實(shí)現(xiàn) B抽象類是指具有純虛函數(shù)的類 C一個(gè)基類中聲明有純虛函數(shù),則它的派

14、生類一定不再是抽象類 D抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出10下列程序,編譯時(shí)出現(xiàn)錯(cuò)誤的是( C )。 class A 1 B. 2 C. 3 D. 4三、簡(jiǎn)答題1簡(jiǎn)要定義如下術(shù)語:繼承、虛函數(shù)、多重繼承。答:繼承性是自然界普遍存在的一種現(xiàn)象,是從先輩那里得到已有的特征和行為。類的繼承就是新類從已有類那里獲得已有的屬性和行為,或者說是基類派生了具有基類特征又有新特征的派生類。虛函數(shù)需要在函數(shù)前面加virtual說明。通過虛函數(shù)可以達(dá)到動(dòng)態(tài)綁定效果。在類的派生過程中,如果基類名有多個(gè),則這種繼承方式稱為多繼承,這時(shí)的派生類同時(shí)得到了多個(gè)已有類的特征。2分別說明什么是抽象基類什

15、么是虛基類當(dāng)一個(gè)類中存在純虛函數(shù)時(shí),這個(gè)類就是抽象類。如把一個(gè)基類定義為虛基類,必須在派生子類時(shí)在父類的名字前加關(guān)鍵字virtual。第8章 模 板1類模板的使用實(shí)際上是將類模板實(shí)例化成為一個(gè)具體的( D )。 A類B對(duì)象C函數(shù)D模板類2關(guān)于類模板,下列表述中不正確的是( B )。 A用類模板定義一個(gè)對(duì)象時(shí),不能省略實(shí)參 B類模板只能有虛擬類型參數(shù) C類模板本身在編譯中不會(huì)生成任何代碼 D類模板的成員函數(shù)都是模板函數(shù)3類模板的模板參數(shù)( )。 A只可作為數(shù)據(jù)成員的類型 B只可作為成員的返回類型 C只可作為成員函數(shù)的參數(shù)類型 D以上三者皆是4一個(gè)( )允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)

16、成員及某些成員函數(shù)的返回值能取任意類型。 A函數(shù)模板B模板函數(shù)C類模板D模板類5如果一個(gè)模板聲明列出了多個(gè)參數(shù),則每個(gè)參數(shù)之間必須使用逗號(hào)隔開,每個(gè)參數(shù)都須重復(fù)使用關(guān)鍵字( D )。 AconstBstaticCvoidDclass6假設(shè)類模板Employee存在一個(gè)static數(shù)據(jù)成員salary,由該類模板實(shí)例化3個(gè)模板類,那么存在( D )個(gè)static數(shù)據(jù)成員的副本。 A0B1C2D37程序運(yùn)行結(jié)果:120思考題1編寫一個(gè)使用類模板對(duì)數(shù)組進(jìn)行排序、查找和求元素和的程序。const int SIZE=10; .輸入鏈表"<<endl;cout<<&quo

17、t;2.輸入鏈表"<<endl;cout<<"0.退出"<<endl;cout<<"請(qǐng)選擇"<<endl;cin>>n;switch (n)case 1:head1=new Node<T>head1->next =0;CreateLinkList(head1);break;case 2:head2=new Node<T>head2->next =0;CreateLinkList(head2);while(n);template<cl

18、ass T>void LinkList<T>:Print_LinkList( )int n;doNode<T> *p;cout<<"1.輸出鏈表"<<endl;cout<<"2.輸出鏈表"<<endl;cout<<"3.輸出合并后的鏈表"<<endl;cout<<"0.退出"<<endl;cout<<"請(qǐng)選擇"<<endl;cin>>n

19、;switch (n)case 1:p=head1->next;break;case 2:p=head2->next;break;case 3:Merge();p=head3->next ;if (n)while(p)cout<<p->data <<" "p=p->next;cout<<endl;while(n);template<class T>void LinkList<T>:CreateLinkList(Node<T> *h)int flag=-1,num=0;Nod

20、e<T> *s,*r;r=h;T x;cout<<"please input a value(-1 end):"<<endl;cin>>x;while(x!=flag)s=new Node<T>s->data=x;r->next=s;r=s;cin>>x;if(r!=NULL) r->next=NULL;template<class T>void LinkList<T>:Merge()Node<T> *p1;Node<T> *s,*r;p

21、1=head1->next;T aMaxlen,bMaxlen,cMaxlen;int i,j,k,l,n1,n2;i=0;n1=0;n2=0;while(p1)ai=p1->data ;p1=p1->next ;i+;n1+;p1=head2->next ;i=0;while(p1)bi=p1->data ;p1=p1->next ;i+;n2+;i=n1-1;j=n2-1;k=0;while(i>=0 && j>=0)if(ai>bj)ck+=ai-;elseck+=bj-;if(i>=0)for(l=i;l>

22、;=0;l-)ck+=al;elsefor(l=j;l>=0;l-)ck+=bl;head3=new Node<T>head3->next =0;r=head3;for(i=0;i<k;i+)s=new Node<T>s->data=ci;r->next=s;r=s;if(r!=NULL) r->next=NULL;4用類模板實(shí)現(xiàn)棧,功能有:判斷棧是否為空、入棧、出棧、讀棧頂元素。const int MAXSIZE=100; 文件,它包含了所有輸入/輸出操作所需要的信息。2成員函數(shù) setf()和unsetf() 被用來設(shè)置和恢復(fù)格式

23、狀態(tài)標(biāo)志。3要格式化流操縱元,必須包含頭文件 。流插入操作符是 << ,流提取操作符是 >> 。4C+中,數(shù)據(jù)文件類型分為( C )。 A文本文件和順序文件B順序文件和隨機(jī)文件 C文本文件和二進(jìn)制文件D數(shù)據(jù)文件和文本文件5( A )是標(biāo)準(zhǔn)輸入流。 AcinBcoutCcerrDclog6關(guān)于提取和插入運(yùn)算符,下列說法不正確的是( A )。 A可以重載為類的成員函數(shù) B應(yīng)該重載為類的友元函數(shù) C提取運(yùn)算符是從輸入字符序列中提取數(shù)據(jù) D插入運(yùn)算符是把輸出數(shù)據(jù)插入到輸出字符序列中7選擇下面程序的運(yùn)行結(jié)果( D )。#include<>void main() int

24、 i=100; (ios:hex); cout<<i<<"t" cout<<i<<"t" (ios:dec); cout<<i<<endl; A64 100 64 B64 64 64 C64 64 100 D64 100 1008判斷正誤,如果不正確,說明原因。(1) 帶有l(wèi)ong型參數(shù)的流成員函數(shù)flags( )用于根據(jù)參數(shù)設(shè)置標(biāo)志狀態(tài),并返回原來的設(shè)置。(正確)(2) 流插入操作符<<和流讀取操作符>> 被重載以處理所有的標(biāo)準(zhǔn)數(shù)據(jù)包括字符和內(nèi)存地址(僅對(duì)流插入)和全部用戶自定義類型,而且可以作為成員函數(shù)定義。(不正確)9下面程序運(yùn)行后,數(shù)據(jù)文件保存的結(jié)果是(1 3 5 7 9 )。#include <iostream>#include <f

溫馨提示

  • 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)論