首先矩阵的乘法定义如下:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int arr[20][20] = { 0 };
int str[20][20] = { 0 };
int s[20][20] = { 0 };
int n1 = 0;
int n2 = 0;
int m2 = 0;
int z = 0;
int m1 = 0;
scanf("%d %d",&n1,&m1);
for( i = 0 ; i < n1;i++)
{
for( j = 0 ; j < m1;j++)
{
scanf("%d",&arr[i][j]);
}
}
scanf("%d %d",&n2,&m2);
for( i = 0 ;i < n2 ; i++)
{
for( j = 0 ; j < m1 ;j++)
{
scanf("%d",&str[i][j]);
}
}
if( m1 != n2 )
{
printf("error!\n");
}
else
{ 矩阵A*矩阵B
for( i = 0 ;i < n1;i++) //i代表A矩阵的行
{
for( j = 0 ; j < m2 ;j++)//j代表B矩阵的列
{
for( z = 0 ; z < n2 ;z++)//代表A矩阵的列(或B矩阵的行)
{ S矩阵的i行j列 = A矩阵的i行*B矩阵的j列
s[i][j]+=arr[i][z]*str[z][j];
}
}
}
for(i = 0 ;i < n1;i++)
{
for(j = 0 ;j < m2;j++)
{
printf("%d ",s[i][j]);
}
printf("\n");
}
}
return 0;
}