我正在研究一个问题,以编写一个函数来交换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;
}
}