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 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM