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
在解决该问题时,采用的是动态分配内存的方式,并使用了指针变量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
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx