版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天津理工大学计算机与通信工程学院实验报告2013 至 2014 学年第 二学期课程名称咼级语言程序设计U实验(2)实验名称复杂形式的对象实验时间2014 年4 月14 日第3 节至 第6 节学号姓名专业信息安全主讲教师唐召东辅导教师唐召东软件环境VC+6硬件环境PC机实验目的(1)掌握对象数组、对象指针的使用方法;(2)掌握对象数组、对象指针和对象引用作为函数参数的使用方法;(3)掌握类对象作为成员的使用方法;(4 )掌握友元的概率和使用方法;(5)掌握静态数据成员和静态成员函数的使用方法;(6)进一步了解 C+面向对象程序设计的基本思想、基本方法和基本步骤;实验内容(应包括实验题目、实验要求
2、、实验任务等)二、练习项目:1. Time类的框架定义如下:class Time/ 声明 Time 类public:Time( int = 0, i nt = 0, i nt = 0 ); /带默认参数的构造函数/ set functionsvoid setTime( in t, i nt, int ); void setHour( int );void setM inu te( int ); void setSec ond( int );/ 设置 hour, minute, second 设置 设置 设置hour (确保数据在合理范围) minute (确保数据在合理范围) seco nd
3、(确保数据在合理范围)/ get functions int getHour(); in t getMi nute(); int getSec on d();/返回返回返回mi nutehoursecond/按24小时格式输出时间:/按12小时格式输出时间:23:56:12void printUni versal(); void prin tSta ndard();private:int hour;/ 0 - 23 (24int mi nute; / 0 - 59int seco nd; / 0 - 59 ; / Timel类定义结束(1) 按照注释的要求完成所有成员函数的定义;(2) 在主程
4、序中定义 Time类对象,通过对象指针或引用调用上述成员函数以测试其正确性。2.设计一个用来表示直角坐标系的Location 类,在主程序中创建类Location的两个对象 A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离, 要求按如下格式输出结果:A( x1, y1), B ( x2, y2)Dista nee仁d1Dista nce2=d2其中:x1, x2, y1, y2为指定的坐标值,class Locati onpublic:Locati on( double,double);double Getx();double Get
5、y();double dista nce1(Locatio n&);/11:56:12 (PM) 或 9:23:55(AM)/小时格式)d1和d2为两个坐标点之间的距离。 Location 类框架可参考如下:声明类Locationfriend double distance2(Location&, Location&);/构造函数成员函数,取x坐标的值成员函数,取y坐标的值成员函数,求两坐标点之间的距离友元函数,求两坐标点之间的距离private:double x,y;;3. 使用C+的string 类,将5个字符串按逆转后的顺序显示出来。例如,逆转前的5个字符串是:Germa ny Japa
6、 n America Brita in France逆转后的顺序输出字符串是:France Brita in America Japa n Germa ny4. 设计一个模仿类class magicpublic:void getdata();void setfirstmagic(); int gen erate();int prin tmagic(); private:int m44;int step;int first;magic来实现4*4的魔方阵。类的框架如下/声明魔方阵类 magic/输入初值成员函数/设置初始魔方成员函数/生成最终魔方成员函数/显示魔方成员函数int sumj;所谓4
7、*4的魔方阵,是指该矩阵的各行值的和等于各列值的和,并等于两对角线值的和,如31 35259 21 19 159 21 19 15,其各行、各列以及对角线值的和都是64。17 13 1123727 291求4*4的魔方阵的一般步骤提示如下:(1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方阵的初始魔方的起始值和相邻元 素之间的差值分别为:first=1, step=2(2)设置初始魔方元素的值。例如上述魔方的初始魔方阵为:135791113151719212325272931(3)生成最终魔方阵。方法如下:求最大元素和最小元素的和sum,本例为1+3仁32。Q用32减去初始魔方阵所有
8、对角线上元素的值,然后将结果放在原来的位置,即可求得最终的魔 方阵。本例最终魔方阵为:313525921191517131123727291(4) 编写主程序,通过对象指针或引用调用上述成员函数以测试所设计的魔方类的正确性5. 声明一个Employee类,数据成员包括:一个 long型的id,两个字符指针成员,代表职员的姓名和家庭 住址,一个double数据,代表月薪。成员函数有:构造函数、析构函数、set_salary() 和get_salary()代表修改和获取薪资、set_name()和get_name()代表修改和获取姓名、set_address() 和get_address()代表修
9、改和获取家庭住址,set_id()和get_id()用来修改获取当前职员的id号。在主程序中,创建对象数组调用上述函数以测试Employee类设计的正确性。Employee类的框架可参考:class Employee/ 声明 Employee 类public:Employee(lo ng, char*, char*, double ); /构造函数Employee(); / 析构函数/ set fun cti onsvoid set_id(l on g);/设置idvoid set_salary(double);/设置salaryvoid set_ name(char * );/设置n ame
10、void set_address(char* );/设置adress/ get functionslong get_id();/返回iddouble get_salary();/返回salarychar* get_ name();/返回n amechar* get_addressSec on d();/返回addressvoid prin t();/打印输出Employee的相关信息private:long id;/工号char *n ame;/姓名char *address;/家庭住址double salary;/月薪; / Employee类声明结束6. 声明一个 Student类,在该类
11、中包括一个数据成员:score (代表课程成绩)、两个静态数据成员:total_score(代表总分),count (代表学生总人数)。成员函数有:构造函数、析构函数、account ( int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。在主程序中,输入某班同学的成绩,并调用上述函数打印 全班同学的成绩、求出全班学生的成绩之和与平均分等。Student类的框架可参考:class Student/ 声明 Student 类public:Stude nt(i nt );/构造函数Stu
12、dent(); /析构函数void acco un t(i nt);/设置分数static int sum();/返回总成绩static double average();/ 返回平均成绩void prin t();/打印输出Student的相关信息private:int score;/ 分数static int total_score;/ 总分static int count;/ 总人数; / Stude nt类声明结束注意:静态成员和非静态成员的初始化方式的区别。实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)1.源代码:#in cludeusing n amespace
13、 std;class Timepublic:Time(i nt = 0,i nt = 0,i nt = 0);void setTime(i nt,i nt,i nt);void setHour(i nt);void setM inu te(i nt);void setSec on d(i nt);int getHour()retur n hour;int getMi nute()return mi nute;int getSeco nd()return sec on d;void printUn iversal();void prin tSta ndard();private:int hour
14、;int min ute;int sec ond;Time:Time(i nt h,i nt m,i nt s)setTime(h,m,s);void Time:setTime(i nt h,i nt m,i nt s)setHour(h);setMi nute(m);setSec on d(s);void Time:setHour(int h)if(h = 0)&(h = 23)hour = h;elsehour = 0;coutvv小时输入错误!默认值为0= 0)&(m = 59)min ute = m;elsemin ute = 0;coutvv分钟输入错误!默认值为0= 0)&(s =
15、 59)sec ond = s;elsesec ond = 0;coutvv秒钟输入错误!默认值为0endl;void Time:pri ntU niversal()coutvv二十四小时制: h;coutvv请输入分钟:vvendl;cinm;cout请输入秒钟: s;Time A(h,m,s);A.pri ntUni versal();A.pri ntSta ndard(); return 0;输出结果:2. 源代码:#in clude#in cludeusing n amespace std;class Locati onpublic:Locati on( double,double);
16、double getx();double gety();double dista nce1(Locatio n&);friend double distance2(Location&,Location&);private:double x,y;double Location:distance1(Location &B)returnsqrt(this-getx()-B.getx()*(this-getx()-B.getx()+(this-gety()-B.gety()*(this-gety()-B.gety();Locati on:Locatio n( double a,double b)x =
17、 a;y = b;double dista nce2(Locatio n &A,Locati on &B)returnsqrt(A.getx()-B.getx()*(A.getx()-B.getx()+(A.gety()-B.gety()*(A.gety()-B.gety(); double Locati on:getx()return x;double Locati on:gety()return y;int mai n()double a,b;cout请输入A点坐标: a;cin b;Locati on A(a,b);cout请输入B点坐标: a;cin b;Locati on B(a,b
18、);coutDista nee仁A.dista nce1(B)e ndl;coutDista nce2=dista nce2(A,B)e ndl;return 0;输出结果:3. 源代码:#in clude #in clude using n amespace std; int mai n()stri ng s100;stri ng a;int i = 0;?e ndl;cout a)si=a;i+;for(int i=i_1;i=0;i_) coutsi coute ndl;return 0;输出结果:4. 源代码:#in cludeusing n amespace std;class ma
19、gicpublic:void getdata(i nt,i nt);void setfirstmagic();void gen erate();void prin tmagic();private:int m44;int step;int first;int sum;void magic:getdata(i nt a,i nt b)step = b;first = a;int a = first;for(i nt i = 0;i 4;i+)for(i nt n = 0;n 4;n+)mi n = a;a = a+step;void magic:ge nerate()sum = m00+m33;
20、mOO = sum-m00;m03 = sum-m03;m30 = sum-m30;m33 = sum-m33;void magic:pri ntmagic()for(i nt i = 0;i 4;i+)for(i nt n = O;n 4;n+)coutmi n t; coute ndl;int mai n()int a,b; cout请输入魔方起始值: a;cout请输入相邻元素差值: b;coute ndl;magic A;A.getdata(a,b);A.setfirstmagic();A.ge nerate();A.pri ntmagic(); return 0;输出结果:5. 源代
21、码:in clude#in clude using n amespace std;class Employee public:Employee on g,stri ng,stri ng,double);void setld(l ong i)id = i;void setSalary(double s)salary = s;void setName(stri ng n)n ame = n;void setAddress(stri ng a)address = a;long getId()retur n id; double getSalary()retur n salary; stri ng g
22、etName()retur n n ame; stri ng getAddress()retur n address; void prin t();private:long id;stri ng n ame;stri ng address; double salary;Employee:Employee(long i,string n,string a,double s) setSalary(s); setName( n);setAddress(a); setId(i);void Employee:pri nt()cout工号:tgetId()endl; cout姓名:tgetName()endl; cout地址:tgetAddress()endl;int m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026天津卫生系统招聘考试(医学影像技术专业知识)历年参考题库含答案详解
- 医院危重患者转运安全管理规范
- 新风机房维护保养规程
- 食品企业异物控制管理技术规范
- 医院污水处理站项目初步设计
- 数字文创平台建设项目可行性研究报告
- 输电线路塔基工程施工验收规范
- 预制菜气调包装工艺规范
- 水站工程作业指导书
- 桥梁防撞护栏施工方案
- 2024年区域经销商协议全面条款集
- 2024秋期国家开放大学专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题及答案
- 10K121 风口选用与安装(含更正说明)
- 电梯拆除施工方案流程
- 10kv高压送电专项方案
- (高清版)TDT 1031.6-2011 土地复垦方案编制规程 第6部分:建设项目
- 铁丝模型制作课件
- 社会主义制度在中国的确立 说课课件-2023-2024学年高中政治统编版必修一中国特色社会主义
- 双壁钢围堰施工技术方案 (提升下放、吸泥、下沉、封底)
- 绿色建筑一星级专项施工方案
- GB/T 600-2023船舶管路阀件通用技术条件
评论
0/150
提交评论