结构推理 用二维数组实现“魔方阵”的打印,所谓“魔方阵”是指组成元素是自然数1到n2的n×n阶方阵,满足每一行、每一列和对角线上的元素之和均相等的方阵。例如:
   8    1    6
   3    5    7
   4    9    2
   就是一个三阶的魔方阵。现在要求编程实现任意输入一个自然数n,打印出相应的n阶魔方阵。
【正确答案】#define M 9
   #define N 9
   main()
   {  int n,i,j,k,s;
       int A[M][N];    /*定义一个存储魔方阵的矩阵*/
       clrscr();
       printf("input n\n");
       scanf("/%d",&n);    /*输入魔方阵的阶数n*/
       printf("\n");
       i=n/%2;    /*将1填入中间一行的最后一列的位置*/
       j=n-1;
       A[i][j]=1;
       for(k=2;k<=(n*n);k++)  /*依次填入2到n2的其他自然数*/
       { if(k/%n==1)
               j--;
           else
           {  i=(i+1)/%n;
               j=(j+1)/%n;
           }
           A[i][j]=k;
       }
       printf("magic matrix\n");
       printf("n=/%d\n",n);    /*输出魔方阵的阶数n*/
       for(i=0;i<n;i++)    /*输出魔方阵*/
       { for(j=0;j<n;j++)
               printf("/%5d",A[i][J]);
           printf("\n");
       }
       printf("\n");
       s=(n*(1+n*n))/2;    /*魔方阵中行或列的和*/
       printf("snm of line,column is:/%d\n",s);    /*输出魔方阵中行或列的和*/
   }
【答案解析】