编写程序,M阶魔方阵(M为奇数)。

来源:百度知道 编辑:UC知道 时间:2024/06/02 09:11:27
魔方的每行、每列、以及对角线元素之和均相等。
例如这个3阶魔方阵:
8 1 6
3 5 7
4 9 2

#define N 20
main()
{
int a[N][N];
int n,i,j,r;
scanf("%d",&n);
for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=0;
i=0;
j=n/2;
a[i][j]=1;
for (r=2;r<=n*n;r++)
if (a[(i+n-1)%n][(j+1)%n]==0)
{i=(i+n-1)%n;j=(j+1)%n;a[i][j]=r;}
else
{i=(i+1)%n;a[i][j]=r;}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%4d",a[i][j]);
printf("\n");
}
}