21xrx.com
2024-11-09 00:38:59 Saturday
登录
文章检索 我的文章 写文章
C语言实现两个矩阵的和
2023-06-15 10:14:50 深夜i     --     --

矩阵的加法是矩阵运算中的一种基本操作,本文将使用C语言实现两个矩阵的和。假设有两个矩阵A和B,它们的行数和列数分别为m、n和p、q,其中n和p相等,即第一个矩阵的列数等于第二个矩阵的行数。则它们的和C为一个m行q列的矩阵,满足C[i][j] = A[i][j] + B[i][j]。

首先,我们需要定义两个二维数组来表示矩阵A和B,可以使用动态内存分配来实现:


int **A, **B;

A = malloc(m * sizeof(int *));

B = malloc(p * sizeof(int *));

for (i = 0; i < m; i++)

  A[i] = malloc(n * sizeof(int));

for (i = 0; i < p; i++)

  B[i] = malloc(q * sizeof(int));

接下来,我们需要读入矩阵A和B的元素值:


for (i = 0; i < m; i++)

  for (j = 0; j < n; j++)

    scanf("%d", &A[i][j]);

for (i = 0; i < p; i++)

  for (j = 0; j < q; j++)

    scanf("%d", &B[i][j]);

然后,我们可以定义一个新的二维数组C,用于保存矩阵A和B的和,并计算每个元素的值:


int **C;

C = malloc(m * sizeof(int *));

for (i = 0; i < m; i++)

  C[i] = malloc(q * sizeof(int));

for (i = 0; i < m; i++)

  for (j = 0; j < q; j++)

    C[i][j] = A[i][j] + B[i][j];

最后,我们需要释放动态分配的内存:


for (i = 0; i < m; i++)

  free(A[i]);

for (i = 0; i < p; i++)

  free(B[i]);

for (i = 0; i < m; i++)

  free(C[i]);

free(A);

free(B);

free(C);

使用C语言实现两个矩阵的和是一个基本的程序设计问题,关键词包括矩阵加法、C语言、动态内存分配、二维数组、循环、读入、输出、释放内存等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复