这是个魔方矩阵问题,给你个答案:
把里面需要输入的地方改成你的宏定义就行了
#include
void main()
{ int a[15][15],i,j,k,m,n,p;
p=1;
while(p==1)
{
printf("Enter n (n is a odd number from 3 to 15):> ");
scanf("%d",&n);
if((n>=3)&&(n<=15)&&(n%2==1))
p=0;
}
for(i=0;i
j=n/2;
a[0][j]=1;
for(k=2;k<=n*n;k++)
{ i=i-1;
j=j+1;
if((i<0)&&(j>n-1))
{ i=i+2;
j=j-1;
}
else
{ if(i<0)
i=n-1;
if(j>n-1)
j=0;
}
if(a[i][j]==0)
a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}
printf("\n");
for(i=0;i
printf("\n");
}
}