当前位置: 首页 > 编程日记 > 正文

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

转载于:https://www.cnblogs.com/hehe520/archive/2012/10/21/6142676.html

相关文章:

在不影响配置下,清除netscreen密码

在缺省情况下&#xff0c;设备恢复特征被启用。可通过输入 unset admin device-reset 命令禁用它。同样&#xff0c;如果NetScreen 设备处于 FIPS 模式&#xff0c;恢复特征被自动禁用。1. 在登录提示下&#xff0c;键入设备的序列号。2. 在密码提示下&#xff0c;再次键入序列…

如何删除一个CSDN上自己上传的资源

如何删除一个CSDN上自己上传的资源 第一步&#xff0c;找到你想删除的资源&#xff0c;其URL举例为&#xff1a;http://download.csdn.net/detail/ssergsw/9733040则删除的get请求为&#xff1a;http://download.csdn.net/index.php/user_console/del_my_source/9733040删除成功…

关于计算机中二进制原码,反码,补码的简要解释

原码&#xff0c;补码&#xff0c;反码的概念 正数原码&#xff1a;正数的原码为取绝对值的数转二进制&#xff0c;5的原码为 00000000 00000000 00000000 00000101 负数原码&#xff1a;负数的原码为取绝对值的数转二进制&#xff0c;然后符号位&#xff08;最高位&a…

python是一种面向对象的高级语言_爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?...

今天在知乎上看到一个关于【世纪佳缘找对象靠谱吗&#xff1f;】的讨论&#xff0c;其中关注的人有 1903&#xff0c;被浏览了 1940753 次&#xff0c;355 个回答中大多数都是不靠谱。用 Python 爬取世纪佳缘的数据是否能证明它的不靠谱&#xff1f;数据抓取 在 PC 端打开世纪佳…

使用邮件规则,将收到的邮件进行分类

随着工作的进行&#xff0c;我们经常会发现邮箱里一大堆各种各样的邮件&#xff0c;而要从中找到指定类型的邮件&#xff0c;只能每次都进行一次搜索。但是&#xff0c;经常这样搜索&#xff0c;先不说效率如何&#xff0c;它肯定会对我们的工作进行一些影响。 在这里&#xff…

多个CALayer的联动

在如何通过手势捕获CALayer基础上做了个示例&#xff0c;两个CALayer的联动&#xff0c;当拖动左侧的Layer的时候&#xff0c;右侧的Layer随动。因为右侧的动画没有关闭&#xff0c;有延迟&#xff0c;产生随动的效果。如果不想延迟&#xff0c;可参考拖动动画的问题及解决。 在…

在不允许新建对象的条件下,将list中指定条件的值去除

package com.liujianwang.learning;import java.util.LinkedList; import java.util.List;public class ListTest {public static void main(String[] args) {/** 在不允许新建对象的条件下&#xff0c;将list中指定条件的值去除。* 例如&#xff1a;移除list中值大于6的元素。…

openlayers map获取全部feature_tf2.0基础-tf.data与tf.feature_column

7.2.1 tf.data使用 tf.data API 可以轻松处理大量数据、不同的数据格式以及复杂的转换。tf.data API 在 TensorFlow 中引入了两个新的抽象类&#xff1a;tf.data.Dataset 表示一系列元素&#xff0c;其中每个元素包含一个或多个 Tensor 对象。&#xff1a;创建来源&#xff08;…

项目活动定义 概述

项目活动定义概述 项目活动定义是确认和描述项目的特定活动,它把项目的组成要素加以细分为可管理的更小部分&#xff0c;以便更好地管理和控制。 确定计划活动需要确定和记载计划完成的工作。活动定义过程识别处于工作分解结构&#xff08;WBS&#xff09;最下层&#xff0c;叫…

如何判断CPU、内存、磁盘的性能瓶颈?

1.如何判断CPU、内存、磁盘的瓶颈&#xff1f; CPU瓶颈 1) 查看CPU利用率。建议CPU指标如下 a) User Time&#xff1a;65%&#xff5e;70% b) System Time&#xff1a;30%&#xff5e;35% c) Idle&#xff1a;0%&#xff5e;5% 如果us,sy高于这个指标可以判断CPU有瓶颈 使用top…

一个苹果手机移动电源也能让他拽得跟二五八万似的

一个苹果手机移动电源也能让他拽得跟二五八万似的~~低调一定是美德&#xff0c;尤其是在见过各种JP人类之后&#xff0c;我真心在心里呐喊&#xff0c;你丫稍微低调一点会死啊&#xff01;&#xff01;&#xff01;是的&#xff0c;这个世界上不可能不存在拽得调子高的人&#…

Confluence 6 配置服务器基础地址

服务器基础地址&#xff08;Server Base URL&#xff09;是用户访问 Confluence 的 URL 地址。这个基础的 URL 地址必须与你在浏览器中访问 Confluence 中的地址。 Confluence 将会在安装的时候自动侦测基础的 URL&#xff0c;但是如果你的站点 URL 修改了&#xff0c;或者你的…

python gui编程框架添加工具栏_python gui编程,我是初学者。用tk,制作下拉菜单的command不分我想打开另一个界面。如和解决,求解!!...

展开全部 from tkinter import * def new_file(): print("Open new file") def open_file(): print("Open existing file") def stub_action(): print("Menu select") def makeCommandMenu(): CmdBtn Menubutton(mBar, textButton Commands, un…

这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了

代码如下&#xff0c;请给出具体修改代码 public void AddCategory(string nCategoryName, int nImgId, int nBelongToId, int nShopId, int nSortId) { int CategoryId 0; string cmdText "Select top 1 CategoryId from ProductCategory where Categ…

USACO Section 1.5 Checker Challenge

经典八皇后问题 只写的最基本的&#xff0c;对称剪枝&#xff0c;位运算都没有用&#xff0c;以后有时间再看 1 /* ID:linyvxi1 2 PROB:checker 3 LANG:C 4 */ 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <string.h> 8 int N; 9 int tota…

使用JavaScript实现在页面上所有内容加载完之前一直显示loading...页面

Html 1 <body class"is-loading">2 <div class"curtain">3 <div class"loader">4 loading...5 </div>6 </div> 7 <div>8 <!--这里 正文 -->9 </div> 10 </body> …

SpringCloud + Consul服务注册中心 + gateway网关

1 启动Consul 2 创建springcloud-consul项目及三个子模块 2.1 数据模块consul-producer 2.2 数据消费模块consul-consumer 2.3 gateway网关模块 3 测试及项目下载 1、首先安装Consul并启动Consul&#xff0c;端口号为8500 2、创建一个maven项目springcloud-consul&#xff0…

MySql按日期进行统计(前一天、本周、某一天)[转载]

转自&#xff1a;http://www.yovisun.me/mysql-date-statistics.html 在mysql数据库中&#xff0c;常常会遇到统计当天的内容。例如&#xff0c;在user表中&#xff0c;日期字段为&#xff1a;log_time 统计当天 sql语句为&#xff1a; select * from user where date(log_time…

右键新建里面没有word和excel_Windows10系统下如何将Sublime Text3添加到右键快捷菜单?...

由于本人用的Sublime Text是汉化绿色版的&#xff0c;不仅仅是因为绿色版免去了安装步骤 解压即用&#xff0c;还因为里面整合了常用的高效率必备插件&#xff0c;但是发现右键竟然没有用Sublime Text打开的快捷菜单&#xff0c;这对于我使用Sublime Text 打开一些代码文档会有…

NOI2011 道路修建

题目连接&#xff1a;http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id1670 题意自便。 相关知识&#xff1a;树的遍历&#xff0c;非递归DFS写法。 分析&#xff1a;因为树的边给定&#xff0c;所以从哪个点开始求都是一样的。递归求出每个点的的子树个数&am…

Wiener Filter

假设分别有两个WSS process&#xff1a;$x[n]$&#xff0c;$y[n]$&#xff0c;这两个process之间存在某种关系&#xff0c;并且我们也了解这种关系。现在我们手头上有process $x[n]$&#xff0c;目的是要设计一个LTI系统&#xff0c;使得系统输出$y[n]$&#xff0c;不过$y[n]$是…

c++ string replace_JAVA应用程序开发之String类常用API

【本文详细介绍了JAVA应用开发中的String类常用API&#xff0c;欢迎读者朋友们阅读、转发和收藏&#xff01;】1 基本概念API ( Application Interface 应用程序接口)是类中提供的接口&#xff0c;类库是类的集合。在 Java 语言中可以通过 import 关键字导入相关的类&#xff0…

强大的Charles的使用,强大的flutter1.9

<a href"http://www.cocoachina.com/articles/37551?filterios"> 强大的Charles强大的flutter转载于:https://www.cnblogs.com/henusyj-1314/p/11586350.html

多层次架构设计前言

因为 php 原生来就是要辅助 HTML 的产生&#xff0c;所以程式码跟 HTML 码混在一起写&#xff0c;正是 PHP 的特点也是优点&#xff0c;但正也造成很多分工上的问题&#xff0c;也就是你在写 php 的同时&#xff0c;你也必须很了解 前端、后端技能&#xff0c;像是 DataBase, H…

在java的程序里date类型比较大小

Date a; Date b; 假设现在你已经实例化了a和b a.after(b)返回一个boolean&#xff0c;如果a的时间在b之后&#xff08;不包括等于&#xff09;返回trueb.before(a)返回一个boolean&#xff0c;如果b的时间在a之前&#xff08;不包括等于&#xff09;返回truea.equals(b)返回一个…

linux安装ActiveMQ

1. 下载&#xff1a; # wget https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz 2. 解压&#xff1a; # tar zxvf apache-activemq-5.14.0-bin.tar.gz -C ../ 3. 配置环境变量&#xff1a; # vim /etc/profile 4. 启动&#xff1a; # active…

用递归来判断输入的字符串是否是回文

设计思路&#xff1a;导入Scanner类输入字符串&#xff0c;再将输入的字符串转化为字符数组&#xff0c;然后从字符串左右两侧依次比较字符chu是否相同&#xff0c;若相同递归返回读取的字符个数&#xff0c;若返回字符的个数输入字符串的长度&#xff0c;则输出该字符串是回文…

js高级程序设计之跨浏览器事件处理

//事件 var EventUtil { //添加事件 addHandler:function (element, type, handler) { //element:DOM对象,type:事件类型,handler:事件函数 if (element.addEventListener) { //是否存在DOM2级方法 element.addEventListener(type, handler, false); } else if (element.attac…

在python中使用关键字define定义函数_python自定义函数def的应用详解

这里是三岁&#xff0c;来和大家唠唠自定义函数&#xff0c;这一个神奇的东西&#xff0c;带大家白话玩转自定义函数 自定义函数&#xff0c;编程里面的精髓&#xff01; def 自定义函数的必要函数&#xff1a;def 使用方法&#xff1a;def 函数名(参数1&#xff0c;参数2&…

在Win7 + VMware7下安装Xcode 4

我的Mac OS X是在Win7下虚拟机上安装的&#xff0c;我先把xcode_4.0.2_and_ios_sdk_4.3.dmg下载到Win7下某个目录下&#xff0c;然后共享该目录&#xff0c;然后启动Mac OS X&#xff0c;开始安装&#xff1a;1. 找到Win7下xcode_4.0.2_and_ios_sdk_4.3.dmg所在的共享文件夹&am…