问题描述   输入两个矩阵,分别是ms,sn大小。输出两个矩阵相乘的结果。 输入格式   第一行,空格隔开的三个正整数m,s,n(均不超过200)。   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。 输出格式   m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。 样例输入 2 3 2 1 0 -1 1 1 -3 0 3 1 2 3 1 样例输出 -3 2 -8 2

提示 矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。 这个题一定要主意好m s n,题的核心算法是那个三层for循环,因为c矩阵是m*n,所以i和k分别小于m和n,例如样例要让A B矩阵相乘三次加在一起等于一个C矩阵的值,所以最后一层是小于j,这个确定以后c[i][k]+=a[i][j]*b[j][k];这个表达式就可以设计出来了。 #include<stdio.h> main() { int a[200][200],b[200][200],c[200][200],m,s,n; scanf("%d%d%d",&m,&s,&n); for(int i=0;i<m;i++) { for(int j=0;j<s;j++) { scanf("%d",&a[i][j]); } } for(int i=0;i<s;i++) { for(int j=0;j<n;j++) { scanf("%d",&b[i][j]); } } for(int k=0;k<n;k++) { for(int i=0;i<m;i++) { for(int j=0;j<s;j++) { c[i][k]+=a[i][j]*b[j][k]; } } } for(int i=0;i<m;i++) { for(int k=0;k<n;k++) { printf("%d ",c[i][k]); } printf("\n"); } }