黑马程序员技术交流社区

标题: 请大神们来回答 [打印本页]

作者: 知识改变人生    时间: 2015-4-8 22:17
标题: 请大神们来回答
输出 n=5 的螺旋方阵
        1  2  3  4  5
        16 17 18 19 6
        15 24 25 20 7
        14 23 22 21 8
        13 12 11 10 9  
请问这道题 能用循环做出来吗
作者: qq250144825    时间: 2015-4-8 23:26
可以的,看代码

  1. class  homework4
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 5;
  6.                 //定义一个二维数组,用于存储螺旋阵列
  7.                 int arr[][] = new int[x][x];
  8.                 int i, j, k = 0, n, m;
  9.                 n = x;
  10.                 m = (n + 1) / 2;
  11.                 for (i = 0; i < n; i++) {
  12.                         // 顶边,从左到右,行不变列变
  13.                         for (j = i; j <= n - i - 1; j++)
  14.                                 arr[i][j] = ++k;// 输出1、2、3、4、5、17、18、19、25
  15.                        
  16.                         // 右边,从上到下,行变列不变
  17.                         for (j = i + 1; j <= n - i - 1; j++)
  18.                                 arr[j][n - i - 1] = ++k; // 输出6、7、8、9、20、21
  19.                        
  20.                         // 底边,从右到左,行不变列变
  21.                         for (j = n - i - 2; j >= i; j--)
  22.                                 arr[n - i - 1][j] = ++k; // 输出10、11、12、13、22、23
  23.                        
  24.                         // 左边,从下到上,行变列不变
  25.                     for (j = n - i - 2; j >= i + 1; j--)
  26.                                 arr[j][i] = ++k; // 输出14、15、16、24
  27.                 }
  28.                 //遍历,打印出二维数组
  29.                 for (i = 0; i < n; i++) {
  30.                         for (j = 0; j < n; j++)
  31.                                 System.out.print(arr[i][j] + "\t");
  32.                         System.out.println("");
  33.                 }
  34.         }
  35. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2