如何用C语言实现两个二维数组(矩阵)的乘法运算?
时间: 2024-10-21 20:02:02 浏览: 20
juzhenchengfa.rar.rar_C语言二维数组_QT 矩阵_qt二维数组_二维数组
在C语言中,实现两个二维数组(矩阵)的乘法运算通常涉及两层嵌套循环,因为矩阵乘法的规则是将第一个矩阵的每一行元素与第二个矩阵的每一列对应元素相乘并求和得到的结果作为新的矩阵的一个元素。以下是基本的步骤:
```c
#include <stdio.h>
// 定义函数来计算两个矩阵的乘积
void matrixMultiply(int mat1[ROW][COL], int mat2[ROW][COL], int result[ROW][COL], int row1, int col1, int row2) {
for (int i = 0; i < row1; ++i) {
for (int j = 0; j < row2; ++j) {
result[i][j] = 0;
for (int k = 0; k < col1; ++k) {
// 相加的公式:result[i][j] += mat1[i][k] * mat2[k][j]
result[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
}
int main() {
int ROW, COL;
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &ROW, &COL);
int mat1[ROW][COL], mat2[ROW][COL], result[ROW][COL];
// 输入两个矩阵的元素
printf("请输入矩阵1的元素:\n");
for (int i = 0; i < ROW; ++i) {
for (int j = 0; j < COL; ++j) {
scanf("%d", &mat1[i][j]);
}
}
printf("请输入矩阵2的元素:\n");
for (int i = 0; i < ROW; ++i) {
for (int j = 0; j < COL; ++j) {
scanf("%d", &mat2[i][j]);
}
}
// 确保第二个矩阵的列数等于第一个矩阵的行数,满足矩阵乘法的前提
if (COL != ROW) {
printf("无法进行矩阵乘法,矩阵的列数应与另一个矩阵的行数匹配。\n");
return 1;
}
// 调用函数计算乘积
matrixMultiply(mat1, mat2, result, ROW, COL, COL);
// 输出结果矩阵
printf("矩阵乘积为:\n");
for (int i = 0; i < ROW; ++i) {
for (int j = 0; j < COL; ++j) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文