在 Gauss Jordan 方法中交换行

Swapping rows in Gauss Jordan method

假设在高斯消元法中矩阵的第一个值,A[0][0]=0

那么我怎样才能将矩阵 "A" 的第 1 行与第 2 行交换,以便得到正确的结果?

保留同一类型的临时值; 按价值交换价值, 示例:

temp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=temp;

假设一个简单的二维数组构建方式如下所示:只需交换行。

#include <stdio.h>
#include <stdlib.h>

#define S_MATRIX_DIM 5

int main()
{

  int **A;
  int *tmp;
  int i, j, entry;

  entry = 0;
  A = malloc(S_MATRIX_DIM * sizeof(int *));
  for (i = 0; i < S_MATRIX_DIM; i++) {
    A[i] = malloc(S_MATRIX_DIM * sizeof(int));
    for (j = 0; j < S_MATRIX_DIM; j++) {
      A[i][j] = entry++;
    }
  }

  puts("Matrix A =");
  for (i = 0; i < S_MATRIX_DIM; i++) {
    for (j = 0; j < S_MATRIX_DIM; j++) {
      printf("%d,", A[i][j]);
    }
    putchar('\n');
  }

  tmp = A[0];
  A[0] = A[1];
  A[1] = tmp;

  puts("Matrix A, row exchanged =");
  for (i = 0; i < S_MATRIX_DIM; i++) {
    for (j = 0; j < S_MATRIX_DIM; j++) {
      printf("%d,", A[i][j]);
    }
    putchar('\n');
  }

  for (i = 0; i < S_MATRIX_DIM; i++) {
    free(A[i]);
  }
  free(A);

  exit(EXIT_SUCCESS);
}