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(" "); 30 } 31 printf(" "); 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 }