C语言每日一题—魔幻矩阵

魔幻矩阵
编程实现9*9以内任意奇数阶方阵的魔幻矩阵。
所谓奇数魔幻矩阵就是n*n的矩阵(n为奇数)的n*n个格子中放入数1到n*n,使得每行、每列、主对角线、付对角线上元素的和都相等。算法生成如下::
1 ,第一个数字在第一行的中间位置
2,以后每一个数放在前一个数的右上方,,如果向上超出了界限,在矩阵的最后一行插入,列不变;,如果右侧超出了界限,在矩阵的最左边插入,行不变。
3.如果插入数的位置已经有数,则在前一个数的下方插入。.
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
输入提示:"input Magic matrix n:"
输入格式:"%d"
输出格式:"%4d"

程序运行示例:
input Magic matrix n:4
   9  15   1   7
  14   4   6   8
   3   5  11  13
   0  10  12   2
#include<stdio.h>

int main()
{
    int a[9][9]={0},i,j=0,n;
    printf("input Magic matrix n:");
    scanf("%d",&n);
    int k;
    if(n%2!=0) k=(n-1)/2;
    else k=n/2;
    for(i=1;i<=n*n;i++)//n*n个数,从1开始依次填入矩阵
    {
        if(j<0) j=n-1;//j代表行,当j<0时,j为最后一行
        if(k>n-1) k=0;//k代表列,当k>n-1时,k变为第一列
        if(a[j][k]==0)//判断该位置是否已经填入了数字,若没填,则填入
        {
            a[j][k]=i;
        }
        else//若已经填入了数字,则填到前一个数的下方
        {
            j=j+1+1;//j+1为前一个数的行,j+1+1为前一个数的下方
            k=k-1;//k-1为前一个数的列
            if(j>n-1) j=j-n;//当j=n或者n+1时,实际上为第一行和第二行
            if(k<0) k=n-1;//当k=-1时,实际上k=n-1即最后一列
            a[j][k]=i;
        }
        j=j-1;
        k=k+1;
    }
    for(i=0;i<n;i++)//打印该魔幻矩阵
    {
        for(j=0;j<n;j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

相关推荐

  1. C语言每日矩阵

    2024-03-17 05:10:03       18 阅读
  2. C语言每日—判断是否为魔方矩阵

    2024-03-17 05:10:03       20 阅读
  3. C++】每日 54 螺旋矩阵

    2024-03-17 05:10:03       12 阅读
  4. 每日C语言经典例题之矩阵对角线元素之和

    2024-03-17 05:10:03       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 05:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 05:10:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 05:10:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 05:10:03       20 阅读

热门阅读

  1. LeetCode 1876. 长度为三且各字符不同的子字符串

    2024-03-17 05:10:03       18 阅读
  2. Lua-Lua与C++的交互2

    2024-03-17 05:10:03       16 阅读
  3. VUE基础

    VUE基础

    2024-03-17 05:10:03      20 阅读
  4. Kafka-SSL笔记整理

    2024-03-17 05:10:03       19 阅读
  5. 安装 docker 和 jenkins

    2024-03-17 05:10:03       17 阅读
  6. 行走的机器人

    2024-03-17 05:10:03       18 阅读
  7. linux 查看日志包含***字符上下200行日志命令

    2024-03-17 05:10:03       21 阅读
  8. wsl-oraclelinux 固定ip

    2024-03-17 05:10:03       20 阅读
  9. 2024计算机二级6

    2024-03-17 05:10:03       19 阅读
  10. Invalid value type for attribute ‘factoryBeanObjectType‘

    2024-03-17 05:10:03       18 阅读
  11. 189: 素数判定(python)

    2024-03-17 05:10:03       16 阅读