这个代码为什么报错啊

img


谁能帮我看看这段代码为什么错

变量名不要跟类型名重复,把变量名换一下。
今天好几个人是这个题目了,你参考下面的代码:

 
#include <stdio.h>
#include <math.h>
#include <string.h> 
#include<stdlib.h>
struct ZuoBiao{
    int x;
    int y;
};
typedef struct City{
    char name[20];
    struct ZuoBiao place;  //结构体的嵌套 
}Point;
int n;
void init(FILE *p,Point *q){//传入Point 数组 以及 文件大小 
    int i;
    for(i=0;i<n;i++,q++)
        fscanf(p,"%s%d%d",q->name,&q->place.x,&q->place.y); // MOD 这里q->name前不需要&
}
void display(Point *q){
    int i;
    for(i=0;i<n;i++,q++)
        printf("%s\t%d\t%d\n",q->name,q->place.x,q->place.y);
}
double juli(Point city[],int i,int j){
    int x1=0,x2=0; //MOD 这里需要初始化
    int y1=0,y2=0; //MOD 这里需要初始化
    double c;      //c为两点间的距离 
    x1 = city[i].place.x;
    y1 = city[i].place.y;
    x2 = city[j].place.x;
    y2 = city[j].place.y;
    c = sqrt((double)((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)));   //sqrt函数是平方根函数; 
    return c;
}
Point* file(){
    FILE *fp = NULL;//读文件必须首先建立一个FILE 指针; 
    fp = fopen("test01.txt","r");//打开一个文件 传入的参数为文件路径与名字,与文件操作方式; 
    fscanf(fp,"%d",&n);//通过函数fscanf进行存取 
    Point *p = (Point*)malloc(n*sizeof(Point));//申请内存;p也为数组的首地址,n就为数组的大小  
    printf("%d\n",n); 
    init(fp,p);
    display(p);
    return p;
}
void minJuLi(Point city[]){
    int i,j;
    double MIN;    
    //    double MIN = juli(city,city[i].name,city[j].name,n); 
    double c = 0;
    char M[10000],N[10000];
    MIN = juli(city,0,1); 
    strcpy(M,city[0].name);  //字符串的拷贝 
    strcpy(N,city[1].name);
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            c = juli(city,i,j);
            if(c<MIN){
                MIN = c;
                strcpy(M,city[i].name);  //字符串的拷贝 
                strcpy(N,city[j].name);
            }
        }
    }
    printf("\n");
    printf("最近的两个坐标是:%s和%s的距离是:%.3f",M,N,MIN);
}
int main() {
    Point *point = file();
    char a[1000],b[1000];
    int i,ma=-1,mb=-1;
    printf("输入要计算距离的两个城市:(例如:A B)\n");
    scanf("%s %s",&a,&b);
    printf("距离最近的两个城市信息如下:\n");
    for(i=0;i<n;i++)
    {
        if(strcmp(point[i].name,a) == 0)
        {
            if (ma == -1)
            {
                ma = i; //只记录第一个点
            }
        }
        if(strcmp(point[i].name,b) == 0)
        {
            if (mb == -1)
            {
                mb = i; //只记录第一个点
            }
        }
    }
    if(ma != -1 && mb != -1)
        printf("%s和%s的距离是:%.3lf",a,b,juli(point,ma,mb));
    minJuLi(point);//求短距离 
    return 0;
}