https://www.51nod.com/Challenge/Problem.html#!#problemId=1137
给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。
输入
第1行:1个数N,表示矩阵的大小(2 <= N <= 100) 第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000) 第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2[i] <= 1000)
输出
输出共N行,每行N个数,对应M1 * M2的结果的一行。
输入样例
2 1 0 0 1 0 1 1 0
输出样例
0 1 1 0
#include<stdio.h>
#define N 120
int a[N][N],b[N][N],ans[N][N];
int main()
{
int n,i,j,p,q;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&b[i][j]);
for(p=1;p<=n;p++)
{
for(q=1;q<=n;q++)
{
for(i=1;i<=n;i++)
ans[p][q]+=a[p][i]*b[i][q];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",ans[i][j]);
printf("\n");
}
return 0;
}
题目描述
计算两个矩阵A和B的乘积。
输入
第一行三个正整数m、p和n,0<=m,n,p<=10,表示矩阵A是m行p列,矩阵B是p行n列;
接下来的m行是矩阵A的内容,每行p个整数,用空格隔开;
最后的p行是矩阵B的内容,每行n个整数,用空格隔开。
输出
输出乘积矩阵:输出占m行,每行n个数据,以空格隔开。
样例输入
2 3 4 1 0 1 0 0 1 1 1 1 3 4 5 6 7 8 9 1 0
样例输出
9 10 2 3 8 9 1 0
#include<stdio.h>
#define N 20
int a[N][N],b[N][N],ans[N][N];
int main()
{
int m,n,i,j,p,q;
scanf("%d%d%d",&m,&p,&n);
for(i=1;i<=m;i++)
for(j=1;j<=p;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=p;i++)
for(j=1;j<=n;j++)
scanf("%d",&b[i][j]);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
for(q=1;q<=p;q++)
ans[i][j]+=a[i][q]*b[q][j];
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
printf("%d ",ans[i][j]);
printf("\n");
}
return 0;
}