用C语言表示输入n,在一个二维数组中形成并输出如下所示的n*n矩阵(假定n<=6) 输入 输入n的值。如:输入6,得出的结果为1 1 1 1 1 1 1 2 2 2 2 1 1 2 3 3 2 1 1 2 3 3 2 1 1 2 2 2 2 1 1 1 1 1 1 1
时间: 2023-12-03 10:03:18 浏览: 30
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int matrix[n][n];
int i, j, k;
// 初始化二维数组
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
matrix[i][j] = 0;
}
}
// 填充矩阵
k = 1;
for (i = 0; i < n; i++) {
for (j = i; j < n - i; j++) {
matrix[i][j] = k;
matrix[n - i - 1][j] = k;
matrix[j][i] = k;
matrix[j][n - i - 1] = k;
}
k++;
}
// 输出矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
代码思路:
1. 首先输入 n,定义一个 n×n 的二维数组 matrix。
2. 初始化二维数组 matrix 中的所有元素为 0。
3. 使用变量 k 记录当前填充的数字,从 1 开始,每填充一圈就加 1。利用双重循环填充矩阵。外层循环按顺序填充每一圈;内层循环按照上、右、下、左的顺序依次填充每一圈的数字。
4. 输出填充好的矩阵。
注意:本代码中的二维数组 matrix 使用了变长数组,需要编译器支持 C99 标准。如果编译器不支持,可以将数组大小改为常量或者使用动态分配内存的方式创建二维数组。