#include<iostream>
using namespace std;
const int MAXN = 100;
//定义矩阵结构体
//实际上一个矩阵就是一个二维的数组
struct Matrix {
int matrix[MAXN][MAXN];
int row; //行数
int column; //列数
Matrix() {}
Matrix(int r, int c) : row(r),column(c) {}
};
//矩阵乘法
Matrix Multiply(Matrix x,Matrix y) {
//合法性判断
if(x.column != y.row) {
printf("Illegal input");
}
Matrix answer = Matrix(x.row,y.column);
for(int i = 0; i < answer.row; ++i) {
for(int j = 0; j < answer.column; ++j) {
answer.matrix[i][j] = 0; //累加器
for(int k = 0; k < x.column; ++k) {
answer.matrix[i][j] += x.matrix[i][k] * y.matrix[k][j];;
}
}
}
return answer;
}
//定义输入矩阵方法
void InputMatrix(Matrix& x) {
//初始化矩阵
for(int i = 0; i < x.row; ++i) {
for(int j = 0; j < x.column; ++j) {
scanf("%d",&x.matrix[i][j]);
}
}
return ;
}
//定义输出矩阵方法
void OutputMatrix(Matrix x) {
//初始化矩阵
for(int i = 0; i < x.row; ++i) {
for(int j = 0; j < x.column; ++j) {
printf("%d ",x.matrix[i][j]);
}
printf("\n");
}
return ;
}
int main() {
//定义两个进行运算的矩阵
Matrix x(2,3);
Matrix y(3,2);
InputMatrix(x);
InputMatrix(y);
Matrix answer = Multiply(x,y);
OutputMatrix(answer);
return 0;
}