首页 > 代码库 > c矩阵相乘

c矩阵相乘

 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 } 

技术分享

c矩阵相乘