题目要求示例
6-4 计算两点之间距离(友元函数)
分数 10
全屏浏览
切换布局
作者 黄万丽
单位 曲阜师范大学
现有一个类Point表示二维空间中的点,包含私有数据成员double x和double y,x表示该点的x坐标,y表示该点的y坐标。要求编写一个友元函数,输出两点之间的距离。
输入说明:
每一行四个数值,前两个数是第一个坐标点的x坐标和y坐标,后两个数是第二个坐标点的x坐标和y坐标。当输入四个0时表示输入结束。
输出说明:
输出两点距离必须保留两位小数。函数接口定义:
输出两个点p1和p2之间的距离,要求输出结果必须保留两位小数。 void pointDis(Point& p1, Point& p2);
其中
p1
和p2
都是用户传入的参数。函数须计算p1和p2的距离并输出,要求输出结果必须保留两位小数。裁判测试程序样例:
#include<iostream> #include<cmath> #include<iomanip> using namespace std; class Point { public: Point() { } Point(double px,double py) { x=px; y=py; } friend void pointDis(Point &p1,Point &p2); private: double x; double y; }; /* 请在这里填写答案 */ int main() { double x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; Point p1,p2; while(!(x1==0&&y1==0&&x2==0&&y2==0)) { p1=Point(x1,y1); p2=Point(x2,y2); pointDis(p1,p2); cin>>x1>>y1>>x2>>y2; } return 0; }
输入样例:
1.5 3.8 4.2 8.5 1 3 4 7 0 0 0 0
输出样例:
5.42 5.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
其实考察的就是C++中保留小数位数的、可以直接用C语言的printf来保留,也可以调用库函数来,题目在开头引入了头文件,表示建议你使用第二种方法进行代码的书写
// 输出两个点p1和p2之间的距离,要求输出结果必须保留两位小数。
void pointDis(Point& p1, Point& p2)
{
double m = sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2));
// cout<<m<<endl;
// printf("%.2f\n", m);
std::cout << std::fixed << std::setprecision(2) << m << std::endl;
}
因为在搜索的过程中没找到该题目的答案。所以写下来以便大家面向结果编程更加方便
以上代码仅限个人思路,如有建议,欢迎大家学习交流