C语言实现经纬度的转换

Python020

C语言实现经纬度的转换,第1张

办法很多,三维字符数组,指针字符数组都可以,分别保存字符串到数组元素,最后以%s输出即可。

我来写个最简单的

#include "stdafx.h"

#include "stdlib.h"

#include "string.h"

void explain_NS(char * str)

{

char tmp_ca[30] = ""

if(str[0] == 'N')

strcpy(tmp_ca,"北纬")

else

strcpy(tmp_ca,"南纬")

char *p = tmp_ca

while(*p) p++

strncpy(p, str+1, 2)

p += 2

*p = 176

p ++

strncpy(p,str+3,2)

p += 2

*p = 39

p++

strncpy(p, str+6,5)

p += 5

*p = 34

printf("%s\n",tmp_ca)

}

void explain_EW(char * str)

{

char tmp_ca[30] = ""

if(str[0] == 'E')

strcpy(tmp_ca,"东经")

else

strcpy(tmp_ca,"西经")

char *p = tmp_ca

while(*p) p++

strncpy(p, str+1, 3)

p += 3

*p = 176

p ++

strncpy(p,str+4,2)

p += 2

*p = 39

p++

strncpy(p, str+7,5)

p += 5

*p = 34

printf("%s\n",tmp_ca)

}

int _tmain(int argc, _TCHAR* argv[])

{

char ca[30] = "N3018.93661"

char cb[30] = "E12022.88281"

explain_NS(ca)

explain_EW(cb)

system("pause")

return 0

}

代码如下:

#include<stdio.h>

#define N 10

typedef struct _Coordinate

{

    double longitude//经度

    double latitude//纬度

}Coordinate

Coordinate avg(Coordinate arr[], int n){

    double lon = 0

    double lat = 0

    for (int i = 0 i < n i++){

        lon += arr[i].longitude

        lat += arr[i].latitude

    }

    lon /= n

    lat /= n

    return{ lon, lat }

}

int main(){

    Coordinate arr[N] = {

        { 1, 1 },

        { 2, 3 },

        { 3, 1 },

        { 4, 3 },

        { 5, 1 },

        { 6, 3 },

        { 7, 1 },

        { 8, 3 },

        { 9, 1 },

        { 10, 3 },

    }

    Coordinate myavg = avg(arr, N)

    printf("平均值为: 经度=>%.3f,纬度=>%.3f\n", myavg.longitude, myavg.latitude)

    getchar()

    return 0

}

运行结果如下:

希望对你有帮助~

#include<stdio.h>

#include<math.h>

int main(void)

{

float r, w, j, pi//r表示半径,w表示纬度,j表示经度差,纬度和经度的单位都是度,pi表示圆周率

pi=2.0*asin(1.0)

printf("请输入地球半径:r= ")

scanf("%f",&r)

printf("请输入纬度 w= ")

scanf("%f",&w)

printf("请输入两个地点的经度差 j= ")

scanf("%f",&j)

printf("这两个地方的距离里为: %lf\n",r*sin( (90.0-w)/180.0*pi )*( j/180.0*pi ) )

}