类与对象练习题(一)---Point类

我是计算机专业的一位大一本科生,C++小白,下面是我们学校在学习C++时用的基础练习题,我感觉这些题比较适合初学C++的码友,所以利用空闲时间将这些题整理出来,一是为了让初学C++的码友有所参考,二也是为了复习一下所学过知识。(因准备急促,如有代码错误,还请各位码友指正。)

Point类01

定义一个Point类,数据成员包括私有数据成员为double类型的点坐标x,y;成员函数包括构造函数Point(用于实现对数据成员x,y的初始化),成员函数Display(用于输出点坐标x、y,输出格式为点坐标用逗号分隔并半角圆括号括起来)。

//main函数如下(不得修改main函数):
int main()
{
    
    
       double x,y;
       cin>>x>>y;
       Point p1(x,y);
       p1.Display();
       return 0;
}

Sample Input
12.5 22.7
Sample Output
(12.5,22.7)

#include<iostream>
using namespace std;
class Point
{
    
    
public:
    Point(double x, double y);
    void Display();
private:
	double m_x;
	double m_y;
};
Point::Point(double x, double y)
{
    
    
    m_x = x;
    m_y = y;
}
void Point::Display()
{
    
    
    cout << "(" << m_x << "," << m_y << ")" << endl;
}
int main()
{
    
    
    double x, y;
    cin >> x >> y;
    Point p1(x, y);
    p1.Display();
    return 0;
}

Point类02

定义一个Point类,数据成员包括私有数据成员为double类型的点坐标x,y;成员函数包括构造函数Point(用于实现对数据成员x,y的初始化)、成员函数Set(用于改变数据成员x、y的值)、成员函数Display(用于输出点坐标x、y,输出格式为点坐标用逗号分隔并半角圆括号括起来)。

//main函数如下(不得修改main函数):
int main()
{
    
    
       double x1,y1,x2,y2;
       cin>>x1>>y1;
       cin>>x2>>y2;
       Point p1(x1,y1);
       p1.Display();
       p1.Set(x2,y2);
       p1.Display();
       return 0;
}

Sample Input
10 25.5 5.5 20
Sample Output
(10,25.5)
(5.5,20)

#include<iostream>
using namespace std;
class Point
{
    
    
public:
    Point(double x, double y);
    void Set(double x, double y);
    void Display();
private:
    double m_x;
    double m_y;
};
Point::Point(double x, double y)
{
    
    
    m_x = x;
    m_y = y;
}
void Point::Set(double x, double y)
{
    
    
    m_x = x;
    m_y = y;
}
void Point::Display()
{
    
    
    cout << "(" << m_x << "," << m_y << ")" << endl;
}
int main()
{
    
    
    double x1, y1, x2, y2;
    cin >> x1 >> y1;
    cin >> x2 >> y2;
    Point p1(x1, y1);
    p1.Display();
    p1.Set(x2, y2);
    p1.Display();
    return 0;
}

Point类03

定义一个Point类,数据成员包括私有数据成员为double类型的点坐标x,y;成员函数包括构造函数Point(用于实现对数据成员x,y的初始化)、成员函数Set(用于改变数据成员x、y的值)、成员函数LeftMove(点坐标向左移动detax)、成员函数上移UpMove(点坐标上移detay)、成员函数Display(用于输出点坐标x、y,输出格式为点坐标用逗号分隔并半角圆括号括起来)。

//main函数如下(不得修改main函数):
int main()
{
    
    
       double x1,y1,x2,y2,dx,dy;
       cin>>x1>>y1;
       cin>>dx;
       cin>>dy;
       cin>>x2>>y2;
       Point p1;
       p1.Display();
       p1.Set(x1,y1);
       p1.Display();
       p1.LeftMove(dx);
       p1.Display();
       p1.UpMove(dy);
       p1.Display();
       Point p2(x2,y2);
       p2.Display();
       return 0;
}

Sample Input
10 25.5 5 10 5.5 20
Sample Output
(0,0)
(10,25.5)
(5,25.5)
(5,35.5)
(5.5,20)

#include<iostream>
using namespace std;
class Point
{
    
    
public:
    Point(double x=0, double y=0);
    void Set(double x, double y);
    void LeftMove(double dx);
    void UpMove(double dy);
    void Display();
private:
    double m_x;
    double m_y;
};
Point::Point(double x, double y)
{
    
    
    m_x = x;
    m_y = y;
}
void Point::Set(double x, double y)
{
    
    
    m_x = x;
    m_y = y;
}
void Point::LeftMove(double dx)
{
    
    
    m_x = m_x - dx;
}
void Point::UpMove(double dy)
{
    
    
    m_y = m_y + dy;
}
void Point::Display()
{
    
    
    cout << "(" << m_x << "," << m_y << ")" << endl;
}
int main()
{
    
    
    double x1, y1, x2, y2, dx, dy;
    cin >> x1 >> y1;
    cin >> dx;
    cin >> dy;
    cin >> x2 >> y2;
    Point p1;
    p1.Display();
    p1.Set(x1, y1);
    p1.Display();
    p1.LeftMove(dx);
    p1.Display();
    p1.UpMove(dy);
    p1.Display();
    Point p2(x2, y2);
    p2.Display();
    return 0;
}

Point类04

定义一个点类Point,数据成员为平面点坐标x,y,成员函数有:构造函数,函数display显示点信息,函数GetX,GetY分别获取私有成员x,y的值。编写一个普通函数,计算两点间距离,函数原型double Distance(Point &p1,Point &p2)。主函数中输入两个点信息,定义两个类对象,利用display显示各自的点信息,再利用Distance计算两点距离。
Sample Input
0 0 10 20
Sample Output
Point(0,0)
Point(10,20)
Distance:22.3607

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
    
    
public:
	Point(int x, int y);
	void Display();
	int GetX();
	int GetY();
private:
	int m_x;
	int m_y;
};
Point::Point(int x, int y)
{
    
    
	m_x = x;
	m_y = y;
}
void Point::Display()
{
    
    
	cout << "Point " << "(" << m_x << "," << m_y << ")" << endl;
}
int Point::GetX()
{
    
    
	return m_x;
}
int Point::GetY()
{
    
    
	return m_y;
}
double Display(Point& p1, Point& p2)
{
    
    
	double dx;
	double dy;
	dx = (p1.GetX() - p2.GetX()) * (p1.GetX() - p2.GetX());
	dy = (p1.GetY() - p2.GetY()) * (p1.GetY() - p2.GetY());
	return sqrt(dx + dy);
}
int main()
{
    
    
	int x1, y1, x2, y2;
	cin >> x1 >> y1 >> x2 >> y2;
	Point p1(x1, y1);
	p1.Display();
	Point p2(x2, y2);
	p2.Display();
	cout << "Distance:" << Display(p1, p2) << endl;
return 0;
}

Point类05

定义一个点类Point,数据成员为平面点坐标x,y,成员函数有:构造函数,函数display显示点信息,成员函数Distance实现计算两个点间距离。函数原型double Distance(const Point &p)。主函数中输入两个点信息,定义两个类对象,利用display显示各自的点信息,再利用Distance计算两点距离。
Sample Input
0 0 10 20
Sample Output
Point(0,0)
Point(10,20)
Distance:22.3607

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
    
    
public:
	Point(int x, int y);
	void Display();
	double Distance(const Point& p);
private:
	int m_x;
	int m_y;
};
Point::Point(int x, int y)
{
    
    
	m_x = x;
	m_y = y;
}
void Point::Display()
{
    
    
	cout << "Point " << "(" << m_x << "," << m_y << ")" << endl;
}
double Point::Distance(const Point& p)
{
    
    
	return sqrt((p.m_x - m_x) * (p.m_x - m_x) + (p.m_y - m_y) * (p.m_y - m_y));
}
int main()
{
    
    
	int x1, y1, x2, y2;
	cin >> x1 >> y1 >> x2 >> y2;
	Point p1(x1, y1);
	p1.Display();
	Point p2(x2,y2);
	p2.Display();
	cout << "Distance:" << p1.Distance(p2) << endl;
	return 0;
}

Point类06

定义一个点类Point,数据成员为平面点坐标x,y,成员函数有:构造函数,函数display显示点信息,利用友元函数Distance实现计算两个点间距离。函数原型double Distance(const Point &p1,const Point &p2)。主函数中输入两个点信息,定义两个类对象,利用display显示各自的点信息,再利用Distance计算两点距离。
Sample Input
0 0 10 20
Sample Output
Point(0,0)
Point(10,20)
Distance:22.3607

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
    
    
public:
	Point(double x, double y);
	void Display();
	friend double Distance(const Point& p1, const Point& p2);
private:
	double m_x;
	double m_y;
};
Point::Point(double x, double y)
{
    
    
	m_x = x;
	m_y = y;
}
void Point::Display()
{
    
    
	cout << "Point(" << m_x << "," << m_y << ")" << endl;
}
double Distance(const Point& p1, const Point& p2)
{
    
    
	double dx, dy;
	dx = (p1.m_x - p2.m_x) * (p1.m_x - p2.m_x);
	dy = (p1.m_y - p2.m_y) * (p1.m_y - p2.m_y);
	return sqrt(dx + dy);
}
int main()
{
    
    
	double x1, y1, x2, y2;
	cin >> x1 >>y1 >> x2 >> y2;
	Point p1(x1, y1);
	p1.Display();
	Point p2(x2, y2);
	p2.Display();
	cout << "Distance:" << Distance(p1, p2) << endl;
	return 0;
}

这六道题要用到类与对象中的封装友元函数等基础知识,适合初学类与对象这部分的码友进行练习。

猜你喜欢

转载自blog.csdn.net/Archie20/article/details/113714010