您当前的位置:首页 > 互联网教程

C语言:输出魔方阵

发布时间:2025-05-12 00:24:44    发布人:远客网络

C语言:输出魔方阵

一、C语言:输出魔方阵

魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。

(2)从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);

(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;

(4)当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;

(5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;

二、c语言中魔方阵编程的思路

1、它的每一行、每一列和对角线之和均相等。

2、输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。

3、①将“1”放在第一行的中间一列;

4、②从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;

5、③如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3方阵中,1在第1行,则2应放在第3行第3列。

6、④当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。

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

8、如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。

9、 printf("---------------打印魔方阵-------------\n\n");

10、 int sj=0;//记录上一个数的位置

11、//printf("\n%4d\n\n",t);

三、求c语言 输出 1到n^2的自然数构成的魔方阵。

1、魔方阵是用来锻炼学生的对二维数组元素的精确控制能力的。算法如下

2、⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如三阶魔方阵,5在4的上一行后一列);

3、⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;

4、⑷当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;

5、⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;