/*
3阶魔法阵:
2 9 4 sum行=15
3 5 7 sum列=15
6 1 8 sum对角=15
下面计算4阶魔法阵
*/
#include
int main()
{
int n=4;// scanf("%d",&n);
int m=n*n;////////////////////////////魔方阶数
int z,x,c,v,b1,b2;//////////循环
int a[17]={0};///////萝卜坑
int i=n+1,j=n+1,w[i][j];////////////////////////////二维数组,魔方阵
//
i=0;j=0;
for(z=1;z<=m;z++)
{
a[z]++;
if(z==1) a[z]--;//............................特例排除
if(a[z]==0)
{
a[z]++;
i++;
//......................................确定二维数组行标
j++;w[i][j]=z;
for(x=1;x<=m;x++)
{
if(a[x]==0)
{
a[x]++;
j++;w[i][j]=x;
for(c=1;c<=m;c++)
{
if(a[c]==0)
{
a[c]++;
j++;w[i][j]=c;
for(v=1;v<=m;v++)
{
if(a[v]==0)
{
a[v]++;
j++;w[i][j]=v;
//......................................二维数组列标归零
j=0;
}
}
}
}
}
}
}
}
///////////////////输出魔方阵
for(b1=1;b1<=n;b1++)
{
for(b2=1;b2<=n;b2++)
{
printf("%d ",w[i][j]);
}
printf("\n");
}
return 0;
}