问题描述 输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2 3 21 0 -11 1 -30 31 23 1样例输出-3 2-8 2提示矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3#include <stdio.h>#define SIZE 201struct RECT { int r[SIZE];};int main() { int m, s, n; scanf("%d %d %d", &m, &s, &n); struct RECT A[m]; struct RECT B[n]; int i, j; for (i = 0; i < m; i++) { for (j = 0; j < s; j++) { scanf("%d", &A[i].r[j]); } } for (i = 0; i < s; i++) { for (j = 0; j < n; j++) { scanf("%d", &B[j].r[i]); } } int q; for (j = 0; j < m; j++) { for (i = 0; i < n; i++) { int sum = 0; for (q = 0; q < s; q++) { sum += A[j].r[q] * B[i].r[q]; } PRintf("%d ", sum); } printf("/n"); } return 0;}
新闻热点
疑难解答