C语言实现# 简单螺旋矩阵 ## 题目描述 在一个N * N的方阵中,填入1 2 ...... N * N个数,并要求构成如下格式。 例: N=4 $\ 10\ \ 11\ \ 12\ \ \ 1$ $\ \ \ 9\ \ 16\ \ 13\ \ \ 2$ $\ \ \ 8\ \ 15\ \ 14\ \ \ 3$ $\ \ \ 7\ \ \ \ 6\ \ \ \ 5\ \ \ 4$ ## 输入格式 一个整数N ## 输出格式 N行,每行N个数,每个数输出宽度为4 ## 样例 #1 ### 样例输入 #1 ``` 2 ``` ### 样例输出 #1 ``` 4 1 3 2 ``` ## 提示 $N \le 10$
时间: 2023-09-04 22:09:22 浏览: 118
以下是 C 语言实现简单螺旋矩阵的代码,可以满足题目描述的要求:
```c
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
int matrix[10][10] = {0}; // 初始化为0
int num = 1; // 待填入的数字
int row = 0, col = 0; // 当前位置的行列坐标
// 依次填入数字
while (num <= N * N) {
while (col < N && !matrix[row][col]) { // 向右填数
matrix[row][col] = num++;
col++;
}
col--;
row++;
while (row < N && !matrix[row][col]) { // 向下填数
matrix[row][col] = num++;
row++;
}
row--;
col--;
while (col >= 0 && !matrix[row][col]) { // 向左填数
matrix[row][col] = num++;
col--;
}
col++;
row--;
while (row >= 0 && !matrix[row][col]) { // 向上填数
matrix[row][col] = num++;
row--;
}
row++;
col++;
}
// 输出矩阵
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%4d", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
其中,我们使用一个 N * N 的二维数组 matrix 存储矩阵中的数字。变量 num 表示当前待填入的数字,变量 row 和 col 分别表示当前位置的行列坐标。然后,我们按照从右到下、从下到左、从左到上、从上到右的顺序填入数字,直到所有数字都被填完。
注意,输出矩阵时,每个数字要占用宽度为 4 的空间。
阅读全文