C程序函数实现矩阵乘法
时间: 2023-11-27 11:27:09 浏览: 96
以下是一个使用函数实现矩阵乘法的C语言程序:
```c
#include <stdio.h>
void matrix_multiplication(int m1, int n1, int m2, int n2, int first[][n1], int second[][n2], int multiply[][n2]) {
int i, j, k, sum;
for (i = 0; i < m1; i++) {
for (j = 0; j < n2; j++) {
sum = 0;
for (k = 0; k < n1; k++) {
sum += first[i][k] * second[k][j];
}
multiply[i][j] = sum;
}
}
}
int main() {
int m1, n1, m2, n2, i, j;
int first[10][10], second[10][10], multiply[10][10];
printf("Enter the number of rows and columns of first matrix: ");
scanf("%d%d", &m1, &n1);
printf("Enter the elements of first matrix:\n");
for (i = 0; i < m1; i++) {
for (j = 0; j < n1; j++) {
scanf("%d", &first[i][j]);
}
}
printf("Enter the number of rows and columns of second matrix: ");
scanf("%d%d", &m2, &n2);
if (n1 != m2) {
printf("Matrices can't be multiplied.\n");
} else {
printf("Enter the elements of second matrix:\n");
for (i = 0; i < m2; i++) {
for (j = 0; j < n2; j++) {
scanf("%d", &second[i][j]);
}
}
matrix_multiplication(m1, n1, m2, n2, first, second, multiply);
printf("Product of the matrices:\n");
for (i = 0; i < m1; i++) {
for (j = 0; j < n2; j++) {
printf("%d ", multiply[i][j]);
}
printf("\n");
}
}
return 0;
}
```
该程序定义了一个 `matrix_multiplication` 函数,用于计算两个矩阵的乘积。该函数接受两个二维数组 `first` 和 `second`,以及它们的行数和列数 `m1`、`n1`、`m2` 和 `n2`,以及一个用于存储乘积的二维数组 `multiply`。函数中使用三个嵌套循环遍历两个矩阵的元素,计算它们的乘积,并将结果存储到 `multiply` 数组中。
在 `main` 函数中,程序先提示用户输入第一个矩阵的行数和列数,然后读取矩阵元素,存储到 `first` 数组中。然后提示用户输入第二个矩阵的行数和列数,读取矩阵元素,存储到 `second` 数组中。如果两个矩阵不能相乘,则输出一条错误信息。如果两个矩阵可以相乘,则调用 `matrix_multiplication` 函数计算它们的乘积,并将结果存储到 `multiply` 数组中。最后,程序输出乘积矩阵的元素。
阅读全文