我将如何在C中反转2D数组?

问题描述 投票:0回答:2

让我们说我的数组看起来像这样。行数将始终与该程序中的列数匹配。

[[0][1][2]

[[3][4][5]

[[6][7][8]

我需要将其转换为相反的形式:

[[2][1][0]

[[5][4][3]

[[8][7][6]

我知道多维数组只是数组的数组,希望将我的问题的范围缩小到只反转一维数组,但是我不知道如何将相同的想法应用于二维数组。大小将不会始终是3 x 3的数组,但是行和列将始终是相同的数字。

c arrays reverse
2个回答
0
投票

您可以使用简单的递归来做到这一点:

int rows, columns;

void reverseMatrix(int[rows][columns] m, int i, int j){
    if(j == rows) return;
    if(i >= columns - i - 1) reverseMatrix(m, 0, j + 1);
    else {
        int aux = m[i][j];
        m[i][j] = m[columns - i - 1][j];
        m[columns - i - 1][j] = aux;
        reverseMatrix(m, i + 1, j);
    }
}

0
投票

尝试下面的代码,这里n是行数,m是列数。希望这可以解决您的问题。编码愉快!

for(i = 0; i < n; i++) {
    for(j = 0; j < m/2; j++) {
        int temp = arr[i][j];
        arr[i][j] = arr[i][m-j-1];
        arr[i][m-j-1] = temp;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.