编写程序实现n阶(n为奇数)魔方(C)

    技术2022-05-11  58

    #include  < stdio.h > void  Init ( int  square[][ 20 ], int  n) { int  i,j; for  (i = 1 ;i <= n;i ++ ){ for  (j = 1 ;j <= n;j ++ )square[i - 1 ][j - 1 ] = 0 ;}} void  put ( int  square[][ 20 ], int  n){ int  p,q,l,k,i;p = n / 2 ;q = n - 1 ; for (i = 1 ;i <= n * n;i ++ ){square[p][q] = i;l = q;k = p;p ++ ;q ++ ; if (p == n)p = p % n; if (q == n)q = q % n; if (square[p][q] != 0 ){q = l - 1 ;p = k;} if (q ==- 1 )q = n - 1 ;}} void  show ( int  square[][ 20 ], int  n) { int  i,j; for  (i = 1 ;i <= n;i ++ ) { for  (j = 1 ;j <= n;j ++ )printf( " M " ,square[i - 1 ][j - 1 ]);printf( " " );}} int  calculate ( int  square[][ 20 ], int  n) { int  s,i;s = 0 ; for  (i = 1 ;i <= n;i ++ )s = s + square[ 0 ][i - 1 ]; return  s;}main () { int  square[ 20 ][ 20 ]; int  n,sum; do  {printf( " 请输入奇数 n:  " );scanf( " %d " , & n);}  while  ((n % 2 == 0 ) || (n < 3 ) || (n > 19 )); Init(square,n);put(square,n);show(square,n);sum = calculate(square,n);printf( " 共有%d个数. " ,sum);getch();} /* 编写程序实现n阶(n为奇数)魔方。n为外部输入参数,输出结果按方阵排列。 */  

    最新回复(0)