螺旋数组,有一个小错误,请大侠帮忙!我已经标出来了!
#include<stdio.h>#include<stdlib.h>
int **Mke2DArray(int n,int m)
{
int i,**a=NULL;
a=(int **)malloc(sizeof(int*)*m);
if(a==NULL)
return a;
for(i=0;i<m;i++)
*(a+i)=(int *)malloc(sizeof(int)*n);
return a;
}
void Diliver2DArray(int **a,int m)
{
int i;
for(i=0;i<m;i++)
{
free(*(a+i));
a[i]=NULL;
}
free(a);
a=NULL;
}
int main( )
{
int i,j,a[100][100],m,n,k=1;
scanf("%d%d", &m,&n);//M行N列
Mke2DArray(n,m);
for(i=1;i<=n/2;++i)
{
for(j=i;j<=n-i;++j) // 上方
a[i][j]=k++;
for(j=i;j<=n-i;++j) // 右侧
a[j][n+1-i]=k++;
for(j=m-i+1;j>=i+1;j=j-1) // 下方
a[m+1-i][j]=k++;
for(j=m-i+1;j>=i+1;j=j-1) // 左侧
a[j][i]=k++;
}
if(m%2==1)
{
i=(m+1)/2;
a[i][i]=m*n-1;
}
for(i=1;i<=m;++i)
{
for(j=1;j<=n;++j)
printf("%d ",a[i][j]);
printf("\n");
}
Diliver2DArray(a,m);//@@@@@就是这一出有错
return 0;
}