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

2024-03-03 11:18

本文主要是介绍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)手工输入工资?!太让人不能忍受了。现给出包含了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

这篇关于C02-程序设计基础提高班(C++)第9周上机任务-类和对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769456

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数