用C++编写一个简单程序,使矩阵相乘,要求数组维数为临时输入
时间: 2024-10-26 19:16:38 浏览: 50
在C++中,我们可以使用二维数组来表示矩阵,并编写一个函数来进行矩阵相乘。由于矩阵乘法的规则,两个矩阵A(m×n)和B(n×p)可以相乘得到一个新的矩阵C(m×p),其中每个元素C[i][j]等于对应位置的元素相乘求和。
下面是一个简单的示例,假设用户通过命令行输入矩阵的维度:
```cpp
#include <iostream>
using namespace std;
// 矩阵乘法函数
void matrixMultiply(int** A, int** B, int m, int n, int p, int** C) {
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 main() {
cout << "请输入第一个矩阵的行数m、列数n:" << endl;
int m, n;
cin >> m >> n;
cout << "请输入第二个矩阵的列数n和行数p:" << endl;
int p;
cin >> p;
// 创建矩阵
int** A = new int*[m];
int** B = new int*[p];
int** C = new int*[m];
for (int i = 0; i < m; ++i)
A[i] = new int[n];
for (int i = 0; i < p; ++i)
B[i] = new int[n];
for (int i = 0; i < m; ++i)
C[i] = new int[p];
// 读取矩阵元素
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
cin >> A[i][j];
for (int i = 0; i < p; ++i)
for (int j = 0; j < n; ++j)
cin >> B[i][j];
// 相乘并输出结果矩阵
matrixMultiply(A, B, m, n, p, C);
cout << "矩阵相乘的结果为:" << endl;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
cout << C[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < m; ++i)
delete[] A[i];
delete[] A;
delete[] B;
delete[] C;
return 0;
}
```
在这个程序中,用户会被提示输入两个矩阵的维度,然后分别输入矩阵的元素。程序会计算并显示矩阵乘法的结果。注意,在实际应用中,应该添加错误处理来检查输入是否合法以及在结束时删除动态分配的内存。
阅读全文