数字魔方

  • 将1-N^2个数填入一个N阶(奇数)方阵,使各行、各列、对角线上各数字之和相等

  • 输入一个奇数n,占一行

  • 输出一个n阶方阵,每个数字之间用一个空格分开,每行末尾没有空格

  • 3

  • 8   1   6

    3   5   7

    4   9   2

#include <stdio.h>

int main()

{

int x,y,n=1,N,a[256][256]={0};

scanf(“%d”,&N);

x=0;

y=N/2;

a[x][y]=n++;

while (n<=(N*N))

{

if (x==0)

{

if (y==N-1)

{

x++;

y=y;

a[x][y]=n++;

}

else 

{

x=N-1;

y++;

a[x][y]=n++;

}

}

else if (y==N-1)

{

x–;

y=0;

a[x][y]=n++;

}

else if (a[x-1][y+1]!=0)

{

x++;

y=y;

a[x][y]=n++;

}

else 

{

x–;

y++;

a[x][y]=n++;

}

}

for (int i=0;i<N;i++)

{

for (int j=0;j<N-1;j++)

{

printf(“%d “,a[i][j]);

}

printf(“%d”,a[i][j]);

printf(“\n”);

}

return 0;

}

点赞