问题描述:
设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C= AB,求矩阵C。
解题思路:
设矩阵A[2][3],矩阵B[3][2]:
1、矩阵C的第一行第一列的元素是矩阵A的第一行的每个元素与矩阵B第一列的每个元素乘积之和;
2、矩阵C的第一行第二个元素是矩阵A的第二行的每个元素与矩阵B第二列的每个元素乘积之和;
3、矩阵C的第二行第一列的元素是矩阵A的第一列的每个元素与矩阵B第一行的每个元素乘积之和;
4、矩阵C的第二行第二列的元素是矩阵A的第二列的每个元素与矩阵B第二行的每个元素乘积之和。
代码实现:
#include<stdio.h>
int main()
{
int m, p, n, A[10][10] = { 0 }, B[10][10] = { 0 }, C[10][10] = {0};//三个矩阵
int i, j, k;//循环变量
scanf("%d%d%d", &m, &p, &n);
for (i = 0; i<m; i++)
for (j = 0; j<p; j++)
scanf("%d", &A[i][j]);//输入A矩阵
for (i = 0; i<p; i++)
for (j = 0; j<n; j++)
scanf("%d", &B[i][j]);//输入B矩阵
for (i = 0; i<m; i++)
{
for (k = 0; k<n; k++)
{
for (j = 0; j<p; j++)
{
C[i][k] += A[i][j] * B[j][k];//C[i][k]必须初始化,否则会造成数组中的值不是我们需要的值
}
}
}
for (i = 0; i<m; i++)
{
for (j = 0; j<n; j++)
{
printf("%d", C[i][j]);
if (j == n - 1)
printf("\n");
else
printf(" ");
}
}
return 0;
}
运行结果: