C语言实现魔方阵代码及解析(2)

int main()
{
    int n;
    printf("请输入n值:\n");
    scanf("%d", &n);
    array(n);  /*调用array函数*/
    return 0;
}

运行结果:

linuxidc@linuxidc:~$ ./linuxidc
请输入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

C语言实现魔方阵代码及解析

知识点补充

在解决该问题时,采用的是动态分配内存的方式,并使用了指针变量mtrx来指向二维数组中的元素。在算法设计中,要存储魔方阵需要一个二维数组,因此再给出直接使用二维数组来生成8-魔方阵的程序。

直接使用二维数组生成5-魔方阵的代码如下:

#include<stdio.h>
#define N 8
int main()
{
    int a[N][N]={0}, i, j, k, t, x, y;
    i=0;  /*自然数1的行标*/
    j=N/2;  /*自然数1的列标*/
    t=N-1;  /*最后一行、最后一列的下标*/
    for(k=1; k<=N*N; k++)
    {
        a[i][j]=k;
        x=i;
        y=j;
        if(i == 0)
            i=t;
        else
            i=i-1;
        if(j != t)
            j=j+1;
        else
            j=0;
        if(a[i][j]!=0)
        {
            i=x+1;
            j=y;
        }
    }
    printf("linuxidc.com生成的8-魔方阵为:");
    for(i=0; i<N; i++)
    {
        printf("\n");
        for(j=0; j<N; j++)
        {
            printf("%3d", a[i][j]);
        }
    }
    printf("\n");
    return 0;
}

示例输出如下:

linuxidc.com生成的8-魔方阵为:
 41 43 53 63  1 11 21 31
 42 52 62  8 10 20 30 40
 51 61  7  9 19 29 39 49
 60  6 16 18 28 38 48 50
  5 15 17 27 37 47 57 59
 14 24 26 36 46 56 58  4
 23 25 35 45 55  0  3 13
 32 34 44 54 64  2 12 22

C语言实现魔方阵代码及解析

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6b01cc4d3efb2b88967a23fb17633b7a.html