用c语言完成矩阵的乘法
时间: 2024-11-06 21:18:55 浏览: 48
在C语言中,我们可以使用嵌套循环来实现两个矩阵的乘法,这通常被称为"逐元素乘法"。对于两个给定的m行n列矩阵A和n行p列矩阵B,结果将会是一个m行p列的新矩阵C,其中每个元素C[i][j]等于矩阵A的所有行i与矩阵B的对应列j的元素相乘再求和。
以下是基本的矩阵乘法算法的C语言示例:
```c
#include <stdio.h>
// 定义矩阵结构体
typedef struct {
int rows;
int cols;
int data[100][100]; // 这里假设最大大小为100x100,实际应用需要根据需求调整
} Matrix;
// 矩阵乘法函数
Matrix matrix_multiply(Matrix A, Matrix B) {
Matrix C = {A.rows, B.cols};
for (int i = 0; i < A.rows; i++) {
for (int j = 0; j < B.cols; j++) {
int sum = 0;
for (int k = 0; k < A.cols; k++) {
sum += A.data[i][k] * B.data[k][j];
}
C.data[i][j] = sum;
}
}
return C;
}
// 主函数演示矩阵乘法
void print_matrix(Matrix mat) {
for (int i = 0; i < mat.rows; i++) {
for (int j = 0; j < mat.cols; j++) {
printf("%d ", mat.data[i][j]);
}
printf("\n");
}
}
int main() {
Matrix A, B, result;
// 填充矩阵A和B...
// 调用matrix_multiply函数计算结果
result = matrix_multiply(A, B);
// 打印结果矩阵C
print_matrix(result);
return 0;
}
```
请注意,这个例子假设了输入矩阵的数据已知,并且进行了适当的内存分配。在实际应用中,你需要处理用户输入、矩阵维度验证以及错误处理。
阅读全文