并不是简便的算法
//矩阵乘法,mn*nk
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
const int M = 20, N = 20, K = 20;
double A[M][N], B[N][K], C[M][K];
int M1, N1, N2, K1; //矩阵的实际维数
int i, j, k; //循环变量
//输入第一个矩阵MN
cout << "输入第一个矩阵的维数M和N"<<endl;
cin>>M1 >> N1; //输入第一个矩阵的行数和列数
cout << "按行输入第一个矩阵的元素" << endl;
for (size_t i = 0; i < M1; i++) //输入第一个矩阵的元素,按行
{
for (size_t j = 0; j < N1; j++) //第i行
{
cin >> A[i][j];
}
}
//输入第二个矩阵NK
cout << "输入第二个矩阵的维数N和K" << endl;
cin >> N2 >> K1; //输入第二个矩阵的行数和列数
while (N2!=N1)
{
cout << "第二个矩阵的行数应该等于第一个矩阵的列数,请重输" << endl;
}
cout << "按行输入第二个矩阵的元素" << endl;
for (size_t i = 0; i < N1; i++) //输入第二个矩阵的元素,按行
{
for (size_t j = 0; j < K1; j++) //第i行
{
cin >> B[i][j];
}
}
for (size_t i = 0; i < M1; i++) //第M1行
{
for (size_t j = 0; j < K1; j++) //每行的K1列
{
C[i][j] = 0; //i行j列元素赋初值0
for (size_t k = 0; k < N1; k++) //计算i行j列元素的值
{
C[i][j] = C[i][j]+ A[i][k]* B[k][j];
}
}
}
//输出乘积矩阵的元素
for (size_t i = 0; i < M1; i++) //M1行
{
for (size_t j = 0; j < K1; j++) //K1列
{
cout << C[i][j] << "\t"; //每行之间tab分隔
}
cout << endl;
}
return 0;
}