c语言程序设计--奇数阶幻方的生成 利用二维数组

2025-06-27 19:07:17
推荐回答(3个)
回答1:

没听说过这个东西
但是在编程爱好者找到了一个
你看看行不行
main()
{ int i,j,n,k=1,a[N][N];
scanf("%d",&n);
for(i=0;i for(j=0;j a[i][j]=0;
a[i=0][j=n/2]=k;
for(k=2;k<=n*n;k++)
{ i-=1;j+=1;
if(i==-1&&j!=n) {i=n-1;a[i][j]=k;}
else if(j==n&&i!=-1) {j=0;a[i][j]=k;}
else if((i==-1&&j==n)||a[i][j]!=0) {i+=2;j-=1;a[i][j]=k;}
else a[i][j]=k;
}
for(i=0;i { for(j=0;j printf("%3d",a[i][j]);
printf("\n");
}
printf("\n");
}

回答2:

没听说过这个东西
但是在编程爱好者找到了一个
你看看行不行
main()
{
int
i,j,n,k=1,a[N][N];
scanf("%d",&n);
for(i=0;ifor(j=0;ja[i][j]=0;
a[i=0][j=n/2]=k;
for(k=2;k<=n*n;k++)
{
i-=1;j+=1;
if(i==-1&&j!=n)
{i=n-1;a[i][j]=k;}
else
if(j==n&&i!=-1)
{j=0;a[i][j]=k;}
else
if((i==-1&&j==n)||a[i][j]!=0)
{i+=2;j-=1;a[i][j]=k;}
else
a[i][j]=k;
}
for(i=0;i{
for(j=0;jprintf("%3d",a[i][j]);
printf("\n");
}
printf("\n");
}

回答3:

#define N 5
void main(){
int m[N][N];
for (int i=0;ifor (int j=0;jm[i][j]=(i+j-(N+3)/2+N)%N*N+(i+2*j-2+N)%N+1;
for (i=0;ifor (int j=0;jprintf("%d\t",m[i][j]);
printf("\n");
}
}