C语言实现矩阵点乘
时间: 2023-09-01 14:07:37 浏览: 89
矩阵点乘是指两个矩阵相乘,得到的结果为一个新的矩阵。在C语言中,我们可以使用二维数组来表示矩阵,通过循环遍历实现矩阵点乘。
具体实现如下:
```
#include <stdio.h>
#define ROW 3 // 矩阵A的行数
#define COL 4 // 矩阵B的列数
#define MIDDLE 2 // 矩阵A的列数和矩阵B的行数相等
void matrix_dot(int A[ROW][MIDDLE], int B[MIDDLE][COL], int C[ROW][COL])
{
int i, j, k;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
C[i][j] = 0;
for (k = 0; k < MIDDLE; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
int main()
{
int A[ROW][MIDDLE] = {{1, 2}, {3, 4}, {5, 6}};
int B[MIDDLE][COL] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
int C[ROW][COL];
matrix_dot(A, B, C);
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}
```
在上述代码中,我们定义了三个二维数组A、B和C,分别表示矩阵A、矩阵B和结果矩阵C。然后我们通过调用matrix_dot函数实现矩阵点乘,最后输出结果矩阵C。
注意,矩阵A的行数必须和矩阵B的列数相等才能进行点乘,否则会出错。在上述代码中,我们定义了ROW、COL和MIDDLE三个常量来分别表示矩阵A的行数、矩阵B的列数和矩阵A的列数。