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 }