C 语言程序实现矩阵对角线互换


2022年4月15日, Learn eTutorial
2048

什么是矩阵?

矩阵是相同数据类型元素的集合。矩阵可以定义为数组的数组,这意味着元素以行和列的格式排列。我们可以通过它们的索引(位置值)访问矩阵中的元素。

什么是矩阵的对角线?

矩阵的对角线表示矩阵中对角线上的元素。也就是说,从左上角到右下角的元素,其中矩阵元素的行号和列号相等。例如,下面所示矩阵的对角线元素是“1,5,9”和“3,5,7

interchange diagonals of matrix

如何使用 C 语言程序互换矩阵的对角线?

在这个 C 语言程序中,我们需要互换一个方阵的对角线——一个行数和列数相等的矩阵。互换对角线将交换对角线上的元素。此 C 语言程序中使用的逻辑是交换矩阵元素的位置以获得所需的结果。

interchange diagonals of matrix

第一步,我们接受矩阵的阶数到 mn。然后我们必须检查“m”和“n”是否相等。也就是说,矩阵的行数和列数是否相等。如果相等,它就是一个方阵,所以我们将读取矩阵的元素并显示它们,然后我们使用 for 循环互换对角线元素,并显示互换后的矩阵。如果“m”和“n”不相等,那么我们将显示矩阵的阶数不是一个方阵。

算法

步骤 1:包含头文件以使用内置函数。

步骤 2:声明整数变量 i, j, m, n, val, 和矩阵 ma[][]

步骤 3:将矩阵的阶数读取到“m”和“n”中。

步骤 4:然后检查 m = n,如果为真则执行步骤 5。否则显示给定的阶数不是方阵。

步骤 5:使用嵌套的 for 循环(条件为 i<mj<n)从用户读取矩阵的系数,并将数字保存到 ma[i][j] 中。

步骤 6:使用另一个嵌套的 for 循环显示给定矩阵。

步骤 7:使用一个 for 循环,条件为 i<m,执行步骤 8

步骤 8:按照以下方式交换对角线上的元素,

  1. val = ma[j][i]
  2. ma[i][i] = ma[i][m-i-1]
  3. ma[i][m-i-1] = val

步骤 9:使用嵌套的 for 循环显示互换对角线后的矩阵元素 ma[i][j]


要互换矩阵的对角线,我们必须使用以下 C 语言主题,请参考这些主题以获得更好的理解

C 语言源代码

                                          #include <stdio.h>

void main() {
    static int ma[10][10];
    int i, j, m, n, val;
    printf("Enter the order of the matrix \n");
    scanf("%d %d", & m, & n);
    if (m == n) {
      printf("Enter the elements of the matrix\n");
      for (i = 0; i < m; ++i) {
        for (j = 0; j < n; ++j) {
          scanf("%d", & ma[i][j]);
        }
      }    
        printf("The given matrix is \n"); /* prints the input matrix */
        for (i = 0; i < m; ++i) {
          for (j = 0; j < n; ++j) {
            printf(" %d", ma[i][j]);
          }
          printf("\n");
        }
        for (i = 0; i < m; ++i) {
          val = ma[i][i];
          ma[i][i] = ma[i][m - i - 1]; /* interchanging the elements of diagonals inside a matrix */
          ma[i][m - i - 1] = val;
        }
        printf("The matrix after changing the diagonals\n");
        for (i = 0; i < m; ++i) {
          for (j = 0; j < n; ++j) {
            printf(" %d", ma[i][j]); /* displaying the output matrix */
          }
          printf("\n");
        }
      } else
        printf("The given order is not of a square matrix\n");
    } /* end of main() */
                                      

输出

Enter the order of the matrix
3 3

Enter the elements of the matrix
1 2 3
4 5 6
7 8 9

The given matrix is
 1 2 3
 4 5 6
 7 8 9

The matrix after changing the diagonals
 3 2 1
 4 5 6
 9 8 7