输出一个 n 阶方阵,其元素排列方式为:从左上角开始按列顺序呈现出蛇形。如: 1 20 21 40 41 60 61 80 81 100 2 19 22 39 42 59 62 79 82 99 3 18 23 38 43 58 63 78 83 98 4 17 24 37 44 57 64 77 84 97 5 16 25 36 45 56 65 76 85 96 6 15 26 35 46 55 66 75 86 95 7 14 27 34 47 54 67 74 87 94 8 13 28 33 48 53 68 73 88 93 9 12 29 32 49 52 69 72 89 92 10 11 30 31 50 51 70 71 90 91 输入描述 每行一个正整数 n (n <= 120),表示 n 阶方阵。 输出描述 按列序排列的蛇形矩阵,每个方阵之间空一行。每个矩阵元素间一个空格,包含最后一个元素之后。用c语言代码解决
时间: 2023-12-21 21:07:08 浏览: 199
以下是用 C 语言实现的代码:
```c
#include<stdio.h>
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
int a[130][130] = {0};
int i = 1, j = 1, k = 1;
while (k <= n * n)
{
while (i <= n && a[i][j] == 0)
{
a[i][j] = k;
k++;
i++;
}
i--;
j++;
while (j <= n && a[i][j] == 0)
{
a[i][j] = k;
k++;
j++;
}
j--;
i--;
while (i >= 1 && a[i][j] == 0)
{
a[i][j] = k;
k++;
i--;
}
i++;
j--;
while (j >= 1 && a[i][j] == 0)
{
a[i][j] = k;
k++;
j--;
}
j++;
i++;
}
for (int p = 1; p <= n; p++)
{
for (int q = 1; q <= n; q++)
{
printf("%d", a[p][q]);
if (q != n)
{
printf(" ");
}
}
printf("\n");
}
printf("\n");
}
return 0;
}
```
解释一下思路:我们可以用一个二维数组 `a` 来存储蛇形矩阵,初始化为 0。从左上角开始,按照蛇形状的顺序,依次将数字 1 到 n^2 填入二维数组中。在填数字的过程中,我们需要注意边界条件,避免数组越界。最后,按照要求输出蛇形矩阵即可。
阅读全文