#include <stdio.h>int main(){ int a[10][10]; int i,j,k,n,b=0; scanf("%d",&n); for ( i=0; i<n/2; i++) { for ( j=i; j<n-i; j++) /*四个循环按不同的方向进行*/ a[i][j] = ++b; for ( k=i+1,j--; k<n-i; k++ ) a[k][j] = ++b; for ( j=--k,j--; j>=i; j-- ) a[k][j] = ++b; for ( k--; k>i; k-- ) a[k][i] = ++b; } if ( n%2 ) /*如果是单数的话,要加上最大的那个数放在中间*/ a[i][i] = ++b; for ( i=0; i<n; i++) { for ( j=0; j<n; j++) printf("%3d",a[i][j]); printf("\n"); } fflush(stdin); getchar(); return 0;}


方法一:

 

方法2:


 

 

 posted on 2011-07-23 19:58  Jiang, X.  阅读(285)  评论(0编辑  收藏  举报