济南网站制作公司哪家好,重庆品牌设计公司,电子商务网站建设步,网站绝对路径题目链接#xff1a;L1-048 矩阵A乘以B
题目要求#xff1a; 给定两个矩阵A和B#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是#xff0c;只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列#xff0c;B有Rb行、Cb列#xff0c;则只有Ca与Rb相等时L1-048 矩阵A乘以B
题目要求 给定两个矩阵A和B要求你计算它们的乘积矩阵AB。需要注意的是只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列B有Rb行、Cb列则只有Ca与Rb相等时两个矩阵才能相乘。
输入格式
输入先后给出两个矩阵A和B。对于每个矩阵首先在一行中给出其行数R和列数C随后R行每行给出C个整数以1个空格分隔且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数并且所有整数的绝对值不超过100。
输出格式
若输入的两个矩阵的规模是匹配的则按照输入的格式输出乘积矩阵AB否则输出Error: Ca ! Rb其中Ca是A的列数Rb是B的行数。
输入样例1
2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8输出样例1
2 4
20 22 24 16
53 58 63 28输入样例2
3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72
思路 1.先将两个数据分别用for循环的方式遍历到ab数组中 2.如果ca与rb不相同也就是a数组的列数与b数组的行数不相同时则打印错误原因 3.如果ca与rb相同则遍历a数组的行数rab数组的列数cba,b数组相同的ca与rb进行乘积相合 4.最后输出合并后的新行数和列数也就是ra和cb 代码
#include bits/stdc.husing namespace std;#define N 1000int main()
{int ra,ca,rb,cb;int a[N][N],b[N][N];cin ra ca;for(int i 0; i ra; i ){for(int j 0; j ca; j ){cin a[i][j];}}cin rb cb;for(int i 0; i rb; i ){for(int j 0; j cb; j ){cin b[i][j];}}if(ca ! rb)printf(Error: %d ! %d\n,ca,rb);else{cout ra cb endl;for(int i 0; i ra; i ){for(int j 0; j cb; j ){int sum 0;for(int k 0; k ca; k ){sum a[i][k] * b[k][j];}cout sum ;if(j ! cb - 1){cout ;}if(j cb - 1){cout endl;}}}}return 0;
}
测试结果