C 程序检查两个矩阵是否相等


2022年4月7日, Learn eTutorial
1627

为了更好地理解,我们始终建议您学习下面列出的C语言编程基础主题

矩阵是以行和列格式排列的一组值。在此 C 程序中,我们需要检查两个矩阵是否相等。为了检查两个矩阵是否相等,我们首先需要检查两个矩阵的阶数是否相等;如果矩阵的阶数不相等,那么我们就无法比较这些矩阵。

矩阵的阶数是什么?

矩阵的阶数是指矩阵拥有的列数和行数。示例:如果矩阵 A 有 **5** 行和 **2** 列,那么矩阵的阶数就是 **5*2**。

如何在 C 语言中检查矩阵是否相等?

该程序的逻辑是首先声明两个矩阵 A 和 B。然后从用户那里读取矩阵 A 和 B 的阶数。使用 `for 循环` 读取矩阵 A 和 B 的元素。然后检查矩阵的阶数是否相等。如果矩阵的阶数相等,那么我们就可以进行比较。否则显示矩阵无法比较。通过使用嵌套的 `for 循环` 检查矩阵 A 的每个元素与矩阵 B 的元素进行比较。如果所有元素都相等,则设置 **Flag=1**,否则 **Flag=0**。如果 **Flag==1** 则显示两个矩阵相等,否则显示两个矩阵不相等。

算法

步骤1:包含头文件以使用C语言程序中的内置函数。

步骤 2: 将矩阵 A、B 声明为整数类型。

步骤 3: 声明整数变量 i,j,R1,C1,R2,flag

步骤 4: 设置 flag=1

步骤 5: 将矩阵 A 的阶数读入变量 R1C1

步骤 6: 将矩阵 B 的阶数读入变量 R2C2

步骤 7: 使用 for 循环 读取矩阵 A 的元素。

步骤 8: 使用 for 循环 读取矩阵 B 的元素。

步骤 9: 使用 for 循环 显示矩阵 A。

步骤 10: 使用 for 循环 显示矩阵 B。

步骤 11: 然后检查如果 R1 == R2 && C1 == C2,则执行步骤 12。否则执行步骤 19。

步骤 12: 设置 i=0

步骤 13: 检查 i

步骤 14: 设置 j=0

步骤 15: 检查 j

步骤 16: 检查 if(A[i][j] != B[i][j]),如果为真,则设置 flag=0 并转到步骤

步骤 17:j 增加 1 并执行步骤 15。

步骤 18:i 增加 1 并重复步骤 13。

步骤 19: 如果行和列不相等,则显示“无法比较”并退出。

步骤 20: 如果 flag==1,则显示两个矩阵相等。

步骤 21: 如果 flag==0,则显示两个矩阵不相等。

C 语言源代码

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

void main() {
  int A[10][10], B[10][10];
  int i, j, R1, C1, R2, C2, flag = 1;
  printf("Enter the order of the matrix A\n");
  scanf("%d %d", & R1, & C1);
  printf("Enter the order of the matrix B\n");
  scanf("%d %d", & R2, & C2);
  printf("Enter the elements of matrix A\n"); /* accept the elements of first matrix */
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C1; j++) {
      scanf("%d", & A[i][j]);
    }
  }
  printf("Enter the elements of matrix B\n"); /* accept the elements of second matrix  */
  for (i = 0; i < R2; i++) {
    for (j = 0; j < C2; j++) {
      scanf("%d", & B[i][j]);
    }
  }
  printf("MATRIX A is\n");
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C1; j++) {
      printf("%d", A[i][j]);
    }
    printf("\n");
  }
  printf("MATRIX B is\n"); /* prints the elements of second matrix  */
  for (i = 0; i < R2; i++) {
    for (j = 0; j < C2; j++) {
      printf("%d", B[i][j]);
    }
    printf("\n");
  }
  if (R1 == R2 && C1 == C2) /* Comparing two matrices for equality */ {
    printf("Matrices can be compared\n");
    for (i = 0; i < R1; i++) {
      for (j = 0; j < C2; j++) {
        if (A[i][j] != B[i][j]) {
          flag = 0;
          break;
        }
      }
    }
  } else {
    printf(" Cannot be compared\n");
    exit(1);
  }
  if (flag == 1)
    printf("Two matrices are equal\n");
  else
    printf("But,two matrices are not equal\n");
}

                                      

输出

Enter the order of the matrix A
2* 2

Enter the order of the matrix B
2 *2

Enter the elements of matrix A
  1 2
  3 4

Enter the elements of matrix B
  1 2
  3 4

MATRIX A is
  1  2
  3  4

MATRIX B is
 1  2
 3  4

Matrices can be compared
Two matrices are equal