题目描述
给你两个矩阵A(n*k),B(k*m),请求A*B。
输入
第一行是一个整数K,表示样例的个数。 每个样例包含两个矩阵A和B。 每个矩阵的第一行是两个整数n,m,(1≤n,m≤10)表示矩阵的行和列 以后的n行,每行m个整数,每个整数的绝对值不超过100。输入保证A和B是可乘的。
输出
输出每个样例的结果矩阵,矩阵的整数之间用一个空格隔开,行尾无空格。
样例输入
2 2 2 1 1 1 1 2 1 1 1 2 2 1 1 1 1 2 2 1 1 1 0
样例输出
2 2 2 1 2 1
#include<stdio.h>
int main()
{
int k;
scanf("%d",&k);
while(k--)//案例数
{
int a[10][10] = {0},b[10][10]={0},result[10][10]={0};
int n1, m1, n2, m2;
scanf("%d %d",&n1, &m1);
for(int i = 0;i<n1;i++)//第一个矩阵
{
for(int j = 0;j<m1;j++)
scanf("%d",&a[i][j]);
}
scanf("%d %d",&n2, &m2);
for(int i = 0;i<n2;i++)//第二个矩阵
{
for(int j = 0;j<m2;j++)
scanf("%d",&b[i][j]);
}
for(int i = 0;i<n1;i++)
{
for(int j = 0;j<m2;j++)
{
int temp = 0;
for(int k = 0;k<m1;k++)
temp += (a[i][k]*b[k][j]);
result[i][j] = temp;
}
}
for(int i = 0;i<n1;i++)//第二个矩阵
{
for(int j = 0;j<m2;j++)
{
if(j==0)
printf("%d",result[i][j]);
else
printf(" %d",result[i][j]);
}
printf("\n");
}
}
return 0;
}