C语言编程实现自动填充n×n矩阵元素数值,填充规则为:从第一行最后一列矩阵元素开始按逆时针方向螺旋式填充数值1,2,…,n×n,其中:n从键盘输入且3≤n≤20。最后向显示器输出该矩阵所有元素。
时间: 2023-06-14 21:03:48 浏览: 98
以下是C语言实现自动填充n×n矩阵的代码:
```c
#include <stdio.h>
int main()
{
int n, i, j, num = 1;
int matrix[20][20];
printf("请输入矩阵的维数n(3<=n<=20):");
scanf("%d", &n);
// 填充矩阵
int row = 0, col = n - 1;
while (num <= n * n)
{
for (i = row; i <= n - 1 - row; i++)
{
matrix[i][col] = num;
num++;
}
for (j = col - 1; j >= row; j--)
{
matrix[n - 1 - row][j] = num;
num++;
}
for (i = n - 2 - row; i >= row; i--)
{
matrix[i][row] = num;
num++;
}
for (j = row + 1; j <= col - 1; j++)
{
matrix[row][j] = num;
num++;
}
row++;
col--;
}
// 输出矩阵
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%4d", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
解释一下思路:
首先从第一行最后一列开始,按照逆时针方向螺旋式填充数值,每填充一个数值就把 num 加 1。接着,分别填充最后一列(从上到下)、最后一行(从右到左)、第一列(从下到上)和第一行(从左到右),每填充一个数值就把 num 加 1。填充完一轮后,把起始行和起始列分别向内缩 1,再进行下一轮填充,直到填满整个矩阵。最后,输出矩阵中的所有元素。
阅读全文