矩阵乘法
题目要求:
给定一个 m 行、n 列的矩阵 A 和一个 n 行、m 列的矩阵 B。需要用矩阵 A 与矩阵 B 相乘,并且将 m 行 m 列的乘积结果输出。
输入格式:
测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入2 个整数,分别对应题目描述中的 m 和 n(1≤m, n≤10),两个整数之间用一个空格分隔。接下来 m 行,每行包含 n 个整数,每两个整数之间用一个空格分隔。对应 m 行 n 列的矩阵A。再接下来 n 行,每行包含 m 个整数,每两个整数之间用一个空格分隔。对应 n 行 m 列的矩阵 B。
注:矩阵中的整数均大于等于−100,小于等于100。
输出格式:
输出包括 m 行,每行包含 m 个整数,对应矩阵 A 乘矩阵 B 的结果。每两个整数之间一个空格,每行最后一个整数后面没有空格。
样例输入:
2 2
2 3
3 1
3 2
4 3
样例输出:
18 13
13 9
解题思路:
按照矩阵乘法的规则进行计算。
代码编写:
#include <stdio.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
int matrix_a[m][n];
int matrix_b[n][m];
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
scanf("%d", &matrix_a[i][j]);
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
scanf("%d", &matrix_b[i][j]);
}
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < m; j++) {
int sum = 0;
for(int k = 0; k < n; k++) {
sum += matrix_a[i][k] * matrix_b[k][j];
}
printf("%d", sum);
if(j != m - 1) printf(" ");
}
printf("\n");
}
return 0;
}
版权声明:本文为qq_40644809原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。