//运用Java二维数组打印“魔方阵”。
//所谓魔方阵是指这样的矩阵,
//它的每一行、每一列和对角线之和均相等.
//要求打印1~25之间由自然数构成的魔方阵。
public class Csj03 {
public static void main(String[] args) {
//定义
int i, j, k;
int[][] arr =new int[5][5];
//对数组赋初值
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
arr[i][j] = 0; /* 先令所有元素都为0 */
}
} /*
* 一般数值型变量为0; 字符(串)为空或space。
//对1先处理 * 良好的编程习惯是自己对数组置初值,不要用默认的方法,这样可以提高程序在不同开发系统中得兼容性。*/
j = 2;
arr[0][j] = 1; /* 将1放在第一行中间一列 */
//对剩下的数处理
for (k = 2; k <= 25; k++) { /* 再从2开始处理 */
i = i - 1; //总体规律/* 存放的行比前一个数的行数减1 */
j = j + 1; /* 存放的列比前一个数的列数加1 */
if ((i < 0) && (j == 5)) { // 特殊情况 /* 前一个数是第一行第N列时,把下一个数放在上一个数的下面 */
i = i + 2;
j = j - 1;
} else {
if (i < 0) //处理方法: /* 当行数减到第一行,返回到最后一行 */
i = 4;
if (j > 4 ) /* 当列数加到最后一行,返回到第一行 */
j = 0;
}
if (arr[i][j] == 0) { /* 如果该元素为0,继续执行程序 */
arr[i][j] = k;
}else { /* 如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面 */
i = i + 2;
j = j - 1;
arr[i][j] = k;
}
}
//打印数组
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
System.out.printf("%3d", arr[i][j]); // C语言中%3d 表示以3位的固定宽度输出整型数。 //注意:不足3位,在前面补空格; 超过3位,按实际位数输出(但是要在其范围内-32768 ~ 32767)。
}System.out.println();
}
}
}
//魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。
//
//如3×3的魔方阵:
// 8 1 6
// 3 5 7
// 4 9 2
//魔方阵的排列规律如下:
//(1)将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的下面;
java实验 :运用Java二维数组打印“魔方阵”。所谓魔方阵是指这样的矩阵,它的每一行、每一列和对角线之和均相等,要求打印1~25之间由自然数构成的魔方阵
最新推荐文章于 2025-04-11 15:56:48 发布