黑马程序员技术交流社区
标题:
请大神们来回答
[打印本页]
作者:
知识改变人生
时间:
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
可以的,看代码
class homework4
{
public static void main(String[] args)
{
int x = 5;
//定义一个二维数组,用于存储螺旋阵列
int arr[][] = new int[x][x];
int i, j, k = 0, n, m;
n = x;
m = (n + 1) / 2;
for (i = 0; i < n; i++) {
// 顶边,从左到右,行不变列变
for (j = i; j <= n - i - 1; j++)
arr[i][j] = ++k;// 输出1、2、3、4、5、17、18、19、25
// 右边,从上到下,行变列不变
for (j = i + 1; j <= n - i - 1; j++)
arr[j][n - i - 1] = ++k; // 输出6、7、8、9、20、21
// 底边,从右到左,行不变列变
for (j = n - i - 2; j >= i; j--)
arr[n - i - 1][j] = ++k; // 输出10、11、12、13、22、23
// 左边,从下到上,行变列不变
for (j = n - i - 2; j >= i + 1; j--)
arr[j][i] = ++k; // 输出14、15、16、24
}
//遍历,打印出二维数组
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
System.out.print(arr[i][j] + "\t");
System.out.println("");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2