本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离。
函数接口定义:
double dist( double x1, double y1, double x2, double y2 );
其中用户传入的参数为平面上两个点的坐标(x1
, y1
)和(x2
, y2
),函数dist
应返回两点间的距离。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
double dist( double x1, double y1, double x2, double y2 );
int main()
{
double x1, y1, x2, y2;
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
printf("dist = %.2f\n", dist(x1, y1, x2, y2));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
10 10 200 100
结尾无空行
输出样例:
dist = 210.24
结尾无空行
以下是我的解题思路
本题要求求两点坐标的距离,数学中求两点距离的公式为 ,可以看到,题目中的函数里定义了头文件 #include <math.h> ,则我们可以使用数学函数 sqrt() 来求根号,先来计算 ,这里可以用次方的函数 pow函数 来计算。
函数原型:double pow(double x, double y)
功 能:计算 的值
返 回 值:计算结果
举例:
double a;
a = pow(3.14, 2); // 计算3.14的平方,并将结果保存在变量a中
但是本题只要求求平方,所以也可以采用连乘的形式,即 。
具体代码如下
double dist( double x1, double y1, double x2, double y2 )
{
double dis;
dis = (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1); //先求平方的和
dis = sqrt(dis); //再求根号
return dis; //返回值
}