黑马程序员技术交流社区
标题:
求教一个关于循环的问题
[打印本页]
作者:
找个工作那么难
时间:
2014-11-25 21:29
标题:
求教一个关于循环的问题
输出 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
帮我讲一下思路
作者:
迷失的小Z
时间:
2014-11-25 21:34
二维数组,总之很麻烦……
作者:
娱尘
时间:
2014-11-25 22:04
二维数组,一个大for里面嵌套四个小for,角标转换
作者:
范中俊
时间:
2014-11-25 22:19
黑马的入学测试题里有这样的习题
作者:
江南小道士
时间:
2014-11-25 22:24
范中俊 发表于 2014-11-25 22:19
黑马的入学测试题里有这样的习题
入学测试有这样的习题?
作者:
DamonZh
时间:
2014-11-25 22:27
范中俊 发表于 2014-11-25 22:19
黑马的入学测试题里有这样的习题
这应该属于算法题啦,感觉放在入学测试里不太合适,哎
作者:
范中俊
时间:
2014-11-25 22:28
1、 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
可以在论坛上找到答案的
作者:
刘隽哲
时间:
2014-11-25 23:00
这个数组比较绕 多看几遍吧 希望能帮到你
int size = 4;
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[i][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][i] = ++k; // 输出11、12
}
for (int x=0;x<arr.length ; x++)
{
for (int y=0;y<arr[x].length ;y++ )
{
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
复制代码
作者:
阿穆隆
时间:
2014-11-25 23:48
很复杂的样子。。。先保存。哪天试试看能不能写出来、
作者:
王小忠
时间:
2014-11-26 00:13
有点难~~先保存先来~~
作者:
yninggis
时间:
2014-11-26 00:43
看着无从下手,来学习学习!
作者:
244611
时间:
2014-11-26 00:52
这个我做过,广联达的笔试题,,四个循环,从左到右,从上到下,从右到左,从下到上,每次把行数,列数减一。
作者:
张卫贤
时间:
2014-11-26 01:04
很复杂的一个循环,先留下来吧
作者:
米家小九
时间:
2014-11-26 06:21
我也是刚看到二维数组,还真就看到了这种格式,不过没看懂
作者:
夏至落叶
时间:
2014-11-26 08:58
用到2维数组
import java.util.Scanner;
class LuoXuan3
{
public static void main(String[] args)
{
Scanner sc= new Scanner(System.in);
System.out.println("输入大于0的数字");
int num = sc.nextInt();
fun(num);
}
public static void fun(int num)
{
int [] [] arr =new int [num][num];
int a = 0;int b = -1;
int count = 0;
int temp1 =num;
int temp = 0;
for (int z = 0;z<(num+1)/2 ; z++)
{
temp1--;
while (b<temp1) arr[a][++b] = ++count;
while (a<temp1) arr[++a][b] = ++count;
while (b>temp) arr[a][--b] = ++count;
temp++;
while (a>temp) arr[--a][b] = ++count;
}
for (int m = 0;m<num ; m++)
{
for (int n = 0;n<num ;n++ )
{
System.out.print(arr[m][n]+"\t");
}
System.out.println();
}
}
}
复制代码
作者:
雨过山更翠
时间:
2014-11-26 09:23
有些麻烦,还是先看基础吧
作者:
scoto263
时间:
2014-11-26 09:24
看到那两个字就真心觉得比较晕了。。。
作者:
Archer
时间:
2014-11-26 09:45
我之前写过过c语言的,java的完了给你写一下
作者:
高昌德
时间:
2014-11-26 11:49
好难的样子,,,不会考到吧??
作者:
Afridoce
时间:
2014-11-26 14:23
来学习学习!
作者:
ls61532529
时间:
2014-11-27 13:16
用二维数组
作者:
liuhao0324
时间:
2014-11-27 13:30
看着很难的样子,先存起来,看看学到了那里会不会解决。
作者:
骑着乌龟去旅行
时间:
2014-11-27 20:04
好复杂的样子
作者:
SpiderManZZH
时间:
2014-11-27 22:47
值得学习。。。
作者:
xingkong123
时间:
2014-11-27 22:54
先保存起来吧,以后再看。。
作者:
chun
时间:
2014-11-27 23:07
谢谢几位的分享 收藏了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2