您好,欢迎访问三七文档
计算机与通信工程学院天津理工大学计算机与通信工程学院实验报告2013至2014学年第二学期课程名称高级语言程序设计Ⅱ实验(2)实验名称复杂形式的对象实验时间2014年4月14日第3节至第6节学号姓名专业信息安全主讲教师唐召东辅导教师唐召东软件环境VC++6硬件环境PC机计算机与通信工程学院2实验目的(1)掌握对象数组、对象指针的使用方法;(2)掌握对象数组、对象指针和对象引用作为函数参数的使用方法;(3)掌握类对象作为成员的使用方法;(4)掌握友元的概率和使用方法;(5)掌握静态数据成员和静态成员函数的使用方法;(6)进一步了解C++面向对象程序设计的基本思想、基本方法和基本步骤;实验内容(应包括实验题目、实验要求、实验任务等)计算机与通信工程学院3二、练习项目:1.Time类的框架定义如下:classTime//声明Time类{public:Time(int=0,int=0,int=0);//带默认参数的构造函数//setfunctionsvoidsetTime(int,int,int);//设置hour,minute,secondvoidsetHour(int);//设置hour(确保数据在合理范围)voidsetMinute(int);//设置minute(确保数据在合理范围)voidsetSecond(int);//设置second(确保数据在合理范围)//getfunctionsintgetHour();//返回hourintgetMinute();//返回minuteintgetSecond();//返回secondvoidprintUniversal();//按24小时格式输出时间:23:56:12voidprintStandard();//按12小时格式输出时间:11:56:12(PM)或9:23:55(AM)private:inthour;//0-23(24小时格式)intminute;//0-59intsecond;//0-59};//Timel类定义结束(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类框架可参考如下:classLocation//声明类Location{public:Location(double,double);//构造函数doubleGetx();//成员函数,取x坐标的值doubleGety();//成员函数,取y坐标的值doubledistance1(Location&);//成员函数,求两坐标点之间的距离frienddoubledistance2(Location&,Location&);//友元函数,求两坐标点之间的距离计算机与通信工程学院4private:doublex,y;};3.使用C++的string类,将5个字符串按逆转后的顺序显示出来。例如,逆转前的5个字符串是:GermanyJapanAmericaBritainFrance逆转后的顺序输出字符串是:FranceBritainAmericaJapanGermany4.设计一个模仿类magic来实现4*4的魔方阵。类的框架如下:classmagic//声明魔方阵类magic{public:voidgetdata();//输入初值成员函数voidsetfirstmagic();//设置初始魔方成员函数intgenerate();//生成最终魔方成员函数intprintmagic();//显示魔方成员函数private:intm[4][4];intstep;intfirst;intsumj;};所谓4*4的魔方阵,是指该矩阵的各行值的和等于各列值的和,并等于两对角线值的和,如:313525921191517131123727291,其各行、各列以及对角线值的和都是64。求4*4的魔方阵的一般步骤提示如下:(1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方阵的初始魔方的起始值和相邻元素之间的差值分别为:first=1,step=2(2)设置初始魔方元素的值。例如上述魔方的初始魔方阵为:135791113151719212325272931(3)生成最终魔方阵。方法如下:○1求最大元素和最小元素的和sum,本例为1+31=32。○2用32减去初始魔方阵所有对角线上元素的值,然后将结果放在原来的位置,即可求得最终的魔方阵。本例最终魔方阵为:313525921191517131123727291计算机与通信工程学院5(4)编写主程序,通过对象指针或引用调用上述成员函数以测试所设计的魔方类的正确性.5.声明一个Employee类,数据成员包括:一个long型的id,两个字符指针成员,代表职员的姓名和家庭住址,一个double数据,代表月薪。成员函数有:构造函数、析构函数、set_salary()和get_salary()代表修改和获取薪资、set_name()和get_name()代表修改和获取姓名、set_address()和get_address()代表修改和获取家庭住址,set_id()和get_id()用来修改获取当前职员的id号。在主程序中,创建对象数组调用上述函数以测试Employee类设计的正确性。Employee类的框架可参考:classEmployee//声明Employee类{public:Employee(long,char*,char*,double);//构造函数~Employee();//析构函数//setfunctionsvoidset_id(long);//设置idvoidset_salary(double);//设置salaryvoidset_name(char*);//设置namevoidset_address(char*);//设置adress//getfunctionslongget_id();//返回iddoubleget_salary();//返回salarychar*get_name();//返回namechar*get_addressSecond();//返回addressvoidprint();//打印输出Employee的相关信息private:longid;//工号char*name;//姓名char*address;//家庭住址doublesalary;//月薪};//Employee类声明结束6.声明一个Student类,在该类中包括一个数据成员:score(代表课程成绩)、两个静态数据成员:total_score(代表总分),count(代表学生总人数)。成员函数有:构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。Student类的框架可参考:classStudent//声明Student类{public:Student(int);//构造函数~Student();//析构函数voidaccount(int);//设置分数staticintsum();//返回总成绩staticdoubleaverage();//返回平均成绩voidprint();//打印输出Student的相关信息计算机与通信工程学院6private:intscore;//分数staticinttotal_score;//总分staticintcount;//总人数};//Student类声明结束注意:静态成员和非静态成员的初始化方式的区别。实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)1.源代码:#includeiostreamusingnamespacestd;classTime{public:Time(int=0,int=0,int=0);voidsetTime(int,int,int);voidsetHour(int);voidsetMinute(int);voidsetSecond(int);intgetHour(){returnhour;}intgetMinute(){returnminute;}intgetSecond(){returnsecond;}voidprintUniversal();voidprintStandard();private:inthour;intminute;intsecond;};Time::Time(inth,intm,ints){setTime(h,m,s);}voidTime::setTime(inth,intm,ints){setHour(h);setMinute(m);setSecond(s);}voidTime::setHour(inth){if((h=0)&&(h=23))hour=h;else计算机与通信工程学院7{hour=0;cout小时输入错误!!!默认值为0endl;}}voidTime::setMinute(intm){if((m=0)&&(m=59))minute=m;else{minute=0;cout分钟输入错误!!!默认值为0endl;}}voidTime::setSecond(ints){if((s=0)&&(s=59))second=s;else{second=0;cout秒钟输入错误!!!默认值为0endl;}}voidTime::printUniversal(){cout二十四小时制:endl;coutgetHour():getMinute():getSecond()endl;}voidTime::printStandard(){cout十二小时制:endl;if(getHour()=12)coutgetHour():getMinute():getSecond()(AM)endl;elsecoutgetHour()-12:getMinute():getSecond()(PM)endl;}intmain(){inth,m,s;cout请输入小时:endl;cinh;cout请输入分钟:endl;计算机与通信工程学院8cinm;cout请输入秒钟:endl;cins;TimeA(h,m,s);A.printUniversal();A.printStandard();return0;}输出结果:2.源代码:#includeiostream#includecmathusingnamespacestd;classLocation{public:Location(double,double);doublegetx();doublegety();doubledistance1(Location&);frienddoubledistance2(Location&,Location&);private:doublex,y;};doubleLocation::distance1(Location&B){returnsqrt((this-getx()-B.getx())*(this-getx()-B.getx())+(
本文标题:C++第二次实验
链接地址:https://www.777doc.com/doc-4745777 .html