C第二次实验.doc

上传人:美****子 文档编号:58028444 上传时间:2022-11-06 格式:DOC 页数:16 大小:146.50KB
返回 下载 相关 举报
C第二次实验.doc_第1页
第1页 / 共16页
C第二次实验.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《C第二次实验.doc》由会员分享,可在线阅读,更多相关《C第二次实验.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、天津理工大学计算机与通信工程学院实验报告2019 至 2019 学年 第 二 学期课程名称高级语言程序设计实验( 2 )实验名称复杂形式的对象实验时间 2019 年 4 月 14 日 第 3 节 至 第 6 节学号姓名专业信息安全主讲教师唐召东辅导教师唐召东软件环境VC+6硬件环境PC机实验目的(1)掌握对象数组、对象指针的使用方法;(2)掌握对象数组、对象指针和对象引用作为函数参数的使用方法;(3)掌握类对象作为成员的使用方法;(4)掌握友元的概率和使用方法;(5)掌握静态数据成员和静态成员函数的使用方法;(6)进一步了解C+面向对象程序设计的基本思想、基本方法和基本步骤;实验内容(应包括实

2、验题目、实验要求、实验任务等)二、练习项目:1. Time类的框架定义如下:class Time/声明Time类public:Time( int = 0, int = 0, int = 0 ); / 带默认参数的构造函数/ set functionsvoid setTime( int, int, int );/ 设置hour, minute, second void setHour( int );/ 设置hour (确保数据在合理范围) void setMinute( int );/ 设置minute (确保数据在合理范围) void setSecond( int );/ 设置second (

3、确保数据在合理范围) / get functions int getHour();/ 返回 hour int getMinute();/ 返回 minute int getSecond();/ 返回 second void printUniversal();/ 按24小时格式输出时间:23:56:12 void printStandard();/ 按12小时格式输出时间:11:56:12 (PM) 或 9:23:55(AM)private: int hour;/ 0 - 23 (24小时格式)int minute; / 0 - 59int second; / 0 - 59; / Timel类定

4、义结束(1) 按照注释的要求完成所有成员函数的定义;(2) 在主程序中定义Time类对象,通过对象指针或引用调用上述成员函数以测试其正确性。2.设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1, y1), B(x2, y2)Distance1=d1Distance2=d2其中:x1, x2, y1, y2为指定的坐标值,d1和d2为两个坐标点之间的距离。Location类框架可参考如下:class Locatio

5、n/声明类Locationpublic:Location(double,double);/构造函数double Getx();/成员函数,取x坐标的值double Gety();/成员函数,取y坐标的值double distance1(Location&);/成员函数,求两坐标点之间的距离friend double distance2(Location&, Location&);/友元函数,求两坐标点之间的距离 private:double x,y;3.使用C+的string类,将5个字符串按逆转后的顺序显示出来。例如,逆转前的5个字符串是:Germany Japan America Brit

6、ain France逆转后的顺序输出字符串是:France Britain America Japan Germany4.设计一个模仿类magic来实现4*4的魔方阵。类的框架如下:class magic/声明魔方阵类magicpublic:void getdata();/输入初值成员函数void setfirstmagic();/设置初始魔方成员函数int generate();/生成最终魔方成员函数int printmagic();/显示魔方成员函数private:int m44;int step;int first;int sumj;所谓4*4的魔方阵,是指该矩阵的各行值的和等于各列值的

7、和,并等于两对角线值的和,如:,其各行、各列以及对角线值的和都是64。求4*4的魔方阵的一般步骤提示如下:(1) 设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方阵的初始魔方的起始值和相邻元素之间的差值分别为:first=1, step=2(2) 设置初始魔方元素的值。例如上述魔方的初始魔方阵为: (3) 生成最终魔方阵。方法如下:求最大元素和最小元素的和sum,本例为1+31=32。用32减去初始魔方阵所有对角线上元素的值,然后将结果放在原来的位置,即可求得最终的魔方阵。本例最终魔方阵为:(4)编写主程序,通过对象指针或引用调用上述成员函数以测试所设计的魔方类的正确性.5.声明一个Em

8、ployee类,数据成员包括:一个long型的id,两个字符指针成员,代表职员的姓名和家庭住址,一个double数据,代表月薪。成员函数有:构造函数、析构函数、set_salary()和get_salary()代表修改和获取薪资、set_name()和get_name()代表修改和获取姓名、set_address()和get_address()代表修改和获取家庭住址,set_id()和get_id()用来修改获取当前职员的id号。在主程序中,创建对象数组调用上述函数以测试Employee类设计的正确性。Employee类的框架可参考:class Employee/声明Employee类publ

9、ic:Employee(long, char*, char*, double ); / 构造函数Employee();/ 析构函数/ set functionsvoid set_id(long);/ 设置idvoid set_salary(double);/ 设置salary void set_name(char * );/ 设置name void set_address(char* );/ 设置adress / get functionslong get_id();/ 返回id double get_salary();/ 返回 salary char* get_name();/ 返回 nam

10、e char* get_addressSecond();/ 返回 address void print();/ 打印输出Employee的相关信息 private: long id;/ 工号 char *name;/ 姓名 char *address;/ 家庭住址 double salary;/ 月薪; / Employee类声明结束6.声明一个Student类,在该类中包括一个数据成员:score(代表课程成绩)、两个静态数据成员:total_score(代表总分),count(代表学生总人数)。成员函数有:构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回

11、所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。Student类的框架可参考:class Student/声明Student类public:Student(int );/ 构造函数Student();/ 析构函数void account(int);/ 设置分数static int sum();/ 返回总成绩static double average();/ 返回平均成绩void print();/ 打印输出Student的相关信

12、息private: int score;/ 分数 static int total_score;/ 总分 static int count;/ 总人数; / Student类声明结束注意:静态成员和非静态成员的初始化方式的区别。实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)1. 源代码:#includeusing namespace std;class Timepublic:Time(int = 0,int = 0,int = 0);void setTime(int,int,int);void setHour(int);void setMinute(int);void se

13、tSecond(int);int getHour()return hour;int getMinute()return minute;int getSecond()return second;void printUniversal();void printStandard();private:int hour;int minute; int second;Time:Time(int h,int m,int s)setTime(h,m,s);void Time:setTime(int h,int m,int s)setHour(h);setMinute(m);setSecond(s); void

14、 Time:setHour(int h)if(h = 0)&(h = 23)hour = h;elsehour = 0;cout小时输入错误!默认值为0= 0)&(m = 59)minute = m;elseminute = 0;cout分钟输入错误!默认值为0= 0)&(s = 59)second = s;else second = 0;cout秒钟输入错误!默认值为0endl; void Time:printUniversal()cout二十四小时制:endl;coutgetHour():getMinute():getSecond()endl;void Time:printStandard

15、()cout十二小时制:endl;if(getHour() = 12)coutgetHour():getMinute():getSecond()(AM)endl;elsecoutgetHour()-12:getMinute():getSecond()(PM)endl;int main()int h,m,s;cout请输入小时:h;cout请输入分钟:m;cout请输入秒钟:s;Time A(h,m,s);A.printUniversal();A.printStandard();return 0;输出结果:2.源代码:#include#includeusing namespace std;cla

16、ss Locationpublic:Location(double,double);double getx();double gety();double distance1(Location&);friend double distance2(Location&,Location&);private:double x,y;double Location:distance1(Location &B)return sqrt(this-getx()-B.getx()*(this-getx()-B.getx()+(this-gety()-B.gety()*(this-gety()-B.gety();L

17、ocation:Location(double a,double b)x = a;y = b;第 16 页double distance2(Location &A,Location &B)return sqrt(A.getx()-B.getx()*(A.getx()-B.getx()+(A.gety()-B.gety()*(A.gety()-B.gety();double Location:getx()return x;double Location:gety()return y;int main()double a,b;cout请输入A点坐标:a;cinb;Location A(a,b);c

18、out请输入B点坐标:a;cinb;Location B(a,b);coutDistance1=A.distance1(B)endl;coutDistance2=distance2(A,B)endl;return 0;输出结果:3.源代码:#include#includeusing namespace std;int main()string s100;string a;int i = 0;couta)si=a;i+;for(int i=i-1;i=0;i-)coutsi ;coutendl;return 0;输出结果:4.源代码:#includeusing namespace std;cla

19、ss magicpublic:void getdata(int,int);void setfirstmagic();void generate();void printmagic();private:int m44;int step;int first;int sum;void magic:getdata(int a,int b)step = b;first = a;void magic:setfirstmagic()int a = first;for(int i = 0;i 4;i+)for(int n = 0;n 4;n+)min = a;a = a+step;void magic:gen

20、erate()sum = m00+m33;m00 = sum-m00;m03 = sum-m03;m30 = sum-m30;m33 = sum-m33;void magic:printmagic()for(int i = 0;i 4;i+)for(int n = 0;n 4;n+)coutmint;coutendl;int main()int a,b;cout请输入魔方起始值:a;cout请输入相邻元素差值:b;coutendl; magic A;A.getdata(a,b);A.setfirstmagic();A.generate();A.printmagic();return 0;输出结

21、果:5.源代码:include#includeusing namespace std;class Employeepublic:Employee(long,string,string,double);void setId(long i)id = i;void setSalary(double s)salary = s;void setName(string n)name = n;void setAddress(string a)address = a;long getId()return id;double getSalary()return salary;string getName()re

22、turn name;string getAddress()return address;void print();private:long id;string name;string address;double salary;Employee:Employee(long i,string n,string a,double s)setSalary(s);setName(n);setAddress(a);setId(i); void Employee:print()cout工号:tgetId()endl;cout姓名:tgetName()endl;cout地址:tgetAddress()end

23、l;cout工资:tgetSalary()endl;coutendl;int main()Employee emp4=Employee(1,张静,15#117,8000),Employee(2,张义新,27#318,7500),Employee(3,杜赟,15#116,1500),Employee(4,皮卡丘,15#116,1200);emp0.print();emp1.print();emp2.print();emp3.print();return 0;输出结果:6.源代码:#includeusing namespace std;class Studentpublic:Student(int

24、);static double average();static int sum();private:int score;static int total;static int count;Student:Student(int a)score = a;count+;total = total+score;int Student:sum()return total;double Student:average()return total/count;int Student:total = 0;int Student:count = 0;int main()cout请输入成绩:a;Student A(a);cout请输入成绩:a;Student B(a);cout请输入成绩:a;Student C(a);cout总成绩为:Student:sum()endl;cout平均分为:Student:average()endl;return 0;输出结果:附录(可包括源程序清单或其它说明)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com