📜  C程序,通过将矩阵传递给函数来将两个矩阵相乘(1)

📅  最后修改于: 2023-12-03 15:14:26.640000             🧑  作者: Mango

C程序,通过将矩阵传递给函数来将两个矩阵相乘

本文将介绍C语言中,通过将矩阵传递给函数来实现两个矩阵相乘的方法,希望能够帮助需要的程序员。

1. 矩阵的定义

矩阵是一种常见的数学概念,是一个按照行和列排成的矩形阵列,通常用大写字母表示,如矩阵A、矩阵B等。在C语言中,可以使用二维数组来表示矩阵,其中第一维表示行,第二维表示列。

例如,要定义一个3行4列的矩阵,可以使用以下代码:

int matrix[3][4];
2. 矩阵相乘的定义

矩阵相乘是指两个矩阵的相乘操作,得到的结果也是一个矩阵。设矩阵A有m行n列,矩阵B有n行p列,它们的积AB为一个m行p列的矩阵,其中第i行第j列的元素为A的第i行与B的第j列对应元素乘积之和。

例如,设矩阵A为以下矩阵:

$$ \begin{bmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \ \end{bmatrix} $$

矩阵B为以下矩阵:

$$ \begin{bmatrix} 7 & 8 \ 9 & 10 \ 11 & 12 \ \end{bmatrix} $$

则其积AB为以下矩阵:

$$ \begin{bmatrix} 58 & 64 \ 139 & 154 \ \end{bmatrix} $$

3. 矩阵相乘的函数实现

在C语言中,可以使用函数来实现两个矩阵的相乘操作。首先,需要将矩阵A、B及其积AB都作为参数传递给函数。

以下是实现矩阵相乘的函数代码:

void multiply(int row1, int col1, int matrix1[row1][col1],
              int row2, int col2, int matrix2[row2][col2], 
              int result[row1][col2]) {

    // 检查两个矩阵是否可以相乘
    if (col1 != row2) {
        printf("两个矩阵不能相乘\n");
        return;
    }

    // 计算矩阵相乘的结果
    for (int i = 0; i < row1; i++) {
        for (int j = 0; j < col2; j++) {
            result[i][j] = 0;
            for (int k = 0; k < col1; k++) {
                result[i][j] += matrix1[i][k] * matrix2[k][j];
            }
        }
    }
}

上述函数中,第一个参数row1表示矩阵A的行数,第二个参数col1表示矩阵A的列数,第三个参数matrix1表示矩阵A。类似地,第四个参数row2表示矩阵B的行数,第五个参数col2表示矩阵B的列数,第六个参数matrix2表示矩阵B。最后,第七个参数result表示矩阵相乘的结果。

在函数中,首先检查两个矩阵是否可以相乘,如果不可以,则直接返回。否则,使用三重循环计算矩阵相乘的结果,并存储在result中。

需要注意的是,在调用该函数时,需要先定义三个矩阵,其中矩阵A和B的元素可以进行初始化。

以下是调用上述函数的代码:

int main() {

    // 定义矩阵A、B和结果
    int A[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int B[3][2] = {{7, 8}, {9, 10}, {11, 12}};
    int result[2][2];

    // 计算矩阵相乘
    multiply(2, 3, A, 3, 2, B, result);

    // 输出结果
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

上述代码中,定义了矩阵A、B和结果result,并将矩阵A和B的元素进行了初始化。然后,调用multiply函数计算矩阵相乘的结果,并将结果存储在result中。最后,使用两重循环输出结果矩阵。

4. 总结

本文介绍了C语言中,通过将矩阵传递给函数来实现两个矩阵相乘的方法。该方法需要先定义三个矩阵,其中矩阵A和B的元素可以进行初始化。然后,使用multiply函数计算矩阵相乘的结果,并将结果存储在result中。最后,使用循环将矩阵相乘的结果输出。该方法可以帮助程序员实现矩阵相乘的操作,提高代码的复用性和可维护性。