打印魔方阵(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;
}
相关文章
|
9月前
|
存储 Cloud Native 安全
API 安全之认证鉴权
API 作为企业的重要数字资源,在给企业带来巨大便利的同时也带来了新的安全问题,一旦被攻击可能导致数据泄漏重大安全问题,从而给企业的业务发展带来极大的安全风险。
|
存储 Kubernetes Perl
pv和pvc的区别、关系,如何设置使用的步骤
PV(Persistent Volume)和 PVC(Persistent Volume Claim)是 Kubernetes 中用于管理持久化存储的两个关键概念。 PV 是集群中的一个持久化存储资源,它是由集群管理员预先创建和配置的。PV 可以是物理存储设备、存储阵列、网络存储等。PV 有自己的生命周期,并且可以被多个 Pod 共享。 PVC 是 Pod 对 PV 的请求,它用于声明 Pod 对存储的需求。PVC 描述了 Pod 所需的存储容量、访问模式等属性。当创建 PVC 时,Kubernetes 会尝试将其与可用的 PV 进行匹配和绑定。一旦 PVC 成功绑定到 PV,Pod 就可
1617 0
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
191 5
|
存储 数据可视化 测试技术
了解面向对象方法发展历程
【6月更文挑战第26天】本文介绍了几个面向对象发展中出现的典型方法。**Coad/Yourdon方法** **Booch方法** **OMT** **OOSE**。这四种方法都贡献于现代面向对象软件开发的。
479 0
了解面向对象方法发展历程
|
运维 监控 API
自动化运维实践指南:Python脚本优化服务器管理任务
本文探讨了Python在自动化运维中的应用,介绍了使用Python脚本优化服务器管理的四个关键步骤:1) 安装必备库如paramiko、psutil和requests;2) 使用paramiko进行远程命令执行;3) 利用psutil监控系统资源;4) 结合requests自动化软件部署。这些示例展示了Python如何提升运维效率和系统稳定性。
1076 8
|
算法 数据库连接 数据库
使用通义灵码插件提高开发效率
【7月更文挑战第1天】通义灵码插件是一款提升开发效率的利器,提供智能代码补全,在你输入时预测函数及参数,减少错误。它还实时检测并修正语法和逻辑错误,提出优化建议以提升代码性能。此外,能自动生成代码模板,简化常见任务,如创建类或数据库操作。还能辅助编写文档注释,增强代码可读性。通过这些功能,开发者能更专注业务创新。
467 0
|
块存储 芯片 内存技术
计算机组成原理(4)-----Cache的原理及相关知识点(1)
计算机组成原理(4)-----Cache的原理及相关知识点
1138 2
|
SQL 数据可视化 关系型数据库
MySQL命令行与可视化工具
MySQL命令行与可视化工具
|
算法 搜索推荐 Java
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
|
数据库连接 数据库
多线程事务失效的原因
【5月更文挑战第16天】多线程事务失效的原因
722 0

热门文章

最新文章