创建一个n行n列的数组,将1~n*n的数字螺旋填入,方向为顺时针(C语言)
时间: 2023-06-10 19:08:30 浏览: 131
以下是一个C语言实现的代码,可以创建一个n行n列的数组,并将1~n*n的数字按照顺时针方向填入:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
int** arr = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
arr[i] = (int*)malloc(n * sizeof(int));
}
int num = 1;
int top = 0, right = n - 1, bottom = n - 1, left = 0;
while (num <= n * n) {
for (int i = left; i <= right; i++) {
arr[top][i] = num++;
}
top++;
for (int i = top; i <= bottom; i++) {
arr[i][right] = num++;
}
right--;
for (int i = right; i >= left; i--) {
arr[bottom][i] = num++;
}
bottom--;
for (int i = bottom; i >= top; i--) {
arr[i][left] = num++;
}
left++;
}
printf("螺旋填充数组如下:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d\t", arr[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
代码中首先提示用户输入n的值,然后根据n动态分配一个n行n列的二维数组。接着,利用top、right、bottom、left四个变量记录当前填充数字的位置,按照顺时针方向依次填入1~n*n的数字。最后,输出填充后的数组,并释放内存。
阅读全文