c语言【问题描述】 编程实现自动填充n×n矩阵元素数值,填充规则为:从第一行最后一列矩阵元素开始按逆时针方向螺旋式填充数值1,2,…,n×n,其中:n从键盘输入且3≤n≤20。最后向显示器输出该矩阵所有元素。 【输入形式】 输入一个正整数,为矩阵的行数和列数 【输出形式】 按行列顺序输出n×n矩阵的所有元素。 (1)每行n列矩阵元素均需在一行内输出显示 (2)输出每行矩阵元素后均需换行输出下一行,共输出n行 (3)每个矩阵元素数值的域宽均为4位且右对齐
时间: 2024-03-31 09:38:30 浏览: 110
C语言解决螺旋矩阵算法问题的代码示例
下面是 C 语言代码实现:
```
#include <stdio.h>
int main() {
int n, i, j, num = 1, row, col, dir;
int matrix[20][20];
printf("请输入矩阵的行数和列数:\n");
scanf("%d", &n);
row = 0;
col = n - 1;
dir = 0;
while (num <= n * n) {
matrix[row][col] = num;
num++;
switch (dir) {
case 0:
if (col == 0 || matrix[row][col - 1] != 0) {
dir = 1;
row++;
} else {
col--;
}
break;
case 1:
if (row == n - 1 || matrix[row + 1][col] != 0) {
dir = 2;
col++;
} else {
row++;
}
break;
case 2:
if (col == n - 1 || matrix[row][col + 1] != 0) {
dir = 3;
row--;
} else {
col++;
}
break;
case 3:
if (row == 0 || matrix[row - 1][col] != 0) {
dir = 0;
col--;
} else {
row--;
}
break;
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%4d", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
运行程序后,输入矩阵的行数和列数,程序会自动按照题目要求填充矩阵,并输出所有元素。
阅读全文