7-54 矩陣A乘以B (15分)


7-54 矩陣A乘以B (15分)
 

給定兩個矩陣AAA和BBB,要求你計算它們的乘積矩陣ABABAB。需要注意的是,只有規模匹配的矩陣才可以相乘。即若AAA有RaR_aRa​​行、CaC_aCa​​列,BBB有RbR_bRb​​行、CbC_bCb​​列,則只有CaC_aCa​​與RbR_bRb​​相等時,兩個矩陣才能相乘。

輸入格式:

輸入先后給出兩個矩陣AAA和BBB。對於每個矩陣,首先在一行中給出其行數RRR和列數CCC,隨后RRR行,每行給出CCC個整數,以1個空格分隔,且行首尾沒有多余的空格。輸入保證兩個矩陣的RRR和CCC都是正數,並且所有整數的絕對值不超過100。

輸出格式:

若輸入的兩個矩陣的規模是匹配的,則按照輸入的格式輸出乘積矩陣ABABAB,否則輸出Error: Ca != Rb,其中CaAAA的列數,RbBBB的行數。

輸入樣例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


#include<stdio.h>
#include<string.h>
int main()
{
 int a_row,a_col;
 int b_row,b_col;
 scanf("%d %d",&a_row,&a_col);
 int a[a_row][a_col];
 int i,j;
 for(i=0;i<a_row;i++)
  for(j=0;j<a_col;j++)
  {
   scanf("%d",&a[i][j]);
   }
 scanf("%d %d",&b_row,&b_col);
  int b[b_row][b_col];
 for(i=0;i<b_row;i++)
  for(j=0;j<b_col;j++)
  {
   scanf("%d",&b[i][j]);
   }
 if(a_col!=b_row)
 {
  printf("Error: %d != %d\n",a_col,b_row);
  return 0;
 }
 int c[a_row][b_col];
 memset(c,0,a_row*b_col*sizeof(int));
 int k;
 printf("%d %d\n",a_row,b_col);
 for(i=0;i<a_row;i++)
 {
  for(j=0;j<b_col;j++)
  {
   for(k=0;k<a_col;k++)
   c[i][j]+=a[i][k]*b[k][j];
   if(j!=b_col-1)
   printf("%d ",c[i][j]);
   else
   printf("%d\n",c[i][j]);
      }
  
 }
 return 0;
 }
 


免責聲明!

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



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