写一个C语言程序求地球上两点的大圆弧距离
时间: 2024-09-28 17:12:21 浏览: 20
在C语言中计算地球两点之间的大圆弧距离,通常需要使用球面三角学公式。其中最常用的库函数是Haversine公式,它考虑了地球的平均半径(约6371公里)。以下是一个简单的示例程序,用于计算两个经度和纬度的点之间的距离:
```c
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371.0
double toRadians(double degrees) {
return degrees * M_PI / 180.0;
}
double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
double a = sin(dLat / 2) * sin(dLat / 2) + cos(toRadians(lat1)) * cos(toRadians(lat2)) * sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return EARTH_RADIUS * c;
}
int main() {
double lat1, lon1, lat2, lon2;
printf("请输入第一个点的经纬度 (度): ");
scanf("%lf %lf", &lat1, &lon1);
printf("请输入第二个点的经纬度 (度): ");
scanf("%lf %lf", &lat2, &lon2);
double distance = haversine(lat1, lon1, lat2, lon2);
printf("两点之间的大圆弧距离 (公里): %.2f\n", distance);
return 0;
}
```
当你运行这个程序时,它会提示用户输入两个地点的经纬度,然后计算并输出它们之间的大圆弧距离。