实验13-5:求相距最近的两个点 输入五个点(float型),输出哪两个点间的距离最近。 输入输出格式参见样例。 【输入形式】 float型五个点的坐标 【输出形式】 最近的两个点坐标及距离 【样例输入】 1.5,3 4,2.5 2,1 3,1.5 6,5 【样例输出】 点(2,1)和点(3,1.5)的距离最近,距离为 1.12
时间: 2024-03-26 13:34:33 浏览: 135
php如何计算两坐标点之间的距离
以下是使用 C 语言编写的程序,实现了求解相距最近的两个点的功能。
```c
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 5
// 计算两点距离
double distance(double x1, double y1, double x2, double y2) {
return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
}
int main() {
double x[MAX_POINTS], y[MAX_POINTS];
double min_distance = INFINITY;
int min_i, min_j;
// 读入五个点坐标
for (int i = 0; i < MAX_POINTS; i++) {
scanf("%lf,%lf", &x[i], &y[i]);
}
// 计算最小距离
for (int i = 0; i < MAX_POINTS - 1; i++) {
for (int j = i + 1; j < MAX_POINTS; j++) {
double d = distance(x[i], y[i], x[j], y[j]);
if (d < min_distance) {
min_distance = d;
min_i = i;
min_j = j;
}
}
}
// 输出结果
printf("点(%.1lf,%.1lf)和点(%.1lf,%.1lf)的距离最近,距离为 %.2lf\n",
x[min_i], y[min_i], x[min_j], y[min_j], min_distance);
return 0;
}
```
程序读入五个点的坐标,使用两重循环计算每对点之间的距离,并记录最小距离及其对应的两个点的下标。由于 C 语言没有提供 `pow` 函数和 `INFINITY` 常量,因此需要使用 `math.h` 头文件,并编写自定义计算平方的函数和定义无穷大的常量。最后输出结果即可。
阅读全文