![]()
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 }