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 }
转载于:https://www.cnblogs.com/ZXWds/p/6039751.html