#include<stdio.h>
#include<string.h>
int arr01[100][100];
int arr02[100][100];
int result[100][100];
int hangshu=0;
int lieshu=0;
int hangshu2=0;
int lieshu2=0;
extern int f(int arr01[100][100],int arr02[100][100],int result[100][100],int h1,int l1,int l2);
int main(){
int T=0;
scanf("%d",&T);
scanf("%d",&hangshu);
scanf("%d",&lieshu);
for(int i=0;i<hangshu;i++)
{
for(int j=0;j<lieshu;j++)
{
scanf("%d",&arr01[i][j]);
}
}
for(int i=0;i<T-1;i++){
scanf("%d",&hangshu2);
scanf("%d",&lieshu2);
if(lieshu!=hangshu2)
{
printf("wrong");
return 0;
}
for(int i=0;i<hangshu2;i++){
for(int j=0;j<lieshu2;j++){
scanf("%d",&arr02[i][j]);
}
}
memset(result,0,sizeof(result));
f(arr01,arr02,result,hangshu,lieshu,lieshu2);//相乘之后行数永远是不变的只需要把列数教还回来就行
lieshu=lieshu2;
for(int i=0;i<hangshu;i++){
for(int j=0;j<lieshu;j++){
arr01[i][j]=result[i][j];
}
}
}
for(int i=0;i<hangshu;i++){
for(int j=0;j<lieshu;j++){
printf("%d ",arr01[i][j]);
}
printf("\n");
}
return 0;
}
//定义一个矩阵乘法的函数
int f(int arr01[100][100],int arr02[100][100],int result[100][100],int h1,int l1,int l2){
//你要清楚的了解都是啥含义
//h结果矩阵的行
//l结果矩阵的列
for(int i=0;i<h1;i++)
{
for(int j=0;j<l2;j++)
{
for(int p=0;p<l1;p++)
{
result[i][j]+=arr01[i][p]*arr02[p][j];
}
}
}
}
思路要清晰
这是关键
几个变量之间的关系要想清楚