置了整数1到n的n*n矩阵,每一行每一列对角线和相等
算法:首先顶行中央填1
向左上方移动
按递增次序填入空格
如果当前位置已在顶行,最下行视为其顶行 如果当前位置已在最左行行,最右行视为其左行行 如果移动时,左上方有数,直接下移
例如
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
#include<stdio.h>
void main()
{
int i,j,n,k,a[100][100];
scanf("%d",&n);
if(n%2==0)
printf("Input number must be an odd integer");
else {a[0][(n-1)/2]=1;
i=n-1;j=(n-3)/2;
for(k=2;k<(n*n+1);k++)
{if(a[i][j]!=0)a[i-1][j]=k;
else {a[i][j]=k;
i=i--;
j=j--;
if(i<0)i=n-1;
else;
if(j<0)j=n-1;
else;}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");}
}
}
我同学说这个不行,高手给个完整的能实现的吧!!!!急用!!