首先矩阵的乘法定义如下:
#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;
}