实验5 类和对象程序填空1. 题目描述:仔细阅读下列求两个点之间距离的程序,程序的输出结果是50,根据程序的输出结果在划线处填入正确语句。
代码:#include<iostream>#include<cmath>using namespace std;class point{public:point(float a,float b) { x=a; y=b; }float Distance(point &p){float dx=p.x-x;float dy=p.y-y;return (float)sqrt(dx*dx+dy*dy);}private:float x,y;};int main(){point p1(2,3),p2(32,43);cout<<p1.Distance(p2)<<endl;return 0;}2.题目描述:设计一个矩阵类CRectangle,该类中的私有成员变量存放Rectangle的长和宽,并设置它们的默认值为1,通过成员函数set()来设定长和宽的值,并确保长宽都在(0,50)范围之内,求其周长Perimeter并显示输出。
以下是完成此项工作的程序,请将未完成的部分填入,使之完整。
代码:#include<iostream>using namespace std;class CRectangle{public:void Set(float a,float b){if((a>0)&&(a<50)) length=a;else length=1;if((b>0)&&(b<50)) width=b;else width=1;}float perimeter(){return 2*(length+width);}private:float length;float width;};int main(){CRectangle R;float l,w;//定义矩形的长和宽做为输入变量;// cout<<"请输入矩形的长和宽:"<<endl;cin>>l>>w;R.Set(1,w); //设置矩形的长和宽cout<<"矩形的周长为:"<<R.perimeter()<<endl;return 0;}3.题目描述:设计一个类C R ectangle,要求如下所述。
(1)定义两个点坐标x1,y1,x2,y2,两点所确定的一条直线构成了矩形的对角线。
(2)初始化矩形的两个点时,判断给定的两个点是否能够构成一个矩形,如果不能构成矩形,则矩形对角线的两点初始化为(0,0)和(1,1)。
如果可以构成,则用形参初始化对象的数据成员。
根据以上描述完成下列程序。
代码:#include<iostream>#include<cmath>using namespace std;class CRectangle{public:CRectangle(float Rx1=0,float Ry1=0, float Rx2=1,float Ry2=1);bool IsSquare( );void PrintRectangle( );private://确定直线的两点的坐标float x1,y1,x2,y2;};CRectangle::CRectangle(float Rx1 ,float Ry1, float Rx2,float Ry2){if (Rx1==Rx2||Ry1==Ry2) //两点的横坐标或纵坐标的值相等,则不能构成矩形{x1=y1=0;x2=y2=1;cout<<"不能构成矩形! "<<endl;}else{x1=Rx1,x2=Rx2,y1=Ry1,y2=Ry2 //初始化数据成员x1,y1,x2,y2cout<<"可以构成矩形! "<<endl;}}int main(){CRectangle R1(1,3,5,6);CRectangle R2(1,3,1,6);return 0;}4.题目描述:下列程序中声明了类girl,其中函数“display”是类girl的友元函数,请在(1)、(2)和(3)处各填入正确的内容,使程序能正常运行。
代码:#include<iostream>using namespace std;class girl{private:char name;int age;public:girl(char n, int d) //构造函数{name= n;age=d;}Friend void display(girl &x); //声明友元函数};void display(girl &x) //类外定义友元函数{cout<<"Girl's name is :"<<x. name<<", age is :"<<x.age<<endl;//girl类的友元函数能访问girl类对象的私有成员}int main( ){girl e('z',18);display(e); //调用友元函数return 0;}5.题目描述:,请完善下面程序,使程序的运行结果如下:This is a constructor !This is a constructor !The value of ch is aThe value of ch is bThis is a destructor of bThis is a destructor of a代码:#include<iostream>using namespace std;class MyClass{char ch;public:MyClass( ){cout<<"This is a constructor! "<<endl;ch='a';}MyClass(char character ){cout<<"This is a constructor! "<<endl;ch=character;}void Print( ){cout<<"The value of ch is "<<ch<<endl;}~ MyClass( ){cout<<"This is a destructor of"<<ch<<endl;}};int main( ){MyClass first, second(b);first.Print( );second.Print( );return 0;}程序设计6.题目标题:计算两点间的距离题目描述:仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。
并在主函数中增加输入两点作为友元函数的实参。
其主函数如下:输入描述:输入四个数,用空格隔开。
输出描述:两个点的距离。
样例输入:1 3 5 6样例输出:5#include<iostream>#include<cmath>using namespace std;class point{public:point(float a,float b) { x=a; y=b; }friend float Distance( point &p1, point &p2);private:float x,y;};float Distance( point &p1, point &p2){float dx=p1.x-p2.x;float dy=p1.y-p2.y;return (float)sqrt(dx*dx+dy*dy);}int main(){float p1_x,p1_y,p2_x,p2_y;//输入四个点cin>>p1_x>>p1_y>>p2_x>>p2_y;point p1(p1_x,p1_y),p2(p2_x,p2_y);cout<<Distance(p1,p2)<<endl;return 0;}7.题目标题:日期类CDateInfo的设计。
题目描述:根据以下主函数的功能来设计日期类CDateInfo,使其能正确运行。
类CDateInfo 中应该具有描述年、月、日的三个数据成员和相应的成员函数。
#include<iostream>using namespace std;class CDateibfo{int day,month,year;public:CDateibfo();CDateibfo(int yy,int mm,int dd);void setdate(int yy,int mm,int dd);void getdate();};CDateibfo::CDateibfo(){day=10;month=10;year=2011;}CDateibfo::CDateibfo(int yy,int mm,int dd){year=yy;month=mm;day=dd;}void CDateibfo::setdate(int yy,int mm,int dd){year=yy;month=mm;day=dd;}void CDateibfo::getdate(){cout<<year<<"-"<<month<<"-"<<day<<endl;}int main(){CDateibfo date1,date2(2011,10,10);int y,m,d;cin>>y>>m>>d;date1.setdate(y,m,d);date1.getdate();date2.getdate();return 0;}输入描述:三个整数,分别用来设置对象data1的年、月、日输出描述:两行:第1行为对象data1的年月日;第2行为data2的年月日。