C 语言程序求两个矩阵的和与差


2022年3月11日, Learn eTutorial
1993

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

什么是矩阵?

这是一个 C 语言程序,用于求两个矩阵的和与差。矩阵是数字或元素的集合,我们将其排列成行和列。矩阵中的每个数字都称为元素。在这个 C 语言程序中,我们必须对矩阵进行加法和减法运算,为此,第一个条件是矩阵的阶数必须相等。为了进行加法或减法,我们必须将“A”中的每个元素与“B”中对应的元素相加或相减,即“sum[i][j] = A[i][j] + B[i][j]”。

为了在这个 C 语言程序中实现该逻辑,我们通过调用函数 readmatA()readmatB() 从客户端获取两个矩阵。通过调用函数 printmatA()printmatB() 显示矩阵。然后检查矩阵的阶数是否相等。如果矩阵的阶数不相似,则将显示“无法进行加法和减法。”否则调用函数 sum()diff() 对矩阵 A 和 B 执行加法和减法。

算法

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

步骤 2:声明数组 A[][]、B[][]、summat[][]、diffmat[][]

步骤 3:声明一些整数变量 i、j、R1、C1、R2、C2

步骤 4:声明函数 readmatA()printmatB()readmatB()printmatB()sum()diff()

步骤 5:将矩阵 A 的阶数读入 R1 和 C1。

步骤 6:将矩阵 B 的阶数读入 R2 和 C2。

步骤 7:检查是否 R1 != R2 && C1 != C2,如果成立则显示无法进行加法和减法并退出。否则执行步骤 8。

步骤 8:使用 readmatA() 读取矩阵 A 的元素。

步骤 9:然后使用 printmatA() 显示矩阵 A。

步骤 10:使用 readmatB() 读取矩阵 B 的元素。

步骤 11:然后使用 printmatB() 显示矩阵 B。

步骤 12:调用函数 sum()

步骤 13:调用函数 diff()

函数 readmatA()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:将数字读入 A[i][j]

步骤 6:将 j 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

函数 readmatB()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:将数字读入 B[i][j]

步骤 6:将 'j' 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

函数 printmatA()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:显示 A[i][j]

步骤 6:将 'j' 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

函数 printmatB()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:显示 B[i][j]

步骤 6:将 j 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

函数 sum()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:Sumat[i][j] = A[i][j] + B[i][j]

步骤 6:将 j 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

步骤 8:显示“和矩阵是。”

步骤 9:设置 i=0

步骤 10:使用 for 循环检查 i

步骤 11:设置 j=0。

步骤 12:使用另一个 for 循环检查 j

步骤 13:显示 sumat[i][j]

步骤 14:将 j 递增 1 并重复步骤 12。

步骤 15:将 'i' 递增 1 并重复步骤 10。

函数 diff()

步骤 1:设置 i=0

步骤 2:使用 for 循环检查 i

步骤 3:设置 j=0

步骤 4:使用另一个 for 循环检查 j

步骤 5:Diffmat[i][j] = A[i][j] - B[i][j]。

步骤 6:将 j 递增 1 并重复步骤 4。

步骤 7:将 'i' 递增 1 并重复步骤 2。

步骤 8:显示“差矩阵是。”

步骤 9:设置 i=0

步骤 10:使用 for 循环检查 i

步骤 11:设置 j=0

步骤 12:使用另一个 for 循环检查 j

步骤 13:显示 diffmat[i][j]

步骤 14:将 j 递增 1 并重复步骤 12。

步骤 15:将 'i' 递增 1 并重复步骤 10。

C 语言源代码

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

int A[10][10], B[10][10], sumat[10][10], diffmat[10][10];
int i, j, R1, C1, R2, C2;
void main() {
  void readmatA(); /* Function declarations */
  void printmatA();
  void readmatB();
  void printmatB();
  void sum();
  void diff();
  printf("Enter the order of the matrix A\n");
  scanf("%d %d", & R1, & C1);
  printf("Enter the order of the matrix B\n"); /* enter the order of matrix */
  scanf("%d %d", & R2, & C2);
  if (R1 != R2 && C1 != C2) {
    printf("Addition and subtraction are not possible\n");
    exit(1);
  } else {
    printf("Enter the elements of matrix A\n"); /* enter the elements of the matrix */
    readmatA();
    printf("MATRIX A is\n");
    printmatA();
    printf("Enter the elements of matrix B\n");
    readmatB();
    printf("MATRIX B is\n");
    printmatB();
    sum();
    diff();
  }
}
/* main() */
void readmatA() /* Function to read a matrix A */ {
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C1; j++) {
      scanf("%d", & A[i][j]);
    }
  }
  return;
}
void readmatB() /* Function to read a matrix B */ {
  for (i = 0; i < R2; i++) {
    for (j = 0; j < C2; j++) {
      scanf("%d", & B[i][j]);
    }
  }
}
void printmatA() /* Function to print a matrix A */ {
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C1; j++) {
      printf("%d", A[i][j]);
    }
    printf("\n");
  }
}
void printmatB() /* Function to print a matrix B */ {
  for (i = 0; i < R2; i++) {
    for (j = 0; j < C2; j++) {
      printf("%d", B[i][j]);
    }
    printf("\n");
  }
}
void sum() /*Function to find the sum of elements of matrix A and Matrix B*/ {
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C2; j++) {
      sumat[i][j] = A[i][j] + B[i][j];
    }
  }
  printf("Sum matrix is\n");
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C2; j++) {
      printf("%d", sumat[i][j]);
    }
    printf("\n");
  }
  return;
}
void diff() /*Function to find the difference of elements of matrix A and Matrix B*/ {
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C2; j++) {
      diffmat[i][j] = A[i][j] - B[i][j];
    }
  }
  printf("Difference matrix is\n");
  for (i = 0; i < R1; i++) {
    for (j = 0; j < C2; j++) {
      printf("%d", diffmat[i][j]);
    }
    printf("\n");
  }
  return;
}
                                      

输出

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

MATRIX A is
  1   2
  3   4

Enter the elements of matrix B
2
4
6
8

MATRIX B is
2  4
6  8

Sum matrix is
3   6
9  12

Difference matrix is
-1  -2
-3  -4