题目
所谓“螺旋矩阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
格式
输入格式:
 输入在一行中给出一个正整数N(<10)。
输出格式:
 输出N×N的螺旋方阵。每行N个数字,每个数字占4位。
样例
输入样例:
 5
 输出样例:
 1 2 3 4 5
 16 17 18 19 6
 15 24 25 20 7
 14 23 22 21 8
 13 12 11 10 9
解答
#include <stdio.h>  int main() {  int n;  scanf("%d", &n);  int matrix[n][n];  int num = 1;  int row_start = 0;  int row_end = n - 1;  int col_start = 0;  int col_end = n - 1;  while (row_start <= row_end && col_start <= col_end) {  for (int col = col_start; col <= col_end && num <= n * n; col++) {  matrix[row_start][col] = num++;  }  row_start++;  for (int row = row_start; row <= row_end && num <= n * n; row++) {  matrix[row][col_end] = num++;  }  col_end--;  for (int col = col_end; col >= col_start && num <= n * n; col--) {  matrix[row_end][col] = num++;  }  row_end--;  for (int row = row_end; row >= row_start && num <= n * n; row--) {  matrix[row][col_start] = num++;  }  col_start++;  }  for (int i = 0; i < n; i++) {  for (int j = 0; j < n; j++) {  printf("%4d", matrix[i][j]);  }  printf("\n");  }  return 0;  
}