C语言矩阵的乘法
时间: 2023-09-13 07:05:22 浏览: 178
基于C语言的矩阵乘法
在 C 语言中,矩阵的乘法可以通过嵌套循环来实现。假设有两个 `m × n` 和 `n × p` 的矩阵 `A` 和 `B`,要计算它们的乘积 `C = AB`,可以使用以下代码实现:
```c
#include <stdio.h>
void matrix_multiply(double *A, double *B, double *C, int m, int n, int p) {
int i, j, k;
double sum;
for (i = 0; i < m; i++) {
for (j = 0; j < p; j++) {
sum = 0;
for (k = 0; k < n; k++) {
sum += A[i * n + k] * B[k * p + j];
}
C[i * p + j] = sum;
}
}
}
int main() {
// 定义两个矩阵 A 和 B
double A[2][3] = {{1, 2, 3}, {4, 5, 6}};
double B[3][2] = {{7, 8}, {9, 10}, {11, 12}};
// 计算矩阵乘积 C = AB
double C[2][2];
matrix_multiply(&A[0][0], &B[0][0], &C[0][0], 2, 3, 2);
// 输出结果
int i, j;
printf("Matrix multiplication result:\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("%f ", C[i][j]);
}
printf("\n");
}
return 0;
}
```
在上述代码中,我们先定义了两个 `2 × 3` 和 `3 × 2` 的矩阵 `A` 和 `B`,然后通过 `matrix_multiply()` 函数计算它们的乘积,最后输出计算结果矩阵 `C`。
需要注意的是,矩阵乘法的结果矩阵 `C` 的行数等于矩阵 `A` 的行数,列数等于矩阵 `B` 的列数。在计算矩阵乘积时,内层循环遍历的是矩阵 `A` 和矩阵 `B` 的共同维度。在上述代码中,我们使用了二维数组来表示矩阵,但实际上,矩阵也可以用一维数组来表示,数组元素的下标可以通过公式 `i * n + j` 计算出来。
阅读全文