C语言 三阶魔方阵

2025-03-04 07:56:08
推荐回答(2个)
回答1:

我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是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++)

   array[i][j] = 0;

 

 /* 建立魔方阵 */

 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所得到的三阶魔方阵为:

 

回答2:

三阶魔方阵。用三维数组才行。你这一维怎么输出啊?