我这个代码相求原子间距离 但是程序在输入一半就自动停止了 请问有什么问题呢?

真情实感一米八:
#include
#include
double f(double a);
double *distance(double xx[],double a,double x);
int main()
{
int i,j,k,s,g;
int r[5];
double a,b,c,x,y,z,*p,*m,*n,*l,*o,*q;
double d[5],xx[100],yy[100],zz[100],ll[100],oo[100],qq[100],ss[100];
p=xx,m=yy,n=zz,l=ll,o=oo,q=qq;
printf("Hello! This is a C program.\n");
printf("本程序是完成建立晶体模型及晶体原子间近邻统计功能\n");
do
{
printf("请先输入1建立晶体模型:\n");
scanf("%d",&s);
switch(s)
{
case 1:printf("请输入晶体结构模型的大小:\n");
scanf("%lf%lf%lf",&a,&b,&c);
p=f(a);
m=f(b);
n=f(c);
for(i=0;i<(2*a+1);i++)
xx[i]=
(p+i);
for(j=0;j<(2*b+1);j++)
yy[j]=*(m+j);
for(k=0;k<(2*c+1);k++)
zz[k]=*(n+k);
printf("请选择是否输出原子的坐标值:\n(1代表是,0代表否)\n");
scanf("%d",&g);
if(g)
{
for(i=0;i<(2*a+1);i++)
for(j=0;j<(2*b+1);j++)
for(k=0;k<(2*c+1);k++)
printf("(%.2f,%.2f,%.2f)\t",xx[i],yy[j],zz[k]);
}
break;
case 0:puts("退出!");break;
default:printf("输入错误请重新输入");
}
printf("\n\n请输入2完成原子间紧邻统计\n");
scanf("%d",&s);
switch(s)
{
case 2:printf("请输入晶体内某一原子坐标(坐标保留两位小数)\n");
scanf("%lf%lf%lf",&x,&y,&z);
int h=0,w=0,g=0;
l=ll,o=oo,q=qq;
double x1,y1,z1;
for(i=0;i<(2*a+1);i++)
{
x1=xx[i]-x;
(l+h)=pow((x1),2);
h++;
}
for(i=0;i<(2*a+1);i++)

ll[i]=
(l+i);

            for(j=0;j<(2*b+1);j++)
           {
            y1=yy[j]-y;
            *(o+w)=pow((y1),2);
            w++;
            } 
            for(j=0;j<(2*b+1);j++)      
            oo[j]=*(o+j);

            for(k=0;k<(2*c+1);k++)
           {
            z1=zz[k]-z;
            *(q+g)=pow((z1),2);
            g++;
            } 
            for(j=0;j<(2*b+1);j++)      
            qq[k]=*(q+k);
            int u=0;
           for(i=0;i<(2*a+1);i++)
           for(j=0;j<(2*b+1);j++)
           for(k=0;k<(2*c+1);k++)
           {
             ss[u]=sqrt(ll[i]+oo[j]+qq[k]);
             printf("%4.2f\t",ss[u]);
             u++;
           } 

d[0]=ss[0];
i=1;
for(j=1;i<5;j++)
{
if(ss[j]!=ss[j-1])
{
d[i]=ss[j];
i++;
}
}
i=0,j=0;
while(i<5)
{
s=0;
if(d[j]=d[j+1])
{
s++;
j++;
}
else
{
r[i]=s;
i++;
}
}

printf("\n\n请输入3完成原子间紧邻距离统计\n");
printf("\n\n请输入4完成原子间紧邻距离及该临近原子数目统计\n");
scanf("%d",&s);
switch(s)
{
case 3:printf("原子间紧邻距离分别为:\n");
for(i=0;i<5;i++)
printf("%4d",d[i]);
break;
case 4:printf("原子间紧邻距离及该临近原子数目分别为:\n");
for(i=0;i<5;i++)
printf("原子距离:%f\t原子数目:%d\n",d[i],r[i]);
break;
case 0:puts("退出!");break;
default:printf("输入错误请重新输入");
}
break;

    }
}while(s);  

}
double f(double a)
{
int i;
double *p;
*(p+0)=0;
for(i=1;i<(2*a+1);i++)
*(p+i)=
(p+i-1)+0.5;
return p;

}

真情实感一米八:
[图片]

https://blog.csdn.net/wwxy1995/article/details/100785832