奇数魔方.txt

来自「其中一部分是自己写得,一部分是摘录的,希望站长能批准,我以后一定多多努力上传!」· 文本 代码 · 共 54 行

TXT
54
字号
奇数魔方:

#include <stdio.h>
#include <malloc.h>

void main()
{
 int n,i,**matrix;
 do
 {
  printf("请输入魔方阵的阶数(必须是奇数):n=");
  scanf("%d",&n);
 }while(n<0 || n%2==0);

 matrix=(int **)malloc(sizeof(int *)*n);
 for(i=0;i<n;i++)
  *(matrix+i)=(int *)malloc(sizeof(int)*n);

 int p,q,j,l,k;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   matrix[i][j]=0;
  p=n/2;
  q=n-1;
  for(i=1;i<=n*n;i++)
  {
   matrix[p][q]=i;
  // printf("%d,%d,%d\n",matrix[p][q],p,q);
   l=q;k=p;
   p++;q++;
   if(p==n)
    p=p%n;
   if(q==n)
    q=q%n;
   if(matrix[p][q]!=0)
   {
    q=l-1;
    p=k;
   }
   if(q==-1)
    q=n-1;
  }
  printf("%d阶的魔方的矩阵为:\n",n);
  for(i=0;i<n;i++)
  {
      for(j=0;j<n;j++)
       printf("%-3d ",matrix[i][j]);
   printf("\n");
  }

  for(i=0;i<n;i++)
   free (*(matrix+i));
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?