本帖最后由 夕阳的刻痕 于 2015-5-14 20:42 编辑
第四题:
输出 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
代码:
int SIZE = 5;
int arr[][] = new int[SIZE][SIZE];
int i, j, k = 0, n, m;
n = SIZE;
m = (n + 1) / 2;
for (i = 0; i < n; i++) {
// 顶边,从左到右,行不变列变
for (j = i; j <= n - i - 1; j++)
arr[j] = ++k;// 输出1、2、3、4、13、14
// 右边,从上到下,行变列不变
for (j = i + 1; j <= n - i - 1; j++)
arr[j][n - i - 1] = ++k; // 输出5、6、7、15
// 底边,从右到左,行不变列变
for (j = n - i - 2; j >= i; j--)
arr[n - i - 1][j] = ++k; // 输出8、9、10、16
// 左边,从下到上,行变列不变
for (j = n - i - 2; j >= i + 1; j--)
arr[j] = ++k; // 输出11、12
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
System.out.print(arr[j] + "\t");
System.out.println("");
}
------------------------------------------------------------------------------------
i = 0 i<5 ture
j=0 j<=5-0-1 ture
a[0][0] = ++k 1; j++ //给二维数组a[0][0]位置上赋值
j=1 j<=5-0-1 ture
a[0][1] = ++k 2 j++ //给二维数组a[0][1]位置上赋值
j=2 j<=5-0-1 ture
a[0][2] = ++k 3 j++ //给二维数组a[0][2]位置上赋值
j=3 j<=5-0-1 ture
a[0][3] = ++k 4 j++ //给二维数组a[0][3]位置上赋值
j=4 j<=5-0-1 ture
a[0][4] = ++k 5 j++ //给二维数组a[0][4]位置上赋值
j=5 j<=5-0-1 false
-------------------------------------
j=1 1<=5-0-1 ture
a[1][4] = ++k 6 j++ //给二维数组a[1][4]位置上赋值
j=2 1<=5-0-1 ture
a[2][4] = ++k 7 j++ //给二维数组a[2][4]位置上赋值
j=3 1<=5-0-1 ture
a[3][4] = ++k 8 j++ //给二维数组a[3][4]位置上赋值
j=4 1<=5-0-1 ture
a[4][4] = ++k 9 j++ //给二维数组a[4][4]位置上赋值
j=4 1<=5-0-1 false
----------------------------------------
j=3 j>=0 true
a[4][3] = ++k 10 j-- //给二维数组a[4][3]位置上赋值
j=2 j>=0 true
a[4][2] = ++k 11 j-- //给二维数组a[4][2]位置上赋值
j=1 j>=0 true
a[4][1] = ++k 12 j-- //给二维数组a[4][1]位置上赋值
j=0 j>=0 true
a[4][0] = ++k 13 j-- //给二维数组a[4][0]位置上赋值
j=-1 j>=0 false
-----------------------------------------
j=3 j>=1 true
a[3][0] = ++k 14 j-- //给二维数组a[3][0]位置上赋值
j=2 j>=1 true
a[2][0] = ++k 15 j-- //给二维数组a[2][0]位置上赋值
j=1 j>=1 true
a[1][0] = ++k 16 j-- //给二维数组a[1][0]位置上赋值
j=-1 j>=1 false
-----------------------------------------
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
System.out.print(arr[j] + "\t");
System.out.println("");
}//此循环嵌套输出二维数组中的数据
........................
0 1 2 3 4
--------------------------------------------------------------
0 1 2 3 4 5
1 16 0 0 0 6
2 15 0 0 0 7
3 14 0 0 0 8
4 13 2 11 10 9
|