打印魔方阵(C语言) 所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。

简介: 打印魔方阵(C语言) 所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。

打印魔方阵(C语言)


打印魔方阵,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:


8 1 6

3 5 7

4 9 2

要求打印出由1到n2的自然数构成的魔方阵(n为奇数)。


魔方阵中各数的排列规律如下:


(1)将1放在第一行中间一列;

(2)从2开始直到n×n,各数依次按下列规律存放:每一个数存放的行比前一个数的行数减1,列数加1;

(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);

(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1;

(5)如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。


**输入数据格式:"%d"

**输出格式要求:"%3d"

程序的运行示例如下:

请输入n(0<n<=15,n是奇数):5

矩阵阶数是:5

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9


#include<stdio.h>
int main()
{ 
  int a[16][16],i=0,j=0,k=0,p=0,n=0;
    p=1;
    while(p==1)
    {
    printf("请输入n(0<n<=15,n是奇数):\n");
      scanf("%d",&n);
      if ((n>=0) && (n<=15) && (n%2!=0))
          p=0;
    }
    printf("矩阵阶数是:%d\n",n);
    for(i=1;i<=n;i++)   //初始化操作 
    {
      for(j=1;j<=n;j++)
        a[i][j]=0;
    }
    j=n/2+1;
    a[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(a[i][j]==0)
      {
        a[i][j]=k;
    } 
      else
        {
      i=i+2;
        j=j-1;
        a[i][j]=k;
       }
    }
    for (i=1;i<=n;i++)
    { 
      int sum=0;
    for (j=1;j<=n;j++)
    {
      printf("%3d",a[i][j]);
      sum+=a[i][j];
    } 
      printf("\n");
    }
    printf("\n\n");
  return 0;
}
相关文章
|
24天前
线性代数——(期末突击)矩阵(上)-概念篇(矩阵的定义、矩阵的运算、特殊矩阵、初等变换)
线性代数——(期末突击)矩阵(上)-概念篇(矩阵的定义、矩阵的运算、特殊矩阵、初等变换)
29 7
|
24天前
线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质
线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质
24 7
|
24天前
线性代数——(期末突击)行列式(下)-行列式按行展开、范德蒙行列式、克拉默法则
线性代数——(期末突击)行列式(下)-行列式按行展开、范德蒙行列式、克拉默法则
38 7
|
2月前
|
存储 算法 Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(2)
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(2)
|
2月前
|
存储 算法 Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(1)
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(1)
|
2月前
|
Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
|
C语言
二维数组实验题:按如下公式递归计算矩阵行列式的值:(C语言)
二维数组实验题:按如下公式递归计算矩阵行列式的值:(C语言)
189 1
二维数组实验题:按如下公式递归计算矩阵行列式的值:(C语言)
|
12月前
|
机器学习/深度学习 C语言 C++
C语言计算N*N矩阵的转置、平均值、对角线元素之和、周边元素之和
C语言计算N*N矩阵的转置、平均值、对角线元素之和、周边元素之和
183 0
|
C语言
C语言【海伦公式 求三角形面积】
C语言【海伦公式 求三角形面积】
291 0
(C语言)经典例题之特殊整数求和与方形图案
(C语言)经典例题之特殊整数求和与方形图案
(C语言)经典例题之特殊整数求和与方形图案