1 #include <iostream>
2 #define MAX_SIZE 100+1
3 using namespace std; 5 int array[MAX_SIZE][MAX_SIZE];
6 int creatScrewMatrix(int n)
7 {
8 int upBound=0,downBound=n-1,leftBound=0,rightBound=n-1;//上下左右边界初始化
9 int num=1;
10 while(upBound<=downBound && leftBound<=rightBound)
11 {
12 for (int i = leftBound; i <=rightBound; ++i)
13 array[upBound][i]=num++;
14 for (int i = ++upBound; i <=downBound; ++i)
15 array[i][rightBound]=num++;
16 for (int i = --rightBound; i >= leftBound; --i)
17 array[downBound][i]=num++;
18 for (int i = --downBound; i >=upBound; --i)
19 array[i][leftBound]=num++;
20 leftBound++;
21 }
22 }
23 void printScrewMatrix(int n)
24 {
25 for (int i = 0; i < n; ++i)
26 {
27 for (int j = 0; j < n; ++j)
28 j==0?printf("%d",array[i][j]) : printf(" %d",array[i][j]);
29 printf("\n");
30 }
31 printf("\n");
32 }
33 int main(int argc, char const *argv[])
34 {
35 #ifndef _OJ_ //ONLINE_JUDGE
36 freopen("input.txt", "r", stdin);
37 #endif
38 int n;
39 scanf("%d",&n);
40 creatScrewMatrix(n);
41 printScrewMatrix(n);
42 return 0;
43 }