C语言求两矩阵相乘编程
时间: 2024-11-12 13:35:45 浏览: 46
在C语言中,求两个矩阵相乘通常涉及到数组操作和嵌套循环。矩阵乘法规则规定,如果有一个m×n矩阵A和一个n×p矩阵B,它们的乘积将是一个m×p矩阵C,其中每个元素C[i][j]等于A的所有行i与B的列j对应元素相乘然后求和。
下面是一个简单的示例,展示了如何通过双重循环计算两个整数矩阵的乘法:
```c
#include <stdio.h>
// 定义函数用于计算两个矩阵相乘
void matrixMultiply(int A[rowsA][colsA], int B[rowsB][colsB], int result[rowsA][colsB]) {
int i, j, k;
// 确保矩阵可以相乘
if (colsA != rowsB) {
printf("无法相乘矩阵,A的列数(B的行数)不匹配!\n");
return;
}
for (i = 0; i < rowsA; i++) { // 遍历结果矩阵的第一维(行)
for (j = 0; j < colsB; j++) { // 遍历结果矩阵的第二维(列)
result[i][j] = 0; // 初始化结果矩阵的元素
for (k = 0; k < colsA; k++) { // 遍历第一个矩阵的第三维(列),对应第二个矩阵的行
result[i][j] += A[i][k] * B[k][j]; // 计算并累加乘积
}
}
}
}
int main() {
int rowsA, colsA, rowsB, colsB, i;
printf("请输入矩阵A的行数和列数: ");
scanf("%d %d", &rowsA, &colsA);
printf("请输入矩阵B的行数和列数: ");
scanf("%d %d", &rowsB, &colsB);
// 检查输入是否允许相乘
if (rowsA == colsB && colsA == rowsB) {
int A[rowsA][colsA], B[rowsB][colsB], C[rowsA][colsB];
printf("请输入矩阵A:\n");
for (i = 0; i < rowsA; i++) {
for (int j = 0; j < colsA; j++) {
scanf("%d", &A[i][j]);
}
}
printf("请输入矩阵B:\n");
for (i = 0; i < rowsB; i++) {
for (int j = 0; j < colsB; j++) {
scanf("%d", &B[i][j]);
}
}
matrixMultiply(A, B, C); // 调用函数进行乘法
printf("矩阵A和B的乘积为:\n");
for (i = 0; i < rowsA; i++) {
for (int j = 0; j < colsB; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
} else {
printf("矩阵无法相乘。\n");
}
return 0;
}
阅读全文