关于输出魔方阵的问题
输出一个1~N^2的自然数构成的魔方阵。就是每一行,每一列和对角线之和均相等。 例如3阶魔方阵:
8 1 6
3 5 7
4 9 2
请写个程序参考参考
程序代码:#include <time.h>
#include <stdio.h>
#define N 5 //幻方的阶数,可以改成任意大于等于3的奇数
main()
{
int a[100][100]={0},i,k,m,iold,kold,x,y;
i=1,k=N/2+1;
for(m=1;m<=N*N;m++)
{
a[i][k]=m;
iold=i,kold=k;
i--,k++;
if(i==0)i=N;
if(k==N+1)k=1;
if(a[i][k]!=0)i=iold+1,k=kold;
for(x=1;x<=N;x++)
{
for(y=1;y<=N;y++)
printf("%5d",a[x][y]);
printf("\n");
}
printf("\n\n");
for(x=0;x<10;x++) //延时0.3秒
delay(29999);
}
getchar();
}
程序代码:#include <time.h>
#include <stdio.h>
#define N 5
main()
{
int a[100][100]={0},i,k,m,iold,kold,x,y;
i=1,k=N/2+1;
for(m=1;m<=N*N;m++)
{
a[i][k]=m;
iold=i,kold=k;
i--,k++;
if(i==0)i=N;
if(k==N+1)k=1;
if(a[i][k]!=0)i=iold+1,k=kold;
}
for(x=1;x<=N;x++)
{
for(y=1;y<=N;y++)
printf("%5d",a[x][y]);
printf("\n");
}
printf("\n\n");
getchar();
}

