我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是n阶奇数魔方阵的程序,你好好看看吧:
# include
void main()
{
int array[16][16];
int i, j, k, m, n;
/* 变量初始化 */
m = 1;
while(m == 1)
{
printf("请输入n(0 scanf("%d", &n); /* 判断n是否是大于0小于等于15的奇数 */ if((n!=0) && (n<=15) && (n%2!=0)) { printf("矩阵阶数是 %d\n", n); m = 0; } } /* 数组赋初值为0 */ for(i=1; i<=n; i++) for(j=1; j<=n; j++) /* 建立魔方阵 */ j = n/2 + 1; array[1][j] = 1; for(k=2; k<=n*n; k++) { i = i - 1; j = j + 1; if((i<1) && (j>n)) { i = i + 2; j = j - 1; } else { if(i < 1) i = n; if(j > n) j = 1; } if(array[i][j] == 0) array[i][j] = k; else { i = i + 2; j = j - 1; array[i][j] = k; } /* 输出魔方阵 */ for(i=1; i<=n; i++) { for(j=1; j<=n; j++) printf("%5d", array[i][j]); printf("\n"); } 输入3所得到的三阶魔方阵为:
三阶魔方阵。用三维数组才行。你这一维怎么输出啊?