P5731 【深基5.习6】蛇形方阵 C语言
时间: 2024-10-14 18:16:04 浏览: 34
P5731【深基5.习6】这个题目通常是指一个经典的计算机编程练习,要求用C语言实现“蛇形矩阵”(也叫螺旋矩阵)。蛇形矩阵是一种特殊的二维数组填充方式,它从左上角开始,沿着顺时针方向逐行递增索引,形成类似数字8的形状。
以下是简单的步骤描述:
1. 初始化一个大小为n*n的二维数组,n代表矩阵的边长。
2. 遍历矩阵,按照以下顺序填充元素:
a. 从左向右填充第一行。
b. 从下往上填充第一列(从当前填充的位置开始)。
c. 向右填充,直到到达最后一行的右侧。
d. 最后向上填充剩余的部分,即从倒数第二列的顶部开始,直至左上角。
下面是一个基本的C语言代码示例,用于创建一个5x5的蛇形矩阵:
```c
#include <stdio.h>
#define N 5
void printSpiral(int matrix[N][N]) {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[N][N] = {0};
int start_row = 0, end_row = N - 1, start_col = 0, end_col = N - 1;
while (start_row <= end_row && start_col <= end_col) {
// 1. 从左到右填充第一行
for (int i = start_col; i <= end_col; ++i) {
matrix[start_row][i] = start_row * N + i;
}
start_row++;
// 2. 从下到上填充第一列
for (int i = start_row; i <= end_row; ++i) {
matrix[i][end_col] = start_row * N + end_col;
}
end_col--;
// 3. 右侧填充
if (start_row <= end_row) {
for (int i = end_col; i >= start_col; --i) {
matrix[end_row][i] = end_row * N + i;
}
end_row--;
}
// 4. 上部填充
if (start_col < end_col) {
for (int i = end_row; i >= start_row; --i) {
matrix[i][start_col] = i * N + start_col;
}
start_col++;
}
}
printSpiral(matrix);
return 0;
}
```
阅读全文