九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

《C++程序設(shè)計》實驗指導(dǎo)書

上傳人:仙*** 文檔編號:28009223 上傳時間:2021-08-22 格式:DOC 頁數(shù):45 大?。?05.50KB
收藏 版權(quán)申訴 舉報 下載
《C++程序設(shè)計》實驗指導(dǎo)書_第1頁
第1頁 / 共45頁
《C++程序設(shè)計》實驗指導(dǎo)書_第2頁
第2頁 / 共45頁
《C++程序設(shè)計》實驗指導(dǎo)書_第3頁
第3頁 / 共45頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《C++程序設(shè)計》實驗指導(dǎo)書》由會員分享,可在線閱讀,更多相關(guān)《《C++程序設(shè)計》實驗指導(dǎo)書(45頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、C程序設(shè)計實驗指導(dǎo)書董曉梅 張?zhí)斐?編寫東北大學(xué) 信息科學(xué)與工程學(xué)院計算機軟件與理論研究所2006年3月前 言本書是本科生課程C+語言程序設(shè)計的配套實驗指導(dǎo)書。C+語言程序設(shè)計是一門實踐性很強的課程,學(xué)習(xí)C+語言程序設(shè)計最重要的環(huán)節(jié)就是實踐,而不可能僅僅通過閱讀教科書或聽課來掌握。書中內(nèi)容包括13個精心設(shè)計的實驗,與C+語言程序設(shè)計課程的各章內(nèi)容配合,每一個實驗都包括“實驗?zāi)康摹薄ⅰ皩嶒炓蟆?、“實驗?nèi)容及實驗步驟”和“思考題”幾部分,使學(xué)生在實踐中達到對教科書和課堂內(nèi)容的深入理解和熟練掌握。本書中的實驗內(nèi)容不僅可以指導(dǎo)學(xué)生上機練習(xí),也可以由教師作為例題在課堂上演示,以豐富教學(xué)內(nèi)容。目錄前 言

2、1Microsoft Visual C+ 6.0開發(fā)環(huán)境簡介1Exercise 1 熟悉語言及程序開發(fā)環(huán)境3Exercise 2 C+簡單程序設(shè)計10Exercise 3 函數(shù)的應(yīng)用15Exercise 4 類與對象18Exercise 5 作用域與多文件程序21Exercise 6 數(shù)組、指針與字符串24Exercise 7 繼承與派生27Exercise 8 多態(tài)性29Exercise 9 工資管理程序設(shè)計30Exercise 10 模板31Exercise 11 流類庫與輸入輸出32Exercise 12 異常處理35Exercise 13 Windows編程基礎(chǔ)36Microsoft

3、Visual C+ 6.0開發(fā)環(huán)境簡介Developer Studio是VisualC6.0的核心部分,是Microsoft Windows環(huán)境下的一個集成開發(fā)環(huán)境,集成了開發(fā)C或 C應(yīng)用程序所需要的所有工具和C編譯器。1主窗口包括標(biāo)題欄、菜單欄、工具欄、項目工作區(qū)窗口、文檔窗口、輸出窗口和狀態(tài)欄,如圖1所示。圖1 Visual C6.0集成開發(fā)平臺的主窗口2菜單欄包括以下菜單項:File, Edit, View, Insert, Project, Build, Tools, Windows和 Help。3工具欄默認(rèn)時顯示三個工具欄:Standard, Build和WizardBar。4采用項

4、目開發(fā)應(yīng)用程序采用項目開發(fā)一個應(yīng)用程序的一般步驟如下:(1) 創(chuàng)建一個項目,系統(tǒng)自動創(chuàng)建了應(yīng)用程序所需的基本文件。(2) 采用工作區(qū)窗口建立項目中的類、文件和資源。(3) 將文件添加到項目中,或從項目中刪除文件。(4) 編輯項目中的源代碼和資源。(5) 連編項目。(6) 執(zhí)行應(yīng)用程序。Exercise 1 熟悉語言及程序開發(fā)環(huán)境1 實驗?zāi)康氖煜icrosoft Visual C 6.0集成開發(fā)環(huán)境,學(xué)習(xí)創(chuàng)建控制臺應(yīng)用程序項目、編輯源程序、編譯和調(diào)試程序。2 實驗要求(1)熟悉程序開發(fā)環(huán)境(2)編輯源程序(3)編譯并調(diào)試程序3 實驗內(nèi)容及實驗步驟31 熟悉Microsoft Visual St

5、udio 6.0 的開發(fā)環(huán)境(1) 啟動Visual C+6.0;(2) 用鼠標(biāo)左鍵分別單擊各主菜單項,觀察各下拉菜單的項目內(nèi)容;(3) 單擊“文件新建”,觀察彈出的對話框;(4) 分別單擊“新建”對話框的各選項卡,查看其中的內(nèi)容;(5) 單擊“結(jié)束”按鈕,關(guān)閉對話框;(6) 單擊“幫助幫助目錄”,熟悉幫助的內(nèi)容和使用方法。32 編輯并調(diào)試下面的程序321 在Visual C環(huán)境中編輯并調(diào)試下面的程序(1)啟動Visual C+6.0;(2)向AppWizard提供關(guān)于新項目的有關(guān)信息:(a)單擊“文件新建”,(b)在“新建”對話框中: 單擊“工程”選項卡; 在列表中選中“Win32 Cons

6、ole Application”; 在名為“工程”的文本框中輸入項目名“Time” 在“位置”文本框中設(shè)置項目的位置; 選擇“創(chuàng)建新工作區(qū)”選項; 確認(rèn)在“平臺”列表框中選中了“Win32”; 單擊“確定”按鈕。以上過程如圖1.1所示。(3)選擇項目類型:An empty project。(4)單擊“完成”按鈕。(5)在開發(fā)環(huán)境的主窗口中單擊“插入新建類”,類型為“Generic Class”,名字為“TimeType”,單擊“確定”。見圖1.2。圖1.1向AppWizard提供關(guān)于新項目的有關(guān)信息圖1.2 新建類(6)在左側(cè)的“Class View”中選擇類“TimeType”,單擊右鍵,選

7、擇“添加成員變量”,在彈出的對話框中填入變量hrs的類型和名稱,見圖1.3和圖1.4;重復(fù)此過程,加入成員變量mins和secs。圖1.3 選擇類“TimeType”,單擊右鍵圖1.4 添加成員變量(7)選擇類“TimeType”,單擊右鍵,選擇“添加成員函數(shù)”,在彈出的對話框中填入函數(shù)Set的原型說明,并在代碼編輯窗口中填入函數(shù)體的代碼,見圖1.5和圖1.6;重復(fù)此過程,加入所有的成員函數(shù)。圖1.5添加成員函數(shù)圖1.6 添加代碼(8)保存文件。(9)單擊“文件新建”,在“新建”對話框的“文件”選項卡中選擇“C源文件”,名字為“diary”。(10)在代碼編輯窗口中寫入代碼,保存文件。(11)

8、編譯和執(zhí)行程序:單擊“編譯構(gòu)件Time.exe”,或者按F7鍵,生成可執(zhí)行文件Time.exe;單擊“編譯執(zhí)行Time.exe”,或者同時按下“Ctrl”和“F5”鍵,執(zhí)行程序,查看運行結(jié)果。322 源程序:(1)文件TimeType.h:/“TimeType.h”class TimeTypepublic:void Set(int hours, int minutes, int seconds);void Increment();void Write() const;bool Equal(TimeType otherTime) const;bool LessThan(TimeType othe

9、rTime) const;private:int hrs;int mins;int secs;(2)文件TimeType.cpp:/“TimeType.cpp”#include “timetype.h”#include void TimeType:Set(int hours, int minutes, int seconds)hrs = hours;mins = minutes;secs = seconds;void TimeType:Increment()secs+;if (secs59) secs=0;mins+;if (mins59) mins=0;hrs+;if (hrs23) hrs

10、=0;void TimeType:Write() constif (hrs10) cout 0;cout hrs :;if (mins10) cout 0;cout mins :;if (secs10) cout 0;cout secs;bool TimeType:Equal(TimeType otherTime) constreturn (hrs=otherTime.hrs & mins=otherTime.mins & secs=otherTime.secs);bool TimeType:LessThan(TimeType otherTime) constreturn (hrsotherT

11、ime.hrs|hrs=otherTime.hrs & minsotherTime.mins|hrs=otherTime.hrs & mins=otherTime.mins & secsotherTime.secs);(3)文件Diary.cpp:/Diary.cpp#include #include TimeType.hint main()TimeType time;int hours;int minutes;int seconds;coutEnter a time (use hours hoursminutesseconds;while(hours=0)time.Set(hours, mi

12、nutes, seconds);time.Increment();coutIncremented time is ;time.Write();coutendl;coutEnter a time (use hours hoursminutesseconds;return 0;4 思考題(1) 如何啟動Microsoft Visual Studio 6.0?(2) 如何用AppWizard新建一個控制臺項目?(3) 如何新建一個類,并添加類的成員?(4) 如何編譯和連接一個程序?(5) 如何執(zhí)行一個程序?(6) 如何使用幫助?Exercise 2 C+簡單程序設(shè)計1 實驗?zāi)康模?)學(xué)會編寫簡單的C

13、+程序。(2)復(fù)習(xí)基本數(shù)據(jù)類型變量和常量的應(yīng)用。(3)復(fù)習(xí)運算符與表達式的應(yīng)用。(4)復(fù)習(xí)結(jié)構(gòu)化程序設(shè)計基本控制結(jié)構(gòu)的運用。(5)復(fù)習(xí)自定義數(shù)據(jù)類型的應(yīng)用。(6)練習(xí)使用簡單的輸入輸出。(7)觀察頭文件的作用。(8)學(xué)會使用Visual C+6.0開發(fā)環(huán)境中的debug調(diào)試功能:單步執(zhí)行、設(shè)置斷點、觀察變量值。2 實驗要求(1)輸入并運行教材C+語言程序設(shè)計中的例題2-7,即:用do-while語句編程,求自然數(shù)110之和。程序正確運行之后,去掉源程序中#include語句,重新編譯,觀察會有什么問題。(2)將do-while語句用for語句代替,完成相同的功能。(3)編程計算圖形的面積。程序

14、可計算圓形、長方形、正方形的面積,運行時先提示用戶選擇圖形的類型,然后,對圓形要求用戶輸入半徑值,對長方形要求用戶輸入長和寬的值,對正方形要求用戶輸入邊長的值,計算出面積的值后將其顯示出來。(4)使用debug調(diào)試功能觀察任務(wù)3程序運行中變量值的變化情況。(5)定義一個表示時間的結(jié)構(gòu)體,可以精確表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。3 實驗內(nèi)容及實驗步驟(1) 建立一個控制臺應(yīng)用程序項目lab2_1,向其中添加一個C+源文件lab2_1.cpp(方法見實驗1),輸入教材C+語言程序設(shè)計中例2-7的代碼,檢查一下確認(rèn)沒有輸入錯誤,選擇菜單命令

15、Build | Build 1ab2_1.exe編譯源程序,再選擇Build | Execute運行程序,觀察輸出是否與教材中的答案一致。(2)程序正確運行之后,在源程序第一行“#include”前面加注釋標(biāo)記“/”使之成為注釋行,重新編譯,查看此時編譯器會輸出什么樣的提示。現(xiàn)在,刪除注釋標(biāo)記,將程序恢復(fù)正確。(3)另建立一個項目lab2_2,包含一個C+源程序1ab2_2.cpp,將do-while語句用for語句代替,完成與實驗任務(wù)1相同的功能。(4)建立項目lab2_3,計算圖形的面積。圓形的面積計算公式為S=PI*r*r,長方形的面積計算公式為S=a*b,正方形的面積計算公式為S=a*

16、a。程序中定義一個整型變量iType表示圖形的類型,用cout語句輸出提示信息讓用戶選擇圖形的類型,用cin讀入iType的值,然后,使用switch語句判斷圖形的類型,分別提示用戶輸入需要的參數(shù)值,計算出面積的值后用cout語句顯示出來。最后,編譯運行程序。(5)學(xué)習(xí)簡單的debug調(diào)試功能,參考程序如下:lab2_3.cpp#includeconst float PI=3.1416;void main() int iType; float radius,a,b,area; COUtiType; switch(iType) case 1: coutradius; area=PI*radius

17、*radius ; cout”面積為:”areaendl; break; case 2: couta; coutb; area=a*b; cout”面積為:”areaendl; break; case 3: couta; area=a*a; cout”面積為:”areaendl; break; default: cout不是合法的輸入值!2;fib(1)=fib(2)=1。使用if語句判斷函數(shù)的出口,在程序中用cout語句輸出提示信息。程序名:lab3_5.cpp(5)使用debug中的Step Into追蹤到函數(shù)內(nèi)部,觀察函數(shù)的調(diào)用過程,參考程序如下: /lab3_5 #include in

18、t fib(int n); int main() int n,answer; coutn; cout”nn”; answer=fib(n); coutanswer”is the”n”th Fibonacci numbern”; return 0;int fib(int n)cout”Processing fib(“n”)”;if(n3)cout”Reutrn 1!n”;return(1);else cout”Call fib(“n-2”)and fib(“n-1”).n”; return(fib(n-2)+fib(n-1);(6)調(diào)試操作步驟如下:1)選擇菜單命令Build | Start D

19、ebug | Step in,或按下快捷鍵F11,系統(tǒng)進入單步執(zhí)行狀態(tài),程序開始運行,并出現(xiàn)一個DOS窗口,此時Visual Studio中光標(biāo)停在main()函數(shù)的入口處。2)把光標(biāo)移到語句answer=fib(n)前,從Debug菜單或Debug工具欄中單擊Run to Cursor,在程序運行的DOS窗口中按提示輸入數(shù)字10,這時回到Visual Studio中,光標(biāo)停在第11行,觀察一下n的值(觀察方法見實驗2)。3)從Debug菜單或Debug工具欄中單擊Step Into,程序進入fib函數(shù),觀察一下n的值,把光標(biāo)移到語句return(fib(n-2)+fib(n-1)前,從Deb

20、ug菜單或Debug工具欄中單擊Run to Cursor,再單擊Step Into,程序遞歸調(diào)用fib函數(shù),又進入fib函數(shù),觀察一下n的值。4)繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對函數(shù)調(diào)用和遞歸調(diào)用的理解。5)再試試Debug菜單欄中的菜單項,熟悉Debug的各種方法。4 思考題(1) 如何利用系統(tǒng)函數(shù)來實現(xiàn)一些常用的功能?(2) 如何查找系統(tǒng)函數(shù)?(3) 如何實現(xiàn)函數(shù)重載?(4) 如何編寫一個遞歸程序?Exercise 4 類與對象1 實驗?zāi)康模?)掌握類的定義和使用。(2)掌握類的定義和對象的聲明。(3)復(fù)習(xí)具有不同訪問屬性的成員的訪問方式。(4)觀察構(gòu)造函數(shù)和析構(gòu)

21、函數(shù)的執(zhí)行過程。(5)學(xué)習(xí)類的聚集使用方法。(6)使用VC+的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2 實驗要求(1)定義一個CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,定義為enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7,frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。(2)定義一個簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、(內(nèi)存)

22、、光驅(qū)(cdrom)等等,有兩個公有成員函數(shù)run、stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一個對象,定義并實現(xiàn)這個類。(3)(選做)設(shè)計一個用于人事管理的People(人員)類??紤]到通用性這里只抽象出所有類型人員都具有的屬性:number(編號)、sex(性別)、birthday(出生日期)、id(身份證號)等等。其中“出生日期”定義為一個“日期”類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、聚集。3 實驗內(nèi)容及實驗步驟(1)首先定義枚舉類型CPU_Rank, 例如enum

23、CPU_RankP1=1, P2, P3, P4, P5, P6, P7,再定義CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,定義成員函數(shù)run、stop,用來輸出提示信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提示信息。在主程序中定義一個CPU的對象,調(diào)用其成員函數(shù),觀察類對象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_1.cpp。(2)使用debug調(diào)試功能觀察程序lab4_1.cpp的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。參考程序如下:/lab4_1.cpp#includeenum CPU_Rank P1=

24、1,P2,P3,P4,P5,P6,P7;class CPUprivate:CPU_Rank rank;int frequency;float voltage;public:CPU(CPU_Rank r,int f,float v)rank=r;frequency=f;voltage=v;cout”構(gòu)造了一個CPU!”endl;CPU() cout”析構(gòu)了一個CPU!”endl; CPU_Rank GetRank() const return rank; int GetFrequency() const return rank; float GetVoltage() const return v

25、oltage; void SetRank(CPU_Rank r) rank=r; void SetFrequency(int f) frequency=f; void Setvoltage(float v) voltage=v; void Run() cout”CPU 開始運行!”endl; void Stop() cout”CPU 停止運行!”endl; ;void main()CPU a(P6,300,2.8);a.Run();a.Stop();(3)調(diào)試操作步驟如下:1)單擊Build | Start Debug | Step Into命令,或按下快捷鍵F11,系統(tǒng)進入單步執(zhí)行狀態(tài),程序

26、開始運行,一個DOS窗口出現(xiàn),此時Visual Studio 中光標(biāo)停在main()函數(shù)的入口處;2)從Debug菜單或Debug工具欄中單擊Step Over,此時,光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對象的初始化;3)單擊Step Into,程序準(zhǔn)備執(zhí)行CPU類的構(gòu)造函數(shù);4)連續(xù)單擊Step Over,觀察構(gòu)造函數(shù);5)此時程序準(zhǔn)備執(zhí)行CPU對象的run()函數(shù),單擊Step Into,程序進入run()成員函數(shù),連續(xù)單擊Step Over,直到回到main()函數(shù)。6)繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認(rèn)識。7)再試試Debug

27、菜單欄中別的菜單項,熟悉Debug的各種方法。(4)首先定義CPU類(可使用第二題中的CPU類)、RAM類、CDROM類。再定義Computer類;定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中定義一個Computer的對象,調(diào)用其成員函數(shù),觀察類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_2.cpp.(5)使用debug調(diào)試功能觀察lab4_2.cpp程序的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構(gòu)造與析構(gòu)順序。4 思考題(1) 如何定義一個類?(2) 如何

28、定義類的構(gòu)造函數(shù)和析構(gòu)函數(shù)?(3) 類的各成員函數(shù)的執(zhí)行順序是怎樣的?(4) 類聚集時對象的構(gòu)造順序是怎樣的?Exercise 5 作用域與多文件程序1 實驗?zāi)康模?)掌握自動變量與靜態(tài)變量的概念。(2)掌握函數(shù)原型、塊、函數(shù)和文件作用域的概念。(3)掌握全局變量與局部變量的概念(4)掌握VC6.0下多文件程序的上機調(diào)試方法2 實驗要求(1)調(diào)試程序段1,弄清自動變量與靜態(tài)變量的區(qū)別。(2)調(diào)試程序段2,理解塊作用域的概念。(3)調(diào)試程序段3,理解全局變量和局部變量的概念。(4)使用多文件結(jié)構(gòu)編寫并調(diào)試程序,計算和的值。3 實驗內(nèi)容及實驗步驟(1)閱讀下列程序,寫出執(zhí)行結(jié)果,然后上機調(diào)試程序,

29、比較結(jié)果的正確性,弄清自動變量與靜態(tài)變量的區(qū)別。#includeint func(int);void main() coutfunc(1)endl; coutfunc(1)endl;int func(int c) int a=0; static int b=1; a+; b+;return a+b+c;(2)分析下列程序,寫出執(zhí)行結(jié)果,然后上機調(diào)試程序,比較結(jié)果是否正確,從而理解塊作用域的概念。#include void main() int a=1,b=2,c=3; cout”a=”at”b=”bt”c=”ctendl; int b=4,c=5; cout”a=”at”b=”bt”c=”ct

30、endl; a=b; int c=b; cout”a=”at”b=”bt”c=”ctendl; cout”a=”at”b=”bt”c=”ctendl; cout”a=”at”b=”bt”c=”ctendl; (3)寫出下列程序的執(zhí)行結(jié)果,然后上機調(diào)試程序,比較結(jié)果是否正確,從而理解全局變量和局部變量的概念。 #include int a=1,b=2; int f1(int x) int i,b=3; i=(a*b)/x; cout”i=”iendl; return i; int c=3; int f2(int x,int y) int u,v,a=5; u=x+y; v=(b-a)/c; co

31、ut”u=”uendl; cout”v=”vendl; return u-v; void main() coutf1(1)+a-bendl; coutf2(2,3)*cendl; (4)使用多文件結(jié)構(gòu)編寫并調(diào)試程序,計算和的值。要求: 把求階乘的函數(shù)存放在文件file1.cpp中;把求的函數(shù)存放在文件file2.cpp中;求的函數(shù)存放在文件file3.cpp中;函數(shù)原型在頭文件headf.h中聲明;主函數(shù)存放在文件mainf.cpp中。上機調(diào)試程序,掌握多文件程序的調(diào)試方法。4 思考題(1)總結(jié)全局變量、局部變量、靜態(tài)局部變量等的概念和使用方法。(2)總結(jié)多文件程序的調(diào)試方法。(3)多文件程序

32、調(diào)試和單文件調(diào)試有哪一些相同點和不同點?Exercise 6 數(shù)組、指針與字符串1 實驗?zāi)康模?)學(xué)習(xí)使用數(shù)組。(2)學(xué)習(xí)字符串?dāng)?shù)據(jù)的組織和處理。(3)學(xué)習(xí)標(biāo)準(zhǔn)C+庫的使用。(4)掌握指針的使用方法。(5)練習(xí)通過Debug觀察指針的內(nèi)容及其所指的對象的內(nèi)容(6)聯(lián)系通過動態(tài)內(nèi)存分配實現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用。(7)分別使用字符數(shù)組和標(biāo)準(zhǔn)C+庫練習(xí)處理字符串的方法。2 實驗要求(1)編寫并測試3*3矩陣轉(zhuǎn)置函數(shù),使用數(shù)組保存3*3矩陣。(2)使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組來重新完成上題,使用指針實現(xiàn)函數(shù)的功能。(3)編程實現(xiàn)兩字符串的連接。要求使用字符數(shù)組保存字符串,不要使用系統(tǒng)函數(shù)。

33、(4)使用string類定義字符串對象,重新實現(xiàn)上一小題。(5)定義一個Employee類,其中包括姓名、街道地址、城市和郵編等屬性,以及change_name()和display()等函數(shù)。Display()顯示姓名、街道地址、城市和郵編等屬性,change_name()改變對象的姓名屬性。實現(xiàn)并測試這個類。(6)定義包含5個元素的對象數(shù)組,每個元素都是Employee類型的對象。(7)(選做)修改實驗4中的選做實驗中的people(人員)類。具有的屬性如下:姓名char name11、編號char number7、性別char sex3、生日birthday、身份證號char id16。其

34、中“出生日期”定義為一個“日期”類內(nèi)嵌對象。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、聚集。在測試程序中定義people類的對象數(shù)組,錄入數(shù)據(jù)并顯示。3實驗內(nèi)容及實驗步驟(1) 編寫矩陣轉(zhuǎn)置函數(shù),輸入?yún)?shù)為3*3整形數(shù)組,使用循環(huán)語句實現(xiàn)矩陣元素的行列對調(diào),注意在循環(huán)語句中究竟需要對哪些元素進行操作,編寫main()函數(shù)實現(xiàn)輸入、輸出。程序名:lab6_1.cpp。(2) 改寫矩陣轉(zhuǎn)置函數(shù),參數(shù)為整型指針,使用指針對數(shù)組元素進行操作,在main()函數(shù)中使用new操作符分配內(nèi)存生成動態(tài)數(shù)組。通過Debug觀察指針的內(nèi)容及其所指的對象中的內(nèi)容

35、。程序名:lab6_2.cpp。(3) 編程實現(xiàn)兩字符串的連接。定義字符數(shù)組保存字符串,在程序中提示用戶輸入兩個字符串,實現(xiàn)兩個字符串的連接,最后用cout語句顯示輸出。程序名:lab6_3.cpp。用cin實現(xiàn)輸入,注意,字符串的結(jié)束標(biāo)志是ASCII碼0,使用循環(huán)語句進行字符串見的字符拷貝。(4) 使用string類定義字符串對象,編程實現(xiàn)兩字符串的連接。在string類中已重載了運算符“+=”實現(xiàn)字符串的連接,可以使用這個功能。程序名:lab6_4.cpp。(5) 在employee.h文件中定義Employee類。Employee類具有姓名、街道地址、城市和郵編等私有數(shù)據(jù)成員,都可以用字

36、符型數(shù)組來表示,在成員函數(shù)中,構(gòu)造函數(shù)用來初始化所有成員數(shù)組,對字符數(shù)組的賦值可以使用字符串拷貝函數(shù)strcpy(char *,char * name);display()中使用cout顯示姓名、街道地址、城市和郵編等屬性,change_name()改變類中表示姓名屬性的字符數(shù)組類型的數(shù)據(jù)成員。在主程序中定義這個類的對象并對起進行操作。程序名:lab6_5.cpp。(6) 使用上一小題中定義的Employee類定義對象數(shù)組emp5,使用循環(huán)語句把數(shù)據(jù)顯示出來。程序名:lab6_6.cpp。(7) (選作)調(diào)試下面的程序,看看運行結(jié)果,想一想為什么會出錯。源程序如下:# include clas

37、s String private: char *contents; public: string()*contents = 0; int get_length(); char *get_contents()return contents; void set_contents(int in_length, char *in_contents); void set_contents(char *in_contents);int String:get_length() int i=0; char *p=contents; while(*p+!=0) i+; return i;void String:

38、set_contents(int in_length, char *in_contents) in_contentsin_length=0; contents=in_contents;void String:set_contents(char *in_contents)contents=in_contents;void main() String x,y; x.set_contents(Hello, world!); y.set_contents(34,This is an object_oriented program); char *p=x.get_contents(); char *q=

39、y.get_contents(); coutx=py=qn; int i=x.get_length(); coutThe length of string x isi;4 思考題(1) 如何存儲和處理字符串?(2) 頭文件和頭文件有何區(qū)別?(3) 有幾種方法來表示和處理數(shù)組元素?Exercise 7 繼承與派生1 實驗?zāi)康模?)學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類。(2)熟悉不同繼承方式下對基類成員的訪問控制。(3)學(xué)習(xí)利用虛基類解決二義性問題。2 實驗要求(1)定義一個基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,

40、看看會有什么問題,把age 改為公有成員變量,還回有問題嗎?編程試之。(2)定義一個基類BaseClass,有整型變量Number,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(3)定義一個車(vehicle)基類,具有Maxspeed、Weight等成員,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcar)類有座位數(shù)(SeatNun)等屬性。從bicycle和motorcar派生出摩托車(motorbicycle)類,在繼承過程中,注意把veh

41、icle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會有什么問題?編程試之。3 實驗內(nèi)容及實驗步驟(1)編寫程序定義基類Animal,成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(int n)中直接對age賦值時,會出現(xiàn)類似以下的錯誤提示:error C2248 : age : cannot access private member declared in class Animalerror C2248 : age : cannot access private member declared in class Animal把age改為公有成員變量后重新編譯就

42、可以了。程序名:lab7_1.cpp。(2)編寫程序定義一個基類BaseClass,構(gòu)造其派生類DerivedClass,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中用cout輸出提示信息,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。程序名:lab7_2.cpp。(3)用debug功能跟蹤程序lab7_2的執(zhí)行過程,觀察基類和派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(4)編寫程序定義一個車(vehicle)基類,由此派生出自行車(bicycle)類、汽車(motorcar)類,注意把vehicle派生為虛基類。再從bicycle和motorcar派生出摩托車(motorcycle)類,在main()函數(shù)中測試這個類。程序名:l

43、ab7_3.cpp.編譯成功后,把vehicle設(shè)置為非虛基類,再編譯一次,此時系統(tǒng)報錯,無法編譯成功。這是因為若不把vehicle設(shè)置為虛基類,會出現(xiàn)二義性錯誤,程序不能成功編譯。4 思考題(1) 如何在已有的類的基礎(chǔ)上設(shè)計新的類?(2) 基類和派生類對象的構(gòu)造順序是怎樣的?(3) 如何利用虛基類解決二義性問題?Exercise 8 多態(tài)性1 實驗?zāi)康模?)掌握運算符重載的方法。(2)學(xué)習(xí)使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性。2. 實驗要求(1)定義Point類,有坐標(biāo)_x,_y兩個成員變量;對Point類重載“”(自增)、“”(自減)運算符,實現(xiàn)對坐標(biāo)值的改變。(2)定義一個車(vehiele)基類,

44、有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。觀察虛函數(shù)的作用。(3) (選做)對實驗4中的People類重載“”運算符和“”運算符,“”運算符判斷兩個people類對象的id屬性是否相等;“”運算符實現(xiàn)People類對象的賦值操作。3. 實驗內(nèi)容及實驗步驟(1) 編寫程序定義Point類,在類中定義整型的私有成員變量_x_y,定義成員函數(shù)Point& operator+();Point operator+(int);以實現(xiàn)對Point

45、類重載“+”(自增)運算符,定義成員函數(shù)Point operator();Point operator(int);以實現(xiàn)對Point類重載“”(自減)運算符,實現(xiàn)對坐標(biāo)值的改變。程序名:1ab8_1cpp。(2) 編寫程序定義一個車(vehicle)基類,有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。在main()函數(shù)中定義vehicle、bicycle、motorcar、motorcycle的對象,調(diào)用其Run()、Stop()函數(shù),

46、觀察其執(zhí)行情況。再分別用vehicle類型的指針來調(diào)用這幾個對象的成員函數(shù),看看能否成功;把Run、Stop定義為虛函數(shù),再試試看。程序名:lab8_2cpp。4 思考題(1) 如何將一個運算符重載為類的成員函數(shù)?(2) 如何將一個運算符重載為類的友元函數(shù)?(3) 如何實現(xiàn)運行時刻的多態(tài)?Exercise 9 工資管理程序設(shè)計1 實驗?zāi)康木C合運用前面學(xué)過的類定義和類的繼承、多態(tài)機制,利用面向?qū)ο蟪绦蛟O(shè)計方法,設(shè)計一個完整的程序。2. 實驗要求設(shè)計一個簡單的計算雇員工資的程序。假設(shè)有3類雇員工人、銷售員和管理人員。工人的工資為每小時工資額乘當(dāng)月工作時數(shù)再加上工齡工資;銷售員工資為每小時工資額乘當(dāng)

47、月工作時數(shù)加上銷售額提成再加上工齡工資,其中銷售額提成等于該銷售員當(dāng)月售出商品金額的1;管理人員工資為基本工資再加上工齡工資。工齡工資就是雇員在該公司工作的工齡每增加1年,月工資就增加35元。用C語言寫出完整的程序。3. 實驗內(nèi)容及實驗步驟(1)建立一個控制臺項目lab9。(2)建立雇員基類(Employee),成員數(shù)據(jù)為:工齡;成員函數(shù)包括構(gòu)造函數(shù)、析構(gòu)函數(shù)和純虛函數(shù)salary(),用于計算工資。(3)分別建立工人(Worker)類、銷售員(Salesman)類和管理人員(Manager)類,包括相應(yīng)的成員數(shù)據(jù)和成員函數(shù),注意,要重新定義虛函數(shù)salary()。(4)編寫主函數(shù),分別創(chuàng)建各

48、類雇員對象,計算相應(yīng)的工資。程序名:lab9.cpp。4 思考題(1) 如何利用類的繼承與派生機制來設(shè)計具有通用性的類?(2) 如何設(shè)計抽象類?(3) 如何利用相同的函數(shù)實現(xiàn)不同的功能?Exercise 10 模板1 實驗?zāi)康木毩?xí)函數(shù)模板和類模板的定義與使用。2 實驗要求(1)編寫函數(shù)模板,分別實現(xiàn)求兩個整數(shù)、兩個雙精度數(shù)、三個整數(shù)、三個雙精度數(shù)的最大值。(2)運行教材中例92的程序,觀察類模板的定義和使用。3 實驗內(nèi)容及實驗步驟(1)建立一個控制臺項目lab10_1,在其中編寫兩個同名的函數(shù)模板Max1,其參數(shù)個數(shù)不同,分別實現(xiàn)求兩個數(shù)、三個數(shù)的最大值。編寫main()函數(shù),分別用兩個整數(shù)、

49、兩個雙精度數(shù)、三個整數(shù)、三個雙精度數(shù)來測試,程序名:lab10_1.cpp。(2)建立一個項目lab10_2,向其中輸入教材中例92的程序,編譯、鏈接并運行程序,觀察輸出結(jié)果。程序名:lab10_2.cpp。4 思考題(1) 函數(shù)模板有什么作用?(2) 如何定義一個函數(shù)模板?(3) 類模板有什么作用?(4) 如何定義和使用類模板?Exercise 11 流類庫與輸入輸出1 實驗?zāi)康模?)熟悉流類庫中常用的類及其成員函數(shù)的用法。(2)學(xué)習(xí)標(biāo)準(zhǔn)輸入輸出及格式控制。(3)學(xué)習(xí)對文件的應(yīng)用方法(二進制文件、文本文件)。2 實驗要求(1)觀察以下程序的輸出,注意對輸出格式的控制方法:/lab11_1cp

50、p#include using namespace std;#define D(a) T#aendl;aofstream T(output.out);void main()D(int i=53;)D(float f=4700113.141593;)char *s=Is there any more?;D(T.setf(ios:unitbuf);)D(T.setf(ios:showbase);)D(T.setf(ios:uppercase);)D(T.setf(ios:showpos);)D(Tiendl;)D(T.setf(ios:hex,ios:basefield);)D(Tiendl;)D

51、(T.unsetf(ios:uppercase);)D(T.setf(ios:oct,ios:basefield);)D(Tiendl;)D(T.unsetf(ios:showbase);)D(T.setf(ios:dec,ios:basefield);)D(T.setf(ios:left,ios:adjustfield);)D(T.fill (0);)D(T fill char:T.fill()endl;)D(T.width(8);)Tiendl;D(T.setf(ios:right, ios:adjustfield);)D(T.width (8);)Tiendl;D(T.setf(ios:internal, ios:adjustfield);)D(T.width (8);

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!