题目: “转着圈”打印,先给出运行结果图 输入3时: 输入4时: 输入5时: 这个题想的时间较长,其实一想到二维数组就好办,就是纯粹的数学归纳问题了,给出我的代码如下: public class Test { public static void p(int n) { int[][] num = new int[n][n]; int a = 1; if(n%2==0) { for(int r=0; r<n/2+1; r++) { for(int i=r; i<n-r-1; i++) num[r][i] = a++; for(int i=r; i<n-r-1; i++) num[i][n-r-1] = a++; for(int i=n-r-1; i>r; i--) num[n-r-1][i] = a++; for(int i=n-r-1; i>r; i--) num[i][r] = a++; } } else { for(int r=0; r<n/2; r++) { for(int i=r; i<n-r-1; i++) num[r][i] = a++; for(int i=r; i<n-r-1; i++) num[i][n-r-1] = a++; for(int i=n-r-1; i>r; i--) num[n-r-1][i] = a++; for(int i=n-r-1; i>r; i--) num[i][r] = a++; } num[n/2][n/2] = a; } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { System.out.print((num[i][j]<10 ? " "+num[i][j] : num[i][j]) + " "); } System.out.println(); } } public static void main(String[] args) { p(7); } } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LiuStan/archive/2010/11/13/6007062.aspx 运行结果为: