求奇数阶幻方 指点错误
#include<stdio.h>#define N 7
void main(){
int a[N][N] = {}, i, j, n, m=0;
printf("%d阶幻方如下:\n", N);
a[0][(N - 1) / 2] = 1;
for (n = 2, i = 0, j = (N - 1) / 2; n <= N*N; n++){
if (i - 1 >= 0 && j + 1 < N){
if (a[i - 1][j + 1] == 0){
a[i - 1][j + 1] = n;
i--;
j++;
break;
}
else{
a[i][j + 1] = n;
j++;
break;
}
}
if (i - 1 < 0&&j+1<N){
for (i = N - 1; i >= 0; i--){
if (a[i][j+1] == 0){
a[i][j+1] = n;
j++;
break;
}
}
}
if (i - 1 >= 0 && j + 1 >= N){
for (j = 0; j < N; j++){
if (a[i-1][j] == 0){
a[i-1][j] = n;
i--;
break;
}
}
}
if (i == 0 && j == N - 1){
i++;
a[i][j] = n;
break;
}
}
for (i=0;i<N; i++){
for (j = 0; j < N; j++){
printf("%4d\t",a[i][j] );
m++;
if (m%N == 0)
printf("\n");
}
}
}