如何编写函数以交换2D数组中的行(c ++)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写函数以交换2D数组中的行(c ++)相关的知识,希望对你有一定的参考价值。

我正在研究一个问题,以编写一个函数来交换4x6 2D矩阵中的行。我目前拥有的功能仅适用于第一列中的行。我真的不确定我在做什么错。

#include <stdio.h>
#include <math.h>


void swapRows(int matrix[][6], int row1, int row2);

int main() 
    //declare variables
    int matrix[4][6], swapped, i = 0, j = 0, swap1, swap2;

    //insert random values
    for (i = 0; i < 4; i++) 
        for (j = 0; j < 6; j++) 
            matrix[i][j] = rand() % 100;
        
    

    //prompt which rows to swap
    printf("Swap Row: \n");
    scanf_s("%d", &swap1);
    printf("With Row: \n");
    scanf_s("%d", &swap2);

    //swap rows
    //display swapped matrix
    printf("\n");
    for (int i = 0; i < 4; i++) 
        for (int j = 0; j < 6; j++) 
            swapRows(matrix, swap1, swap2);
            printf("%d\t", matrix[i][j]);
        
        printf("\n");
    


//swap function
void swapRows(int matrix[][6], int row1, int row2) 

    for (int i = 0; i < 4; i++) 
        for (int j = 0; j < 6; j++) 
            int tempRow = matrix[row1][j];
            matrix[row1][j] = matrix[row2][j];
            matrix[row2][j] = tempRow;
        
    

答案
void swapRows(int matrix[][6], int row1, int row2) std::swap(matrix[row1], matrix[row2]);

如果您不想使用std::swap,则可以手动交换行的元素,如下所示:

void swapRows(int matrix[][6], int row1, int row2) 

    for (int j = 0; j < 6; j++) 
    
        int temp = matrix[row1][j];
        matrix[row1][j] = matrix[row2][j];
        matrix[row2][j] = temp;
    

以上是关于如何编写函数以交换2D数组中的行(c ++)的主要内容,如果未能解决你的问题,请参考以下文章

C,如何将多维数组传递给 CLR/类库项目中的函数

从C中的函数返回具有多个可变长度数组的结构

用C语言如何将一个一维数组中的元素随机排序

matlab中的length表示啥?应该如何使用?

C语言函数编写:文件复制

c语言中怎样让一个有10个元素的数组输出5个元素后换行后再输出另外五个函数