请问这个求自守数的代码这样写有什么问题吗,为什么无法正常运行

#include <stdio.h>
#include <math.h>
double d(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int n;
scanf("%d",&n);
double a[n][2];
double s=0.0;
for(int i=0;i<n;i++)
{
scanf("%lf %lf",&a[i][0],&a[i][1]);
}
if(n==1)
{
printf("0.00");
}
else if(n==2)
{
printf("%.2f",d(a[0][0],a[0][1],a[1][0],a[1][1]));
}
else
{
for(int i=0;i<n;i++)
{
int j=(i+1)%n;
s=s+d(a[i][0],a[i][1],a[j][0],a[j][1]);
}
printf("%.2f",s);
}
return 0;
}