其他分享
首页 > 其他分享> > 习题5-3 使用函数计算两点间的距离

习题5-3 使用函数计算两点间的距离

作者:互联网

本题要求实现一个函数,对给定平面任意两点坐标(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

结尾无空行

 以下是我的解题思路 

本题要求求两点坐标的距离,数学中求两点距离的公式为 d = \sqrt{(x_{2}-x_{1})^{2} + (y_{2}-y_{1})^{2}} ,可以看到,题目中的函数里定义了头文件 #include <math.h> ,则我们可以使用数学函数 sqrt() 来求根号,先来计算 (x_{2}-x_{1})^{2} + (y_{2}-y_{1})^{2} ,这里可以用次方的函数 pow函数 来计算。

函数原型:double pow(double x, double y)
功 能:计算 x^{y} 的值
返 回 值:计算结果
举例:

double a;
a = pow(3.14, 2); // 计算3.14的平方,并将结果保存在变量a中

但是本题只要求求平方,所以也可以采用连乘的形式,即(x_{2}-x_{1})*(x_{2}-x_{1}) + (y_{2}-y_{1})*(y_{2}-y_{1}) 。

具体代码如下

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;  //返回值
}

标签:x1,dist,函数,double,x2,两点,y1,习题,y2
来源: https://blog.csdn.net/nazonomaster/article/details/122287648