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 }