求高手帮我做一下这道c语言编程题目
1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。cyh19921118@126.com谢...
1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。
cyh19921118@126.com 谢谢啦、! 展开
cyh19921118@126.com 谢谢啦、! 展开
3个回答
展开全部
#include <stdio.h>
#include <math.h>
#define PI 3.14 //圆周率
#define RAD 6371 //地球半径
int main()
{
double peri; //小圆周长
double rad; //小圆半径
double length;
double longitudeA , longitudeB; //A,B经度
double latitude; //A,B纬度
double temp;
printf("请输入A和B的经度:\n");
scanf("%lf%lf",&longitudeA,&longitudeB);
printf("请输入A和B的纬度:\n");
scanf("%lf",&latitude);
rad = cos(latitude) * RAD;
peri = 2*PI*rad;
temp = longitudeA - longitudeB;
length = (temp >0 ? temp : (temp*-1))/360 * peri;
printf("A和B的距离是:%f千米\n",length);
return 0;
}
#include <math.h>
#define PI 3.14 //圆周率
#define RAD 6371 //地球半径
int main()
{
double peri; //小圆周长
double rad; //小圆半径
double length;
double longitudeA , longitudeB; //A,B经度
double latitude; //A,B纬度
double temp;
printf("请输入A和B的经度:\n");
scanf("%lf%lf",&longitudeA,&longitudeB);
printf("请输入A和B的纬度:\n");
scanf("%lf",&latitude);
rad = cos(latitude) * RAD;
peri = 2*PI*rad;
temp = longitudeA - longitudeB;
length = (temp >0 ? temp : (temp*-1))/360 * peri;
printf("A和B的距离是:%f千米\n",length);
return 0;
}
展开全部
#define RADII_OF_EARTH (6371)
#define PIE (3.1415926)
#define TRANSLATE(a) ((a/360)*2*PIE)
float GetSurfaceDistance(float fFirstLong, float fSecondLong, float fLat)
{
float fSurDistce = -1.0;
float fTmp = -1.0;
fFirstLong = TRANSLATE(fFirstLong);
fSecondLong = TRANSLATE(fSecondLong);
fLat = TRANSLATE(fLat);
fTmp = (fFirstLong > fSecondLong)?(fFirstLong - fSecondLong): (fSecondLong - fFirstLong);
fTmp = fTmp/2;
fSurDistce = 2 * RADII_OF_EARTH * asin((cos(fLat)*sin(fTmp)));
return fSurDistce;
}
//输入的参数为第一个城市的经度,第二个城市的经度,及他们的纬度
int main(char argc, char *argv[])
{
float fDistance = 0.0;
if (argc != 4)
{
printf("argc error!\r\n");
return -1;
}
fDistance = GetSurfaceDistance(atoi(argv[1]),atoi(argv[2]),atoi(argv[3]));
printf("The SurfaceDistance between A and B is: %f\r\n", fDistance);
return 0;
}
#define PIE (3.1415926)
#define TRANSLATE(a) ((a/360)*2*PIE)
float GetSurfaceDistance(float fFirstLong, float fSecondLong, float fLat)
{
float fSurDistce = -1.0;
float fTmp = -1.0;
fFirstLong = TRANSLATE(fFirstLong);
fSecondLong = TRANSLATE(fSecondLong);
fLat = TRANSLATE(fLat);
fTmp = (fFirstLong > fSecondLong)?(fFirstLong - fSecondLong): (fSecondLong - fFirstLong);
fTmp = fTmp/2;
fSurDistce = 2 * RADII_OF_EARTH * asin((cos(fLat)*sin(fTmp)));
return fSurDistce;
}
//输入的参数为第一个城市的经度,第二个城市的经度,及他们的纬度
int main(char argc, char *argv[])
{
float fDistance = 0.0;
if (argc != 4)
{
printf("argc error!\r\n");
return -1;
}
fDistance = GetSurfaceDistance(atoi(argv[1]),atoi(argv[2]),atoi(argv[3]));
printf("The SurfaceDistance between A and B is: %f\r\n", fDistance);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(两个城市的经度之差/360° )X 周长=A与B的距离。因为出于同意维度上,所以AB不可能出现在地球仪的中心轴两边,可定在同一边,这就好算了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询