7-8 矩阵A乘以B (15分)

7-8 矩阵A乘以B (15分)
 

给定两个矩阵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,其中CaA的列数,RbB的行数。

输入样例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 
 

输出样例2:

Error: 2 != 3
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int i,j,k,x,y,n,m,a[124][124],b[124][124],c;
 6     scanf("%d%d",&x,&y);
 7     for(i=0;i<x;i++)
 8     {
 9         for(j=0;j<y;j++)
10         {
11             scanf("%d",&a[i][j]);
12         }
13     }
14     scanf("%d%d",&m,&n);
15     for(i=0;i<m;i++)
16     {
17         for(j=0;j<n;j++)
18         {
19             scanf("%d",&b[i][j]);
20         }
21     }
22     if(y!=m)
23     {
24         printf("Error: %d != %d",y,m);
25     }
26     else
27     {
28         printf("%d %d\n",x,n);
29         for(i=0;i<x;i++)
30         {
31             if(i)
32             printf("\n");
33             for(j=0;j<n;j++)
34             {
35                 c=0;
36                 for(k=0;k<y;k++)
37                 {
38                     c+=a[i][k]*b[k][j];
39                 }
40                 if(j)
41                 printf(" ");
42                 printf("%d",c);
43             }
44         }
45     }
46 }
 

猜你喜欢

转载自www.cnblogs.com/xiaolitongxueyaoshangjin/p/12106467.html