由于C语言对于数值类型数组,无法一次性输出整个数组,所以只能利用循环进行元素逐个输出了。
代码如下,详情见代码。
#include <stdio.h>
void printSpiral(int m, int n, int matrix[11][11]) {
int i, t, b, l, r;
// 初始化边界
t = 0;
b = m - 1;
l = 0;
r = n - 1;
// 遍历直到所有元素都被打印
while (t <= b && l <= r)
{
// 从左到右打印顶部--行
for (i = l; i <= r; ++i) {
printf("%d ", matrix[t][i]);
}
t++;
// 从上到下打印右侧--列
for (i = t; i <= b; ++i) {
printf("%d ", matrix[i][r]);
}
r--;
// 从右到左打印底部--行
if (t <= b) {
for (i = r; i >= l; --i) {
printf("%d ", matrix[b][i]);
}
b--;
}
// 从下到上打印左侧--列
if (l <= r)
{
for (i = b; i >= t; --i)
{
printf("%d ", matrix[i][l]);
}
l++;
}
}
printf("\n");
}
int main()
{
int m, n;
int matrix[11][11];
// 输入矩阵的行数和列数
scanf("%d %d", &m, &n);
// 输入矩阵的元素
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
{
scanf("%d", &matrix[i][j]);
}
}
// 打印螺旋顺序
printSpiral(m, n, matrix);
return 0;
}