L1-8 矩陣A乘以B(15 分)


給定兩個矩陣A和B,要求你計算它們的乘積矩陣AB。需要注意的是,只有規模匹配的矩陣才可以相乘。即若A有R​a​​行、C​a​​列,B有R​b​​行、C​b​​列,則只有C​a​​與R​b​​相等時,兩個矩陣才能相乘。

  • 輸入格式:
    輸入先后給出兩個矩陣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
    輸出樣例2:
    Error: 2 != 3
#include<stdio.h>
#include<string.h>
int main()
{
	int i,j,k,x,y,n,m,a[124][124],b[124][124],c;
	scanf("%d%d",&x,&y);
	for(i=0;i<x;i++)
	{
		for(j=0;j<y;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&b[i][j]);
		}
	}
	if(y!=m)
	{
		printf("Error: %d != %d",y,m);
	}
	else
	{
		printf("%d %d\n",x,n);
		for(i=0;i<x;i++)
		{
			if(i)
			printf("\n");
			for(j=0;j<n;j++)
			{
				c=0;
				for(k=0;k<y;k++)
				{
					c+=a[i][k]*b[k][j];
				}
				if(j)
				printf(" ");
				printf("%d",c);
			}
		}
	}
}


免責聲明!

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



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