代码描述:
#include#include #include #include struct Coordinator{ int x; int y; }; typedef struct City{ char name[5]; struct Coordinator place; }Point; void myinprint(FILE *p,Point *q,int n); void myoutprint(Point *q,int n); Point* readfile(); double distance(Point *city,char a[],char b[],int n); void closest(Point city[]); double luJin(Point city[],char array[],int n); void disAll(Point city[]); int n;//判断出城市个数; int main() { Point *point = readfile(); char array[6] = "ABCD"; char a[5],b[5]; printf("n求距离 请输入一对顶点如(A B):"); scanf("%s %s",a,b); printf("%s和%s的距离是:%.3lf",a,b,distance(point,a,b,n)); closest(point);//求短距离 luJin(point,array,n); disAll(point); return 0; } Point* readfile(){ FILE *fp = NULL;//读文件必须首先建立一个FILE 指针; fp = fopen("test1.txt","r");//打开一个文件 传入的参数为文件路径与名字,与文件操作方式; fscanf(fp,"%d",&n);//通过函数fscanf进行存取 Point *p = (Point*)malloc(n*sizeof(Point));//申请内存;p也为数组的首地址,n就为数组的大小 printf("有%d个城市n",n); myinprint(fp,p,n); myoutprint(p,n); // fclose(fp);//打开一个文件操作完后就得关闭这个文件 // free(p);//释放内存 return p; } void myinprint(FILE *p,Point *q,int n){//传入Point 数组 以及 文件大小 int i; for(i=0;i name,&q->place.x,&q->place.y); } void myoutprint(Point *q,int n){ int i; for(i=0;i name,q->place.x,q->place.y); } double distance(Point city[],char a[],char b[],int n){ int i; int x,x1; int y,y1; double c; for(i=0;i


