题目描述
编写程序,实现矩阵乘法。计算两个矩阵A和B的乘积。
输入
输入要求:第一行三个正整数m、p和n,0<=m,n,p<=10,表示矩阵A是m行p列,矩阵B是p行n列;接下来的m行是矩阵A的内容,每行p个整数,用空格隔开;最后的p行是矩阵B的内容,每行n个整数,用空格隔开。
输出
输出要求:输出乘积矩阵:输出占m行,每行n个数据,以空格隔开。输出要求:输出乘积矩阵:输出占m行,每行n个数据,以空格隔开。
输入样例 Copy
2 3 4
1 0 1
0 0 1
1 1 1 3
4 5 6 7
8 9 1 0
输出样例 Puts
9 10 2 3
8 9 1 0
题解:
#include <stdio.h>
int main()
{
int x;
int m, p, n;
scanf("%d%d%d", &m, &p, &n);
int arr1[10][10];
int arr2[10][10];
int arr3[10][10]={0};
for (int i = 0; i < m; i++)
{
for (int j = 0; j < p; j++)
{
scanf("%d", &x);
arr1[i][j] = x;
}
}
for (int i = 0; i < p; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &x);
arr2[i][j] = x;
}
}
int r = 0, c = 0;
int y, j;
for (j = 0; r<m; )
{
for (y = 0; y < p; y++)
{
arr3[r][c] += arr1[r][y] * arr2[y][j];
}
c++;
if (c == n)
{
c = 0;
r++;
y = 0;
j = 0;
continue;
}
j++;
}
int k, l;
for (k = 0; k < m-1; k++)
{
for ( l = 0; l < n-1; l++)
{
printf("%d ", arr3[k][l]);
}
printf("%d\n", arr3[k][n-1]);
}
for (int x = 0; x < n ; x++)
printf("%d ", arr3[k][x]);
return 0;
}