已知地球的赤道半径为6378.137千米,并已知赤道上任意两点的经度(单位为度),编写程序计算这两点之间的球面距离是多少千米。要求所有的实数使用double类型,圆周率的近似值取3.141592653589793。 提示:可以用正负来区分东经、西经,即东经为正,西经为负。 输入格式: 在一行中输入两个位于区间[-180,180]内代表经度的实数,以空格分隔。 输出格式: 输出球面距离的值,保留3位小数,最后换行。 输入样例: -96.3 100.6 输出样例: 18156.209
时间: 2024-03-23 18:39:01 浏览: 25
以下是Python代码实现:
```python
import math
def to_radians(degrees):
return degrees * math.pi / 180
def distance_on_sphere(lat1, lon1, lat2, lon2):
R = 6378.137 # 地球赤道半径,单位为千米
lat1 = to_radians(lat1)
lon1 = to_radians(lon1)
lat2 = to_radians(lat2)
lon2 = to_radians(lon2)
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
return R * c
lon1, lon2 = map(float, input().split())
distance = distance_on_sphere(0, lon1, 0, lon2)
print("{:.3f}".format(distance))
```
代码说明:
1. 首先导入math模块,用于计算三角函数。
2. 定义一个函数to_radians用于将角度转化为弧度。
3. 定义一个函数distance_on_sphere用于计算两点之间的球面距离,其中R为地球赤道半径,lat1、lon1、lat2、lon2为两点的纬度和经度。
4. 在主程序中,使用map函数将输入的字符串转化为浮点数,然后调用distance_on_sphere函数计算球面距离。
5. 使用format函数将球面距离保留3位小数并输出,最后加上换行符。