题目要求
定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数。定义一个函数Distance(), 用于求两点之间的距离。
输入格式:
输入有两行:
第一行是第一个点的x坐标和y坐标;
第二行是第二个点的x坐标和y坐标。
输出格式:
输出两个点之间的距离,保留两位小数。
输入样例:
0 9
3 -4
输出样例:
13.34
解题思路
公有成员函数 distance(),用于计算当前点对象和另外一个点对象之间的距离。
读入两个点的横纵坐标,并使用这些坐标创建了两个 Point 对象 p1 和 p2。接着,调用 p1.distance(p2)
计算 p1 和 p2 之间的距离。
最后使用 cout 输出距离,并使用 fixed 和 setprecision 控制输出格式,保留两位小数。
代码
#include <iostream>
#include <cmath>
#include <iomanip> // 用于控制输出格式
using namespace std;
class Point {
private:
double x, y;
public:
Point(double x = 0, double y = 0) {
this->x = x;
this->y = y;
}
double getX() const {
return x;
}
double getY() const {
return y;
}
double distance(const Point& p) const {
double dx = x - p.x;
double dy = y - p.y;
return sqrt(dx * dx + dy * dy);
}
};
int main() {
double x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
Point p1(x1, y1), p2(x2, y2);
double dist = p1.distance(p2);
cout << fixed << setprecision(2) << dist << endl;
return 0;
}
getX()函数
getX()
函数一个访问器(getter),用于获取 Point
类的私有变量 x
的值。其定义中使用了 const
关键字,表示这个成员函数是一个只读函数,即它不允许修改类的成员变量。
double getX() const {
return x;
}
double distance(const Point& p) const {
double dx = x - p.x;
double dy = y - p.y;
return sqrt(dx * dx + dy * dy);
}
在这个distance函数定义中,我们同时使用了两个 const
关键字:
distance()
函数的末尾加上了一个const
关键字,表明该成员函数是一个只读函数,不会修改任何数据成员。p
参数前面加上了一个const
关键字,表示p
是一个常量引用,即在函数内部不会修改另外一个点对象的值。