#include <stdio.h> #include <memory.h> int main(){ int n; scanf("%d",&n); int i, c = 0, r = 0,num = 0,cnt = n/2; int a[n][n]; memset(a,0,sizeof(a)); //初始化 while(cnt--){ for (i=r; i<n-c; i++) //→ a[r][i] = ++num; r++; for (i=r; i<n-c; i++) //↓ a[i][n-c-1] = ++num; c++; for (i=c-1; i<n-c; i++) //← a[n-r][n-i-2] = ++num; for (i=r; i<n-r; i++) //↑ a[n-1-i][c-1] = ++num; } if(n%2!=0) //如果是奇数,填上正中间那个数 a[n/2][n/2] = ++num; for (int i =0; i<n; i++){ //遍历输出 for (int j =0; j<n; j++) printf("%3d",a[i][j]); printf("\n"); } return 0; } /************************************************************** Problem: 1208 User: admin Language: C Result: Accepted Time:10 ms Memory:1144 kb ****************************************************************/