1 #include <stdio.h>
2 #define MAX 10
3 void MatrixMutiply(int m,int n,int l,int MatrixA[MAX][MAX],int MatrixB[MAX][MAX],int MatrixResult[MAX][MAX])
4 {
5 int i,j,k;
6 int Sum;
7 //嵌套循环计算结果矩阵(m*l)的每个元素
8 for(i=0;i<m;i++)
9 for(j=0;j<l;j++)
10 {
11 /*按照矩阵乘法的规则计算结果矩阵的i*j元素*/
12 Sum=0;
13 for(k=0;k<n;k++)
14 Sum+=MatrixA[i][k]*MatrixB[k][j];
15 MatrixResult[i][j]=Sum;
16 }
17 }
18
19 int main()
20 {
21 int MatrixA[MAX][MAX],MatrixB[MAX][MAX];
22 int MatrixResult[MAX][MAX],Temp;
23 int i,j,m,n,l;
24 printf("**************************************************\n");
25 printf(" 矩 阵 相 乘 算 法\n");
26 printf("**************************************************\n\n");
27
28 //输入两个矩阵的的行列数m,n,l
29 printf("\n请输入矩阵MatrixA的行数m:\n");
30 scanf("%d",&m);
31 printf("请输入矩阵MatrixA的列数n:\n");
32 scanf("%d",&n);
33 printf("请输入矩阵MatrixB的列数l:\n");
34 scanf("%d",&l);
35
36 //输入第一个矩阵的每个元素
37 printf("\n请输入矩阵MatrixA(%d*%d)的元素:\n",m,n);
38 for(i=0;i<m;i++)
39 for(j=0;j<n;j++)
40 {
41 scanf("%d",&Temp);
42 MatrixA[i][j]=Temp;
43 }
44
45 //输入第二个矩阵的每个元素
46 printf("\n请输入矩阵MatrixB(%d*%d)的元素:\n",n,l);
47 for(i=0;i<n;i++)
48 for(j=0;j<l;j++)
49 {
50 scanf("%d",&Temp);
51 MatrixB[i][j] = Temp;
52 }
53 //调用函数进行乘法运算,结果放在MatrixResult 中
54 MatrixMutiply(m,n,l,MatrixA,MatrixB,MatrixResult);
55 //打印输出结果矩阵
56 printf("\n矩阵相乘的结果MatrixResult为: \n");
57 for(i=0;i<m;i++)
58 {
59 for(j=0;j<l;j++)
60 printf("%d ",MatrixResult[i][j]);
61 printf("\n");
62 }
63 }