大地坐标与空间直角坐标的转换程序代码(16 页)Good is good, but better carries it.精益求精,善益求善。#include "stdio.h"#include "math.h"#include "stdlib.h"#include "iostream"#define PI 3.1415926535897323double a,b,c,e2,ep2;int main(){int m,n,t;double RAD(double d,double f,double m);void RBD(double hd);void BLH_XYZ();void XYZ_BLH();void B_ZS();void B_FS();void GUS_ZS();void GUS_FS();printf(" 大地测量学 \n"); sp1:printf("请选择功能:\n");printf("1.大地坐标系到大地空间直角坐标的转换\n");printf("2.大地空间直角坐标到大地坐标系的转换\n");printf("3.贝塞尔大地问题正算\n");printf("4.贝塞尔大地问题反算\n");printf("5.高斯投影正算\n");printf("6.高斯投影反算\n");printf("0.退出程序\n");scanf("%d",&m);if(m==0)exit(0); sp2:printf("请选择椭球参数(输入椭球序号):\n");printf("1.克拉索夫斯基椭球参数\n");printf("2.IUGG_1975 椭球参数\n");printf("3.CGCS_2000 椭球参数\n");printf("0.其他椭球参数(自行输入)\n");scanf("%d",&n);switch(n){ case 1:a=6378245.0;b=6356863.0188;c=6399698.9018;e2=0.00669342162297;ep2=0.00673852541468;break;case 2:a=6378140.0;b=6356755.2882;c=6399596.6520;e2=0.00669438499959;ep2=0.00673950181947;break;case 3:a=6378137.0;b=6356752.3141;c=6399593.6259;e2=0.00669438002290;ep2=0.00673949677547;break;case 0:{ printf("请输入椭球参数:\n"); printf("长半径 a=");scanf("%lf",&a); printf("短半径 b=");scanf("%lf",&b); c=a*a/b; ep2=(a*a-b*b)/(b*b); e2=(a*a-b*b)/(a*a); break; }default:printf("\n\n 输入错误!\n 请重新输入!\n\n");goto sp2 ;}while(1){switch(m){ case 1:BLH_XYZ();break;case 2:XYZ_BLH();break;case 3:B_ZS();break;case 4:B_FS();break;case 5:GUS_ZS();break;case 6:GUS_FS();break;default:printf("\n\n 输入错误!\n 请重新输入!\n\n");goto sp1 ;}printf("是否继续进行此功能计算? \n\n");printf("( 若继续进行此功能计算,则输入 1;\n 若选择其他功能进行计算,则输入 2;\n 若退出, 则输入 0. )\n");scanf("%d",&t);switch(t){ case 1:break;case 2:goto sp1;case 0:exit(0);}}}double RAD(double d,double f,double m){do...