c语言 输入n*n螺旋矩阵
时间: 2023-12-21 22:03:22 浏览: 127
下面是一种实现 n * n 螺旋矩阵的方法:
1. 定义一个 n * n 的二维数组。
2. 使用变量 row 和 col 记录当前要填充的位置。
3. 使用变量 num 记录当前要填充的数字。
4. 使用变量 direction 记录当前遍历的方向,初始值为 0。
5. 使用变量 count 记录已经填充的数字个数,初始值为 0。
6. 不断循环,直到填充完所有数字:
1. 根据当前遍历方向,依次填充一行或一列的数字,同时更新 row 和 col。
2. 如果到达边界或者已经填充过该位置,就改变遍历方向,同时更新 row 和 col。
3. 将计数器 count 加 1。
7. 输出生成的螺旋矩阵。
下面是示例代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入矩阵的大小 n:");
scanf("%d", &n);
int matrix[n][n];
int row = 0, col = 0, direction = 0, num = 1, count = 0;
while (count < n * n) {
matrix[row][col] = num;
num++;
count++;
switch (direction) {
case 0:
if (col == n - 1 || matrix[row][col + 1] != 0) {
direction = 1;
row++;
} else {
col++;
}
break;
case 1:
if (row == n - 1 || matrix[row + 1][col] != 0) {
direction = 2;
col--;
} else {
row++;
}
break;
case 2:
if (col == 0 || matrix[row][col - 1] != 0) {
direction = 3;
row--;
} else {
col--;
}
break;
case 3:
if (row == 0 || matrix[row - 1][col] != 0) {
direction = 0;
col++;
} else {
row--;
}
break;
}
}
printf("生成的螺旋矩阵为:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%-4d", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
输入输出示例:
```
请输入矩阵的大小 n: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
```
阅读全文