矩陣乘法,矩陣乘法公式

1 #include<stdio.h>
2
3 //宏定義
4 #define max_row 200 //定義矩陣最大的行數
5 #define max_column 200 //定義矩陣最大的列數
6
7 int main()
8 {
9 int i,j,k;
10 int m,s,n; //用於記錄矩陣A、B和C的行數和列數:矩陣A:m*s;矩陣B:s*n;矩陣C:m*n
11 int A[max_row][max_column],B[max_row][max_column],C[max_row][max_column]={{0},{0}}; //三個二維數組,分別記錄矩陣A、B和C
12
13 //輸入
14 scanf("%d%d%d",&m,&s,&n); //輸入行、列數
15 for(i=0;i<m;i++) //輸入矩陣A
16 for(j=0;j<s;j++)
17 scanf("%d",&A[i][j]);
18 for(i=0;i<s;i++) //輸入矩陣B
19 for(j=0;j<n;j++)
20 scanf("%d",&B[i][j]);
21
22 //矩陣相乘
23 for(i=0;i<m;i++)
24 for(j=0;j<n;j++)
25 for(k=0;k<s;k++)
26 C[i][j]+=A[i][k]*B[k][j]; //矩陣C應該是m行n列,其中C(i,j)等於矩陣A第i行行向量與矩陣B第j列列向量的內積
27
28 //輸出
29 for(i=0;i<m;i++)
30 {
31 for(j=0;j<n;j++)
32 printf("%d ",C[i][j]);
33 putchar('\n');
34 }
35
36 return 0;
37 }