我有一个矩阵(二维指针,(**a)),我想扫描元素螺旋状。(第一行然后最后一列,最后一行(反转),第一列,第二行,依此类推。例如:
1 2 3
8 9 4
7 6 5
我在 C 中有以下代码,但我知道在“其他”条件下我错了。
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int i, j, n, m, p, q, **a, s, c = 0;
printf("rows\n");
scanf("%d", &m);
printf("cols\n");
scanf("%d", &n);
a = (int**)malloc(m*sizeof(int));
for (i = 0; i < m; i++)
{
a[i] = (int*)malloc(n*sizeof(int));
}
printf("insert\n");
for (i = 0; i < m; i++)
{
if (i % 2 == 0)
{
for (j = 0; j < n; j++)
{
printf("a[%d][%d]=", i + 1, j + 1);
scanf("%d", &a[i][j]);
}
}
else
{
for (j = i+1; j < m-i;j++)
{
scanf("%d", a[j][m-c]);
}
c++;
}
}
printf("matrix\n\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
}