奇數階幻方
阿新 • • 發佈:2019-01-05
程式碼:
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