#include<stdio.h>
int a[105][105],b[105][105],c[105][105];
int main() {
int ra,ca,rb,cb,i,j;
scanf("%d%d",&ra,&ca);
for(i=0; i<ra; i++) {
for(j=0; j<ca; j++) {
scanf("%d",&a[i][j]);
}
}
scanf("%d%d",&rb,&cb);
for(i=0; i<rb; i++) {
for(j=0; j<cb; j++) {
scanf("%d",&b[i][j]);
}
}
if(ca!=rb){
printf("Error: %d != %d",ca,rb);
return 0;
}
for(i=0; i<ra; i++) {
for(int j=0; j<cb; j++) {
c[i][j] = 0;
for(int x=0; x<ca; x++) {
c[i][j] += a[i][x]*b[x][j];
}
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}
1 如果不一致直接 return 0;
2根据矩阵乘积计算公式计算
#include<stdio.h>
#define N 10
void Digit(int a[][N],int b[][N],int m,int n,int p);
int main()
{
int m, n, p,c,d;
int i, j;
int a[10][10]={0},b[10][10]={0};
scanf("%d%d%d%d",&m,&c,&d,&n);
if(c!=d)
{
printf("Error!: Ca!=Rb");
return 0;
}
p=c;
for(i=0;i<m;i++)//输入 a[][] 矩阵
{
for(j=0;j<p;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<p;i++)//输入 b[][] 矩阵
{
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
}
Digit(a,b,m,n,p);
return 0;
}
void Digit(int a[][N],int b[][N],int m,int n,int p)//对矩阵进行乘积计算
{
int i,j,k,sum=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<p;k++)
{
sum+=a[i][k]*b[k][j]; //按照定义进行计算
}
printf("%d ",sum);
sum=0;//恢复 sum 的值
}
printf("\n");//得到 m 行 数值
}
}