C02-程序设计基础提高班(C++)第9周上机任务-类和对象
第9周:閱讀教材第8章(p231-262),主要內容是類和對象,學會定義類和對象解決問題,完成第9周上機任務;
(回到C02-程序設計基礎提高班(C++)學習安排)
實踐任務:
【任務1】閱讀、運行下面的程序后,按要求編制新的成員函數,并增加類的功能
#include <iostream>
using namespace std;
class Time
{
public:void set_time( ); void show_time( );
private: bool is_time(int, int, int);int hour;int minute;int sec;
};
int main( )
{Time t1; Time &t2=t1;t1.set_time( ); t2.show_time( );return 0;
}
void Time::set_time( )
{char c1,c2;cout<<"請輸入時間(格式hh:mm:ss)";while(1){ cin>>hour>>c1>>minute>>c2>>sec;if(c1!=':'||c2!=':')cout<<"格式不正確,請重新輸入"<<endl;else if (!is_time(hour,minute,sec))cout<<"時間非法,請重新輸入"<<endl;else break;}
}
void Time::show_time( )
{cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
bool Time::is_time(int h,int m, int s)
{if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60)return false;return true;
}要求:請在原類基礎上,增加下列成員函數,要求前三個設計成內置函數,在main()數中增加適當的調用以展示擴充類定義后的功能(最好能一次運行)。add_a_sec() //增加1秒鐘
add_a_minute() //增加1分鐘
add_an_hour() //增加1小時
add_seconds(int) //增加n秒鐘
add_minutes(int) //增加n分鐘
add_hours(int) //增加n小時提示:要考慮增加后超出取值范圍的情形
擴充提示:是否可以設計一個DateTime類了?實施一下吧。
[ 參考:擴充Time類- http://blog.csdn.net/sxhelijian/article/details/7323303 ]
【任務2】針對任務1,利用多文件組織項目。其中,項目包括3個文件:
主文件: main.cpp,用于定義main()函數
頭文件: mytime.h,頭文件
類定義文件: mytime.cpp,用于定義類Time
要求:(1)如果原任務的設計存在問題,要改正過來;(2)在報告中逐個文件進行說明,在報告最后要就多文檔組織提出個人的觀點。
[ 參考:一個項目,多個文件 - http://blog.csdn.net/sxhelijian/article/details/7347141 ]
【任務3】(改自教材P262第6題)仿照你閱讀過的程序,編寫基于對象的程序,求3個長方柱的體積。數據成員包括長(length)、寬(width)、高(heigth)、體積,要求用成員函數實現下面的功能:
(1)由鍵盤輸入3個長方柱的長、寬、高;
(2)計算長方柱的體積(volume)和表面積(areas);
(3)輸出這3個長方柱的體積和表面積;
[ 參考:設計立方柱類 - http://blog.csdn.net/sxhelijian/article/details/7324607 ]
【任務4】下面設計一個三角形類,請給出各成員函數的定義?
#include<iostream>
using namespace std;
class Triangle
{public:void Setabc(float x, float y, float z);//置三邊的值,注意要能成三角形void Getabc(float *x, float *y, float *z);//取三邊的值float Perimeter(void);//計算三角形的周長float Area(void);//計算并返回三角形的面積
private:float a,b,c; //三邊為私有成員數據
};
void main(void)
{ Triangle Tri1; //定義三角形類的一個實例(對象)Tri1.Setabc (4,5,6); //為三邊置初值float x,y,z;Tri1.Getabc (&x,&y,&z); //將三邊的值為x,y,z賦值cout<<"三條邊為:"<<x<<'\t'<<y<<'\t'<<z<<endl;cout<<"三角形的周長為:"<< Tri1.Perimeter()<<'\t'<<"面積為:"<< Tri1.Area()<<endl;
}
//請在下面定義Triangle類中的各個成員函數
[ 參考:三角形類 - http://blog.csdn.net/sxhelijian/article/details/7347140 ] 【任務5】設計一個“正整數”類,并通過一系列的成員函數對其性質進行做出判斷或列出相關聯的數值。下面給出類聲明,請實現各成員函數。另外,模仿已經給出的main()函數,完成你所設計的各個成員函數的測試。
#include<iostream>
using namespace std;
class NaturalNumber
{private:int n;
public:void setValue (int x);//置數據成員n的值,要求判斷是否是正整數int getValue(); //返回私有數據成員n的值bool isPrime(); //判斷數據成員n是否為素數,是返回true,否則返回falsevoid printFactor(); //輸出數據成員n的所有因子,包括1和n自身bool isPerfect(); //判斷數據成員n是否為完全數。若一個正整數n的所有小于n的因子之和等于n, 則稱n為完全數, 如6=1+2+3是完全數。bool isReverse(int x);//判斷形式參數x是否為數據成員n的逆向數(例321是123的逆向數)。bool isDaffodil(int x); //判斷形式參數x是否是水仙花數。水仙花數的各位數字立方和等于該數,如153=1*1*1+5*5*5+3*3*3void print Daffodils(); //顯示所有大于1,且小于數據成員n的水仙花數;
};void main(void)
{NaturalNumber nn; //定義類的一個實例(對象)nn.setValue (6);cout<<nn.getValue()<<(nn.isPrime()?”是”:”不是”)<<”素數” <<endl;nn.setValue (37); cout<<nn.getValue()<<(nn.isPrime()?”是”:”不是”)<<”素數” <<endl;nn.setValue (84); cout<<nn.getValue()<<”的因子有:”;printFactor();//隨著成員函數的實現,增加代碼以完成相關的測試。注意判斷類的成員函數需要測試是或否兩種情況……}
//請在下面定義類中的各個成員函數拓展:用多文檔的項目組織本項目 [ 參考:正整數類 - http://blog.csdn.net/sxhelijian/article/details/7347147 ]
【任務6】閱讀教材P255例8.4,注意到類中的數據成員可以是數組。設計一個工資類(Salary),其中的數據成員有:double型數組salary[50](實際人數可以少于50,固定取50可能造成空間浪費),整型值number表示的職工人數。在main函數中調用你自己設計好的成員函數完成下面的功能:(1)輸入職工工資,工資保存到salary數組中,實際人數保存到number中(輸入-1標志著工資輸入結束);(2)給每個人漲100元工資;(3)對漲后的工資進行排序;(4)輸出排序后的工資。
任務拓展:
(1)使用salary[50]有限制,實際人數少浪費空間,人數多時無法完成任務。程序執行中先輸入職工人數,然后利用教材P217所講的動態分配內存的運算符new,開辟一個大小正好的連續空間,完成上面的工作(排序需要采用指針完成)。
(2)手工輸入工資?!太讓人不能忍受了?,F給出包含了500個職工工資的文件salary.txt(見附),從文件中讀數據,完成上面的工作。
[ 參考:設計工資類(Salary) - http://blog.csdn.net/sxhelijian/article/details/7347148 ]
附:salary.txt中的數據(復制到記事本中建立文本文件)
1648.4
619.54
1763.34
2772.59
858.74
723.49
2391.0
876.95
2551.5
613.30
2711.12
850.4
909.68
1213.95
1099.51
1115.36
962.57
2325.6
804.20
1900.77
2940.78
2085.27
1119.57
1784.22
1348.9
949.99
1579.13
1346.39
1822.32
678.67
1984.87
817.20
850.81
2121.39
985.94
2386.22
1112.86
1604.15
1013.89
2968.97
622.48
699.68
1034.7
1741.93
862.48
2879.14
2982.70
2513.58
2192.81
2640.22
2162.98
589.97
2277.5
1605.55
1688.42
1886.9
544.67
2410.92
1220.87
1892.87
1326.63
1696.38
1239.96
1895.55
2550.13
1946.68
2827.11
2009.47
2106.57
1401.49
2102.52
2580.97
2772.85
2809.58
2530.81
1132.66
1663.38
1974.22
1564.16
2226.63
771.30
2194.15
2620.15
2424.46
1903.66
950.45
2984.95
1942.62
1309.49
1760.42
2346.91
680.80
1525.74
1145.34
2102.63
1515.47
1324.28
1687.41
1387.96
1290.2
2491.6
1874.49
2958.17
1006.20
2258.94
2814.89
2857.60
763.77
2874.9
2777.54
895.16
2909.22
2359.26
2773.98
2416.17
1003.43
599.77
1810.6
2620.87
2306.0
1168.84
2240.99
2161.6
2627.62
681.29
998.22
1506.61
2152.61
2221.71
648.86
1800.54
1045.9
2904.98
2656.0
778.31
1385.12
2446.31
2648.55
845.14
1115.57
972.92
2554.82
1358.76
1870.13
1066.63
2962.72
1646.94
1115.63
2831.31
729.15
2052.36
1768.74
2457.61
1718.82
1522.40
2340.57
2709.33
1597.74
2906.75
2846.23
1990.25
2441.10
1005.61
2026.19
2914.69
2084.51
1939.63
782.3
2641.32
2211.90
2359.40
2071.62
2875.25
1187.33
2886.68
2375.89
1639.24
955.17
2383.71
802.77
1091.78
2504.25
1843.52
779.92
1399.35
1194.94
1792.99
2669.59
1326.54
1821.47
2112.30
596.16
2001.91
614.22
2835.94
710.45
1711.96
2497.9
1459.25
851.57
844.49
1496.64
972.81
2743.18
1529.11
1440.24
1810.68
2495.5
1446.58
1675.24
1591.71
2434.72
1608.76
955.71
938.28
1231.82
1971.24
1336.68
2912.41
1869.9
792.32
1026.28
592.22
2906.93
1449.49
1254.24
554.3
1934.49
757.65
2851.86
901.26
1558.9
2741.95
2716.12
1050.54
1011.89
993.84
2836.74
2065.60
1228.0
897.91
2704.35
2838.80
2564.65
2985.84
1906.40
1893.97
2138.85
1190.11
1313.75
1280.23
2638.86
1311.32
2798.32
2203.48
2717.51
1495.6
1349.45
1679.8
1207.1
2544.43
1952.96
2118.2
2478.74
1082.87
1136.91
833.42
1287.69
1296.38
1946.62
1327.6
2292.62
1254.64
2787.2
853.4
2360.12
2390.40
589.43
1118.11
2945.1
1636.80
2369.1
1091.62
1194.80
825.90
2145.99
2792.31
2145.1
1955.57
832.11
1658.92
1005.34
1267.37
2249.50
548.71
1576.12
2767.94
1904.86
1170.91
1166.78
2092.66
1608.52
1886.45
1638.25
2143.46
1904.57
1199.42
2839.73
1652.41
695.48
831.11
1231.26
2450.49
2607.83
2398.59
962.11
666.83
1864.86
572.72
1568.50
1180.60
2252.79
2349.14
909.41
2700.53
2487.88
2885.38
560.24
1265.45
2934.8
2048.96
2334.86
2265.70
1707.79
1332.45
1707.64
2344.90
2037.31
2170.71
2861.65
2809.59
748.5
2124.58
1432.14
1068.69
643.84
2841.68
2947.46
2027.8
2047.84
1680.9
1760.89
902.29
688.48
2158.61
2560.7
1646.79
1826.21
2708.74
2815.13
828.64
1562.86
1599.24
611.29
2521.74
872.61
1664.4
1145.24
2011.1
1297.42
2705.8
1024.76
1885.23
2854.60
1103.17
705.92
899.71
741.90
2702.70
791.95
1003.34
928.37
975.23
2439.71
1163.87
2041.49
2666.2
1245.72
1360.18
2400.2
2714.84
1194.68
2152.35
1613.66
728.13
2341.73
1069.9
2144.40
2890.26
862.85
773.56
940.34
1990.59
862.27
1222.80
2187.4
1488.51
2183.80
2745.52
2958.93
1938.33
2310.37
2739.34
1197.41
1147.89
553.65
864.92
1306.81
2626.10
2650.92
1755.86
1404.53
573.10
2600.42
978.89
1236.46
1143.64
534.43
2019.30
1980.74
2822.33
2206.63
1641.16
640.75
1298.99
1848.92
1854.94
1765.32
1628.1
2536.18
2149.21
2409.58
2292.48
585.25
2735.2
2080.98
1872.97
2673.31
2629.71
2538.14
1848.40
2507.35
2029.45
634.22
2816.2
1228.94
962.40
1423.20
2434.65
906.43
1659.35
1578.49
2520.23
1900.84
1729.38
1489.57
1457.61
1842.54
980.55
2919.21
1529.37
1061.66
2178.65
2738.90
1887.33
1329.64
746.5
2832.47
2233.84
1072.80
2981.50
1181.16
1782.77
2145.54
881.12
2540.76
1621.71
2376.48
2627.47
1748.40
694.8
1795.20
1268.82
2930.51
1005.74
2384.95
1835.38
2905.76
831.39
2308.74
轉載于:https://www.cnblogs.com/hehe520/archive/2012/10/21/6142676.html
總結
以上是生活随笔為你收集整理的C02-程序设计基础提高班(C++)第9周上机任务-类和对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq个性签名加图片大全
- 下一篇: 使用邮件规则,将收到的邮件进行分类