zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C02-程序设计基础提高班(C++)第9周上机任务-类和对象

C++基础对象 任务 程序设计 上机
2023-09-11 14:15:56 时间
第9周:阅读教材第8章(p231-262),主要内容是类和对象,学会定义类和对象解决问题,完成第9周上机任务; (回到C02-程序设计基础提高班(C++)学习安排) 实践任务: 【任务1】阅读、运行下面的程序后,按要求编制新的成员函数,并增加类的功能 #include iostream using namespace std; class Time public:

第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, //将三边的值为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,否则返回false

 void 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*3

 void 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)手工输入工资?!太让人不能忍受了。现给出包含了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


程序设计与 C 语言期末复习 1.计算机语言与编译 机器语言:一串仅由 0 和 1 序列表示的语言。计算机只能识别和接受 0 和 1 组成的指令。 符号语言(汇编语言):用一些英文字母和数字表示一个指令。 符号语言(汇编语言) 机器语言 低级语言:完全依赖于具体机器特性的,是面向机器的语言。例:机器语言,汇编语言等。
Mooc翁恺-Java面向对象程序设计 第一周 类与对象 用对象思考,用类来写作。Java语言是一种面向对象语言,是业界使用最为广泛的语言,十二年前就占据了1/4的编程语言份额,到今天仍然以1/5的比例站在编程语言排行榜的前列。Java是优秀的面向对象编程语言,特别适合构建多人协作的大型软件产品。...
程序设计课2014年秋第11周学习经验交流和自省 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  发现你在学习中成功的经验,以及有好感觉的时候,做一简短总结 能在一定时间内,写出想要表达的信息通过编写代码 总算找到了一点感觉,现在天天晚自习,希望能在自习中重新找回自己学习的状态,尽快追上去。
第14周:阅读教材第13章(p417-458),主要内容是输入输出,重点是文件的操作,完成第14周上机任务; (回到C02-程序设计基础提高班(C++)学习安排) 【任务1】涨工资从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序,将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中。[ 参考:涨工资了 - http://blog.cs
C02-程序设计基础提高班(C++)第13周上机任务-多态与虚函数 第13周:阅读教材第12章(p395-416),主要内容是多态性,完成第13周上机任务 (回到C02-程序设计基础提高班(C++)学习安排) 【任务1】下面给出了基类Animal和main()函数。(1)根据main()函数给出的注释提示,设计出相关的各个类。(2)显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这
第12周:阅读教材第11章(p347-394),主要内容是类的继承,完成第12周上机任务; (回到C02-程序设计基础提高班(C++)学习安排) 【任务1】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要
贺利坚 烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学