根据你的题目写的
#include <iostream>
#include <string>
using namespace std;
#define EARTH_RADIUS 6371.393
#define PI 3.14159
int main(int argc,char ** argv)
{
x05while(1)
x05{
x05x05char szInput[128];
x05x05string strInput;
x05x05string strTmp;
x05x05char szTmp[128];
x05x05string::size_type Index;
x05x05float LatLongitude[3]={0};x05//经纬度
x05x05float Radius;
x05x05float ArcLen;x05x05//弧长
x05x05float ChordLen;x05x05//弦长
x05x05float LonDiff;x05//圆心角
x05x05int i=0;
x05x05cout<<"-----------------------------------------------"<<endl;
x05x05cout<<"请输入经纬度"<<endl;
x05x05cin.clear();
x05x05cin.sync();
x05x05cin.get(szInput,sizeof(szInput));
x05x05strInput=szInput;
x05x05while((Index=strInput.find(" ")) != string::npos)
x05x05{
x05x05x05strTmp=strInput.substr(0,Index);
x05x05x05_snprintf(szTmp,sizeof(szTmp),"%s",strTmp.c_str());
x05x05x05sscanf(szTmp,"%f",&(LatLongitude[i]));
x05x05x05strInput=strInput.substr(Index+1);
x05x05x05i++;
x05x05}
x05x05_snprintf(szTmp,sizeof(szTmp),"%s",strInput.c_str());
x05x05sscanf(szTmp,"%f",&(LatLongitude[i]));
x05x05if(LatLongitude[0]>90 || LatLongitude[0]<-90)
x05x05{
x05x05x05cout<<"输入纬度有误"<<endl;
x05x05x05continue;
x05x05}
x05x05if(LatLongitude[1]<-180 || LatLongitude[1]>180 || LatLongitude[2]<-180 || LatLongitude[2]>180)
x05x05{
x05x05x05cout<<"输入经度有误"<<endl;
x05x05x05continue;
x05x05}
x05x05Radius=EARTH_RADIUS*sin((90-LatLongitude[0])/180*PI);
x05x05if(LatLongitude[2]>LatLongitude[1])
x05x05{
x05x05x05LonDiff=LatLongitude[2]-LatLongitude[1];
x05x05}
x05x05else
x05x05{
x05x05x05LonDiff=LatLongitude[1]-LatLongitude[2];
x05x05}x05
x05x05if(LonDiff>180)
x05x05{
x05x05x05LonDiff=360-LonDiff;
x05x05}
x05x05ChordLen=Radius*sin(LonDiff/2/180*PI)*2;
x05x05ArcLen=2*Radius*PI*(LonDiff/360);
x05x05cout<<"两点之间的弦长:"<<ChordLen<<"千米"<<endl;
x05x05cout<<"弦长所对应的圆心角:"<<LonDiff<<"度"<<endl;
x05x05cout<<"两点之间的劣弧长:"<<ArcLen<<"千米"<<endl;
x05}
x05
x05return 0;
}
运行