例如:1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
參考答案:int n为阶数,具体打印格式你可以按需要改
void op(int n)
{
int i=0,j=0;
int*(*p);
int temp = 1;
int t;
p = (int**)malloc(sizeof(int*)*n);
for (t=0;t<n;t++)
{
p[t]=(int*)malloc(sizeof(int)*n);
}
for (t=0;t<((float)n/2);t++)
{
for (;j<n-t;j++)
p[i][j] = temp++;
j--;
i++;
for(;i<n-t;i++)
p[i][j] = temp++;
i--;
j--;
for(;j>=t;j--)
p[i][j] = temp++;
j++;
i--;
for(;i>t;i--)
p[i][j] = temp++;
j++;
i++;
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf(\"%3d \",p[i][j]);
}
printf(\"\\n\");
}
}