将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;
}