平面点距离的升序排列

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图 #include<stdio.h>

typedef struct
{
int x;
int y;
int dist;
}point;
void intput(point *a, int n);
void paixv(point *a,int n);
void output(point *a,int n);
int main()
{
int n;
scanf("%d",&n);
point a[100];
intput(a,n);
paixv(a,n);
output(a,n);
return 0;

}
void intput(point a, int n)
{
point b;
b=a+n;
for(;a<b;a++)
{
scanf("%d%d",&a->x,&a->y);
a->dist=a->x
a->x+a->y
a->y;
}

}
void paixv(point *a,int n)
{

point *c=n+a;
point *b=n+a-1;
for(;a<b;a++)
{
    for(point *j=a+1;j<c;j++)//指针偏移量法咋弄呀
    {
        if(j->dist>(j+1)->dist)
        {
            point c;
            c=*(j+1);
            *(j+1)=*j;
            *j=c;
            
        }
    }
    
}

}
void output(point *a,int n)
{
point *q=a+n;
for(;a<q;a++)
{
printf("(%d,%d)",a->x,a->y);
printf("\n");
}
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果