矩阵只有当左边矩阵的列数等于右边矩阵的行数时,它们才可以相乘,乘积矩阵的行数等于左边矩阵的行数,乘积矩阵的列数等于右边矩阵的列数 定义矩阵两个矩阵A和B 输入:输入第一个矩阵的行与列 输入其第一一个矩阵(A)矩阵的参数 输入第二个矩阵的行与列 输入其第二个矩阵(B) 矩阵的参数 输出 两个矩阵相乘的矩阵得数 备注:最好可以支持左边矩阵的行数与右边矩阵的列数 用c++怎么写出
时间: 2023-11-06 19:07:05 浏览: 38
你可以使用C++语言来实现矩阵相乘的功能。下面是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
// 定义矩阵相乘的函数
std::vector<std::vector<int>> matrixMultiply(const std::vector<std::vector<int>>& A, const std::vector<std::vector<int>>& B) {
int rowsA = A.size();
int colsA = A[0].size();
int rowsB = B.size();
int colsB = B[0].size();
// 判断矩阵是否可以相乘
if (colsA != rowsB) {
std::cout << "矩阵无法相乘!" << std::endl;
return {};
}
// 定义乘积矩阵
std::vector<std::vector<int>> result(rowsA, std::vector<int>(colsB, 0));
// 计算矩阵相乘
for (int i = 0; i < rowsA; i++) {
for (int j = 0; j < colsB; j++) {
for (int k = 0; k < colsA; k++) {
result[i][j] += A[i][k] * B[k][j];
}
}
}
return result;
}
int main() {
int rowsA, colsA;
std::cout << "输入第一个矩阵的行与列:";
std::cin >> rowsA >> colsA;
// 输入第一个矩阵参数
std::cout << "输入第一个矩阵(A)的参数:" << std::endl;
std::vector<std::vector<int>> A(rowsA, std::vector<int>(colsA));
for (int i = 0; i < rowsA; i++) {
for (int j = 0; j < colsA; j++) {
std::cin >> A[i][j];
}
}
int rowsB, colsB;
std::cout << "输入第二个矩阵的行与列:";
std::cin >> rowsB >> colsB;
// 输入第二个矩阵参数
std::cout << "输入第二个矩阵(B)的参数:" << std::endl;
std::vector<std::vector<int>> B(rowsB, std::vector<int>(colsB));
for (int i = 0; i < rowsB; i++) {
for (int j = 0; j < colsB; j++) {
std::cin >> B[i][j];
}
}
// 计算矩阵相乘
std::vector<std::vector<int>> result = matrixMultiply(A, B);
// 输出结果
std::cout << "两个矩阵相乘的结果为:" << std::endl;
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < result[i].size(); j++) {
std::cout << result[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
```
上述代码中,首先定义了一个 `matrixMultiply` 函数来实现矩阵相乘的功能。然后在 `main` 函数中,根据用户的输入,分别输入两个矩阵的参数,并调用 `matrixMultiply` 函数来计算矩阵相乘的结果。最后输出结果。
请注意,上述代码只是一个简单示例,未对输入进行完整的错误处理和边界情况处理。在实际使用中,你可能需要根据具体需求进行适当的优化和完善。