二维数组的问题,求解,不怎么懂

输入n,(0 < n <= 20),建立n*n二维数组,按照下图规则把1~n*n个数放在n*n二维数组中,然后按行优先顺序输出。
1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<=20),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出该二维数组,该二维数组按行输出,行中数据之间有一个空格,每个数据占3个字符位置,左对齐,注意每行的最后一个元素后面没有空格,每个测试例子后面有空行。

螺旋矩阵
http://blog.csdn.net/yaqi_2010/article/details/51052495
http://blog.csdn.net/qq_35042020/article/details/52462377

例子中n=4,那么一共有4*4=16个成员,要求就是:把自然数1~16按照顺时针、从外圈到内圈的方式填入数组。