第11章習(xí)題答案_第1頁
第11章習(xí)題答案_第2頁
第11章習(xí)題答案_第3頁
第11章習(xí)題答案_第4頁
第11章習(xí)題答案_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上十一章 課后習(xí)題答案一、選擇題1. 下列關(guān)于異常的敘述錯(cuò)誤的是( A )。 A編譯錯(cuò)屬于異常,可以拋出B運(yùn)行錯(cuò)屬于異常 C硬件故障也可當(dāng)異常拋出D只要是編程者認(rèn)為是異常的都可當(dāng)異常拋出2. 下列敘述錯(cuò)誤的是( B )。 Athrow語句須書寫在時(shí)語句塊中 Bthrow語句必須在try語句塊中直接運(yùn)行或通過調(diào)用函數(shù)運(yùn)行 C一個(gè)程序中可以有try語句而沒有throw語句Dthrow語句拋出的異??梢圆槐徊东@3. 關(guān)于函數(shù)聲明 float fun(int a,int b)throw,下列敘述正確的是( B )。 A表明函數(shù)拋出float類型異常 B表明函數(shù)拋出任何類型異常

2、C表明函數(shù)不拋出任何類型異常D表明函數(shù)實(shí)際拋出的異常4. 下列敘述錯(cuò)誤的是(C)。 Acatch()語句可捕獲所有類型的異常 B一個(gè)try語句可以有多個(gè)catch語句 Ccatch()語句可以放在catch語句組的中間D程序中try語句與catch語句是一個(gè)整體,缺一不可二、簡答題1. 什么是命名空間,怎樣定義命名空間?答: 命名空間是一個(gè)保持唯一名稱的區(qū)域,其實(shí)質(zhì)是一個(gè)作用域。語法為: namespace A /定義一個(gè)命名空間A int a; float b; void f() 其中namespace為定義的關(guān)鍵字,A為命名空間的名字。2. 什么是異常,什么是異常處理?答:在編寫程序時(shí),總

3、是會(huì)不可避免地遇到一些問題。尤其是在設(shè)計(jì)一個(gè)類時(shí),總要包含一些錯(cuò)誤處理。C+提供了異常處理機(jī)制,它把錯(cuò)誤檢查和錯(cuò)誤處理分開。如設(shè)計(jì)類專門檢查各種可能出現(xiàn)的錯(cuò)誤, 類的使用者則提供具體的錯(cuò)誤處理程序。3. C+異常處理處理有哪些特點(diǎn)?答:異常處理的思路是:發(fā)現(xiàn)錯(cuò)誤的函數(shù)可以不具有錯(cuò)誤處理能力。這個(gè)函數(shù)會(huì)引發(fā)一個(gè)異常,希望它的調(diào)用者能捕獲這個(gè)異常并處理這個(gè)錯(cuò)誤。如果調(diào)用者也不能處理這個(gè)錯(cuò)誤,還可以聯(lián)系給上層調(diào)用者處理。這種傳播會(huì)一直繼續(xù)到異常被處理為止。這樣低層的函數(shù)可以著重解決具體問題,上層調(diào)用者來考慮對(duì)不同的異常進(jìn)行相應(yīng)的處理。4. C+異常處理中怎樣處理構(gòu)造與析構(gòu)的關(guān)系?答:C+異常處理的真

4、正能力,不僅在于它能夠處理不同類型的異常,同時(shí)它具有異常拋擲前構(gòu)造的所有局部對(duì)象自動(dòng)釋放能力。程序中如果在try塊中定義了類對(duì)象,當(dāng)出現(xiàn)異常時(shí),從try塊開始到拋出異常之間構(gòu)造的所有對(duì)象進(jìn)行析構(gòu),析構(gòu)的順序與構(gòu)造的順序相反。5. 請(qǐng)簡要寫一個(gè)c+異常處理的例子,來說明try, catch和 throw之間的關(guān)系?答: try int m,n; cin>>m>>n; if(n = 0) throw n; cout<<”m/n = ”<<m/n<<endl;catch(int) cout<<”Error of dividing

5、 zero”<<endl; 上面是一個(gè)處理除零異常的例子,必須使用try語句來捕獲異常。在執(zhí)行try后的復(fù)合語句中或在一個(gè)函數(shù)調(diào)用中出現(xiàn)異常,由throw拋出異常,用catch語句來捕獲異常和處理異常,catch語句總是跟在一個(gè)try程序塊后面處理try程序塊產(chǎn)生的異常。三、編程題1. 設(shè)計(jì)一個(gè)異常Ex抽象類,在此基礎(chǔ)上派生出一個(gè)OutOfIndex類來響應(yīng)下標(biāo)越界,一個(gè)RangeError類來響應(yīng)輸入的數(shù)不在指定的范圍內(nèi)。答:#include <iostream>#include <string>using namespace std;class EXpu

6、blic:virtual void printError()cout<<"super.printError()"<<endl;class OutOfIndex:public EXint i;public:void printError()cout<<"Error!Out Of Index at "<<i<<endl;void setI(int i)this->i=i;class RangeError:public EXpublic:void printError()cout<<

7、"Error!Out Of Range!"<<endl;class Arrayint a100;public:int& operator(int i)if(i>=0&&i<100) return ai;elseOutOfIndex o;o.setI(i);throw &o;void f1()cout<<"Please input a integer number between 1 and 1000:"<<endl;int n;cin>>n;if (n>10

8、00|n<1)throw &RangeError();void f2()int index;cout<<"Please input a index of the array."<<endl;cin>>index;Array a;cout<<"a"<<index<<" = "<<aindex<<endl;int main()tryf1();f2();catch (EX* e)e->printError();return 0

9、;2. 定義一個(gè)異常類Ex,有成員函數(shù)reason(),用來顯示異常的類型。定義一個(gè)函數(shù)fun1()觸發(fā)異常,在主函數(shù)try模塊中調(diào)用fun1(),在catch模塊中捕獲異常,觀察程序執(zhí)行流程。答:#include <iostream>#include <string>using namespace std;class EXpublic:virtual void reason()cout<<"The reason of the exception is EX."<<endl;void f1()throw &EX();i

10、nt main()tryf1();catch (EX* e)e->reason();return 0;3. 定義一個(gè)Array類,重載數(shù)組下標(biāo)操作符,通過拋出異常使之具有判斷與處理下標(biāo)越界功能。答:#include <iostream>#include <string>using namespace std;class EXpublic:virtual void reason()cout<<"The reason of the exception is out of index."<<endl;class Arrayin

11、t *p;int size;public:Array(int sz)size = sz;p=new intsz;int& operator(int i)if (i>=0&&i<size)return pi;elsethrow &EX();int main()tryArray a(50);a1=10;cout<<"a1 = "<<a1<<endl;a50=100;catch (EX* e)e->reason();return 0;4. 編寫一個(gè)程序,求一元二次方程式ax2+bx+c=0的實(shí)根

12、,如果方程沒有實(shí)根,則輸出有關(guān)警告信息。答:#include <iostream>#include <string>#include <cmath>using namespace std;class EXpublic:virtual void reason()cout<<"There is no solid solution."<<endl;/方程ax2+bx+c=0int main()trydouble a,b,c;cin>>a>>b>>c;double delta = b*b-4*a*c;if (delta<0)throw &EX();delta = sqrt(delta);double x

溫馨提示

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