c 二维数组矩阵乘法
时间: 2023-12-09 20:33:47 浏览: 193
C语言中,二维数组可以用来表示矩阵,矩阵乘法是指将两个矩阵相乘得到一个新的矩阵的过程。在C语言中,可以通过循环嵌套的方式实现矩阵乘法。具体实现过程如下:
```c
// 定义矩阵乘法函数
void matrix_multiply(int **a, int **b, int **c, int m, int n, int p) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
c[i][j] = 0;
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
// 动态分配二维数组
int **create_matrix(int m, int n) {
int **matrix = (int **)malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
matrix[i] = (int *)malloc(n * sizeof(int));
}
return matrix;
}
// 释放动态分配的二维数组
void free_matrix(int **matrix, int m) {
for (int i = 0; i < m; i++) {
free(matrix[i]);
}
free(matrix);
}
// 示例代码
int main() {
int m = 2, n = 3, p = 2;
int **a = create_matrix(m, n);
int **b = create_matrix(n, p);
int **c = create_matrix(m, p);
// 初始化矩阵a和b
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = i + j;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < p; j++) {
b[i][j] = i - j;
}
}
// 计算矩阵c
matrix_multiply(a, b, c, m, n, p);
// 输出矩阵c
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
printf("%d ", c[i][j]);
}
printf("\n");
}
// 释放动态分配的二维数组
free_matrix(a, m);
free_matrix(b, n);
free_matrix(c, m);
return 0;
}
```
阅读全文