📜  C程序使用多维数组将两个矩阵相乘(1)

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

C程序使用多维数组将两个矩阵相乘

介绍

在C语言中,我们可以使用多维数组来表示矩阵,并使用嵌套循环来实现矩阵相乘的操作。矩阵相乘的结果是一个新的矩阵,其行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。本文将为您介绍如何在C程序中实现矩阵相乘,并给出一个示例代码。

示例代码

以下是一个C程序示例,用于计算两个矩阵的乘积。

#include <stdio.h>

#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3

// 函数声明
void matrixMultiplication(int matrix1[ROW1][COL1], int matrix2[ROW2][COL2], int result[ROW1][COL2]);

int main() {
    int matrix1[ROW1][COL1] = {{1, 2, 3},
                               {4, 5, 6},
                               {7, 8, 9}};
    int matrix2[ROW2][COL2] = {{1, 2, 3},
                               {4, 5, 6},
                               {7, 8, 9}};
    int result[ROW1][COL2];

    // 调用矩阵相乘函数
    matrixMultiplication(matrix1, matrix2, result);

    // 打印结果矩阵
    printf("结果矩阵:\n");
    for (int i = 0; i < ROW1; i++) {
        for (int j = 0; j < COL2; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

// 矩阵相乘函数的实现
void matrixMultiplication(int matrix1[ROW1][COL1], int matrix2[ROW2][COL2], int result[ROW1][COL2]) {
    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];
            }
        }
    }
}

以上代码定义了两个3x3的矩阵matrix1matrix2,以及一个用于存储结果的3x3矩阵result。程序中的matrixMultiplication函数用于实现矩阵相乘操作。

main函数中,我们首先初始化了两个矩阵,然后调用matrixMultiplication函数计算它们的乘积,并将结果存储在result矩阵中。最后,将结果矩阵打印输出。

运行结果

运行以上示例代码,可以得到以下输出结果:

结果矩阵:
30 36 42
66 81 96
102 126 150

总结

通过以上示例代码,您可以看到如何在C程序中使用多维数组来实现矩阵相乘的操作。使用嵌套循环可以遍历每个矩阵元素,并按矩阵相乘的规则进行计算。这个方法同样适用于更大的矩阵,只需要相应调整矩阵的行数和列数即可。祝您在使用这个方法时取得成功!