課程主頁在:http://blog.csdn.net/sxhelijian/article/details/11890759,由課程主頁,可以看到完整教學方案,所有參考解答
有網友在我的博客中,在2011級的頁面上留言問:“老師,為什麼有的學生寫著寫著就不更新了呢?”這是我常想起來的痛。我沒有能夠讓我的弟子們開成習慣,這是要我們大家一起解決的問題。
有些同學近日的低迷,讀讀《大學、軟件外包》可能會有啟發。生命的流程走上了這條分支,就在這條分支上前行。
在BB平台恢復正常之前,上機材料全從老師CSDN博客的課程主頁下載。指導書中已經提供了源代碼的,從博客中直接復制,以節約時間。
【項目0-掌握有對象的程序結構】不要求寫報告
按照封裝與信息隱藏的原則,除非特別需要,類中的數據成員需要設置為私有。由此帶來的問題是,在類外如何訪問這些私有成員?下面4段程序概括了常用的方法。請仔細閱讀下面的程序,在閱讀過程中,畫出對象、變量在內存中的表示圖,寫出這些程序的運行結果(包括變量的變化過程及程序的最終輸出),達到徹底理解這些機制的目標。
(1)通過公共函數為私有成員賦值
#includeusing namespace std; class Test { private: int x, y; public: void setX(int a) { x=a; } void setY(int b) { y=b; } void printXY(void) { cout<<"x="<
(2)利用指針訪問私有數據成員#includeusing namespace std; class Test { private: int x,y; public: void setX(int a) { x=a; } void setY(int b) { y=b; } void getXY(int *px, int *py) { *px=x; //提取x,y值 *py=y; } }; int main() { Test p1; p1.setX(3); p1.setY(5); int a,b; p1.getXY(&a,&b); //將 a=x, b=y cout<
(3)利用函數訪問私有數據成員#includeusing namespace std; class Test { private: int x,y; public: void setX(int a) { x=a; } void setY(int b) { y=b; } int getX(void) { return x; //返回x值 } int getY(void) { return y; //返回y值 } }; int main() { Test p1; p1.setX(3); p1.setY(5); int a,b; a=p1.getX( ); b=p1.getY(); cout<
(4)利用引用訪問私有數據成員#includeusing namespace std; class Test { private: int x,y; public: void setX(int a) { x=a; } void setY(int b) { y=b; } void getXY(int &px, int &py) //引用 { px=x; //提取x,y值 py=y; } }; int main() { Test p1,p2; p1.setX(3); p1.setY(5); int a,b; p1.getXY(a, b); //將 a=x, b=y cout<
【項目1 - 三角形類1】下面設計一個三角形類,請給出各成員函數的定義#include#include using namespace std; class Triangle { public: void setABC(double x, double y, double z);//置三邊的值,注意要能成三角形 void getABC(double *x, double *y, double *z);//取三邊的值 double perimeter(void);//計算三角形的周長 double area(void);//計算並返回三角形的面積 private: double a,b,c; //三邊為私有成員數據 }; int main() { Triangle tri1; //定義三角形類的一個實例(對象) tri1.setABC(4,5,6); //為三邊置初值 double x,y,z; tri1.getABC (&x,&y,&z); //將三邊的值為x,y,z賦值 cout<<"三條邊為:"<
【項目2 - 三角形類2】程序功能同項目1,main()函數如下,請重新定義Triangle類,其中邏輯特別簡單的set和get成員函數,要處理為內置成員函數,直接在類內定義。int main() { Triangle tri1; //定義三角形類的一個實例(對象) double x,y,z; cout<<"請輸入三角形的三邊:"; cin>>x>>y>>z; tri1.setA(x); tri1.setB(y); tri1.setC(z); //為三邊置初值 if(tri1.isTriangle()) { cout<<"三條邊為:"<
【項目3 - 程序的多文件組織】
一、多文件組織的必要
當程序規模變大後,一個程序用多個文件組織,便於組織生產。這樣,不必每次都重復對所有代碼進行編譯,而只需編譯一次即可。把編譯後所形成的目標文件保存起來,以後在需要時把它調出來直接與程序的目標文件相連接即可。
C++中一種常用的做法是,獨立出一個頭文件(.h)來。正確使用頭文件帶來的好處包括:
支持代碼的局部單獨編譯,尤其對類及成員函數聲明;保證所有文件使用給定實體的同一聲明;當聲明需要修改時,只有頭文件需要更新。 使用頭文件的時候,頭文件只用於聲明,而不是定義,頭文件一般含有支持分別編譯所需的類定義及變量和函數的聲明。
頭文件中聲明過的類、函數,在另外一個源程序文件(.cpp)中實現。
類的成員函數定義在頭文件中只有一個例外,那就是內置(inline)成員函數需要定義在頭文件中。
另外,一些const對象要定義在頭文件中。
二、Code::Blocks中多文件項目的建立
1、先建立項目(Project)
建好的項目只有一個源文件。在這個文件中,包含有main()函數。
2、維護項目中的各種文件
在菜單中選擇File - New - File...,出現如圖1所示的窗口,可以加入頭文件(header),也可以加入源文件(source)。
圖1 新建文件 <喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48YnIgLz48L3A+PHA+oaGhobC0z/K1vLXE1rjKvr2owaLOxLz+o6zNvDLP1Mq+tcTKx9PQwb249tS0zsS8/qGi0ru49s23zsS8/rXEz+7Ev73hubmhozwvcD48cD48L3A+PHA+oaGhoTxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140317/20140317091121318.jpg" alt="\" />
圖2 多文件的項目結構頭文件中做聲明,源文件中做定義。在需要的位置,如:#include "Triangle.h"(圖2中)。include後用引號,優先在當前文件夾下找包含的文件,而用 <> 符號,是要到系統包含文件夾中找包含文件。
用鼠標右擊項目名,有Add files...和Remove files...等菜單選項,可以完成多文件項目的組織。
三、項目3的實踐內容
利用多文件組織,重新實現項目2。其中,整個項目包括3個文件:
主文件: main.cpp,用於定義main()函數頭文件: triangle.h,頭文件,聲明類,定義內置成員函數類定義文件: triangle.cpp,用於定義類Triangle中其他成員函數 注意,將3個set函數和3個get函數設計成內置成員函數,其他函數不作為內置函數。
【項目4 - 數組作數據成員】閱讀教材P255例8.4,注意到類中的數據成員可以是數組。設計一個工資類(Salary),其中的數據成員如下類的聲明。class Salary { public: void set_salarys( ); //(1) void add_salarys(int x); //(2) void sort_salarys(); //(3) void show_salarys( ); //(4) private: double salarys[50]; //工資 int number; //實際人數 };請設計成員函數實現下面的功能:
(1)輸入職工工資,工資保存到salary數組中,實際人數保存到number[]中(輸入-1標志著工資輸入結束);
(2)給每個人漲500元工資(add_salarys是有參函數,在調用時,500當實參);
(3)對漲後的工資進行排序;
(4)輸出排序後的工資。
(5)在main函數定義Salary類的對象,調用你自己設計好的成員函數,完成相關的工作。
【項目4擴展1(選做)】使用salary[50]有限制,實際人數少時,會浪費空間,人數多了,無法完成任務。在main()中先輸入職工人數,作為參數傳遞給輸入職工工資的成員函數,然後利用教材P217所講的動態分配內存的運算符new,開辟一個大小正好的連續空間,完成上面的工作。
【項目4擴展2(選做)】 下載salary.txt文件
手工輸入工資?!太讓人不能忍受了。現給出包含了不足500個職工工資的文件salary.txt,從文件中讀數據,完成上面的工作。
【項目4擴展3(選做)】
增加一個成員函數,將排序後結果保存到一個文件中。
【項目4擴展4(選做)】將項目4用多文件的方式組織起來。
china-pub(正在發售)
卓越網(接受預訂)
圖靈社區 官方試讀本下載
豆瓣==================== 迂者 賀利堅 CSDN博客專欄=================
|== IT學子成長指導專欄 專欄文章分類目錄(不定期更新) ==|
|== C++ 課堂在線專欄 賀利堅課程教學鏈接(分課程年級) ==|
======== 為IT菜鳥起飛鋪跑道,和學生一起享受快樂和激情的大學 =======