请根据以上要求,给出完整的C语言代码
时间: 2024-10-05 10:01:45 浏览: 36
方波(内含完整的C语言代码)
在C语言中,你可以使用`<math.h>`库来计算欧几里得距离并找到最短距离。这里提供一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 计算两点间的欧氏距离
double distance(int x1, int y1, int x2, int y2) {
return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}
int main() {
int t;
scanf("%d", &t); // 测试用例数量
while (t--) {
int n;
scanf("%d", &n);
// 定义两个数组存放A和B组的点
int A[n][2], B[n][2];
for (int i = 0; i < n; i++) {
scanf("%d %d", &A[i][0], &A[i][1]);
scanf("%d %d", &B[i][0], &B[i][1]);
}
double min_distance = INFINITY; // 初始化最短距离为无穷大
for (int i = 0; i < n; i++) { // 遍历A组
for (int j = 0; j < n; j++) { // 遍历B组
double temp_dist = distance(A[i][0], A[i][1], B[j][0], B[j][1]);
if (temp_dist < min_distance) {
min_distance = temp_dist;
}
}
}
printf("%.3f\n", min_distance); // 输出结果保留三位小数
}
return 0;
}
```
这个程序首先读取测试用例数量,然后循环处理每一个测试案例,计算A和B组中的每一对点之间的距离,并保存最小距离。最后,输出每个测试用例的结果。注意,`INFINITY`通常用于初始化较大数值,以便在后续比较中快速判断是否找到了更小的值。
阅读全文