你如何遍历C中的2D数组对角线?

时间:2014-05-13 02:52:52

标签: c arrays algorithm traversal

我知道如何横向移动2D数组但是如何在C中对齐m是n?与Java类似或没有?像这样:

1 2 3 4
5 6 7 8
9 10 11 12

我们得到了

  

1 6 11

2 个答案:

答案 0 :(得分:2)

每次循环时都向两个数组索引添加1。当m达到宽度-1或n达到高度-1时停止循环。

答案 1 :(得分:0)

创建一个函数,其中参数是:数组,没有行,没有列。因此,我们可能会收到对角线上的值。对角线存在的值是行和列索引相同的值。

X . . . .
. X . . . 
. . X . .
. . . X .
. . . . X

void diagonalPrint(int a[100][100], int noOfRows, int noOfCols)
{
    for(int i=0; i<noOfRows && i<noOfCols ; i++)
    {
        printf("%d", a[i][i]);
    }
}

另外,要打印反向对角线,即

. . . . . X
. . . . X .
. . . X . .
. . X . . .
. X . . . .
X . . . . .
void diagonalPrint(int a[100][100], int noOfRows, int noOfCols)
{
    for(int i=0; i<noOfRows && noOfCols==0 ; i++)
    {
        printf("%d", a[i][noOfCols--]);
    }
}