是螺旋数字方阵吧,是个顺时针的.很久前写过个
#include <stdio.h>
#include <stdlib.h>
int movei[4]={1,0,-1,0};
int movej[4]={0,1,0,-1};
int print(int*,int);
int clock(int,int *);
int print(int *pa,int n){
int i,j;
for(i=0;i<=n-1;i++){
for(j=0;j<=n-1;j++)
printf("%4d",*(pa+i*n+j));
printf("\n");
}
printf("\n");
return 0;
}
int clock(int n,int *a){
int i=0,j=0,t=1,x1=n,y1=n,x2=-1,y2=0,direct=1;
while(t<=n*n){
*(a+i*n+j)=t++;
i+=movei[direct];
j+=movej[direct];
if(j==x1&&i==y2){
j--;
i++;
direct=0;
x1--;
continue;
}
if(j==x1&&i==y1){
j--;
i--;
y1--;
direct=3;
continue;
}
if(j==x2&&i==y1){
j++;
i--;
x2++;
direct=2;
continue;
}
if(j==x2&&i==y2){
i++;
j++;
y2++;
direct=1;
}
}
return 0;
}
int main()
{
int a[900]={0},n;
scanf("%d",&n);
clock(n,&a[0]);
print(&a[0],n);
system("PAUSE");
return 0;
}