#include<stdio.h>
#include<stdlib.h>
int main()
{
int **a,i,j,n;
printf("input n:");
scanf("%d",&n);
a=(int**)malloc(n*sizeof(int*));
for(i=1;i<=n;i++)
a[i]=(int*)malloc(n*sizeof(int));
for(i=1;i<=(n+1)/2;i++)
{
for(j=i;j<=n+1-i;j++)
{
a[i][j]=i;
a[n+1-i][j]=i;
}
for(j=i+1;j>=n-i;j--)
{
a[j][n+1-i]=i;
a[j][i]=i;
}
}
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");}
}
1 1 1 1 1
1 2 2 2 1
1 2 0 2 1
1 2 2 2 1
1 1 1 1 1
因为你没有初始化数组,如果像我这样定义数组的话,最终会输出
input n:5