奇数阶幻方

代码:

import java.util.Scanner;
public class Test {

     public static void main(String[] args){
    	 
    	 
    	 Scanner sc = new Scanner(System.in);
    	 System.out.print("请输入一个奇数:");
    	 int n = sc.nextInt();//有键盘输入一个奇数
    	 if(  n%2 == 0 ){
    		 System.out.println("请输入一个奇数");
    		 return;
    	 }
         int i,j;
    	 
    	 
    	 int array[][] = new int[n][n];//创建一个n行n列数列
    	 int a = n-1;//获取最后一行的行下标
    	 int b = n/2;//获取中间列的列下标
    	 
    	 
    	 
    	 //判断一个字符串还不是回文字符串
    	 for ( i = 1 ; i <= n*n ; i++ ){
    		 array[a++][b++] = i;//给最后一行的中间元素赋值为1
    		 if( i%n == 0 ){     //判断当前i值是否为n的倍数
    			 a = a-2;        //如果是则放在上行同列位置上
    		     b = b-1;
    		 }else{              //否则放在下行的下一列
    			 a = a%n;
    			 b = b%n;
    		 }
    	 }
    	   	
    	 
    	 
    	 System.out.println(n+"阶幻方如下:");
    	 for ( i = 0 ; i < n ; i++){//将幻方输出
    		 for ( j = 0 ; j < n ; j++){
    			 System.out.print(" "+array[i][j]);
    		 }
    		 System.out.println();
    	 }
    	 
    	 
     
     }
   
}

运行结果:

实例结果1:
请输入一个奇数:5
5阶幻方如下:
 11 18 25 2 9
 10 12 19 21 3
 4 6 13 20 22
 23 5 7 14 16
 17 24 1 8 15



实例结果2:
请输入一个奇数:7
7阶幻方如下:
 22 31 40 49 2 11 20
 21 23 32 41 43 3 12
 13 15 24 33 42 44 4
 5 14 16 25 34 36 45
 46 6 8 17 26 35 37
 38 47 7 9 18 27 29
 30 39 48 1 10 19 28

猜你喜欢

转载自blog.csdn.net/weixin_44365021/article/details/85720746