本帖最后由 王明明 于 2013-12-7 23:59 编辑
- class Demo
- {
- public static void main(String[] args)
- {
- jisuan(8,7);
- }
- public static void jisuan(int h,int l){//h代表行,l代表列
- int mat[][] = new int [h][l];
- int i,j,k=0;
- for (i=0;i<(h+1)/2;i++) //i控制生成方阵的圈数 圈数跟行有关
- { //j表示要输出的数
- for(j=i;j<l-i;j++){ //行不变列变 h不变 l变 l控制循环
- mat[i][j] = ++k;
- }
- for(j=i+1;j<h-i;j++){ //行变列不变 h变 l不变 h控制循环
- mat[j][l-i-1] = ++k;
- }
- for(j=l-i-2;j>=i;j--){ //行不变列变 h不变 l变 l控制循环 j=l-i-2 最大行数l减去圈数 - 右边已经输出一列 - 数组是0下标开始再减1 所以是l-i-2
- mat[h-i-1][j] = ++k;
- }
- for(j=h-i-2;j>=i+1;j--){//行变列不变 h变 l不变 h控制循环 同上 j>=i+1 在第一圈快结束的时候 第一列 已经输出了 所以要+1
- mat[j][i] = ++k;
- }
- }
复制代码
|