学过线代都知道,两矩阵可以相乘的条件为第一个矩阵的列数跟第二个矩阵的行数相等即(A,B)*(B,C)=(A,C)
矩阵可以用一个二维数组保存其值
假设现在有一个2*3的矩阵,还有一个3*4的矩阵,怎么用C语言求他们的乘积矩阵呢?
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[100][100],b[100][100],c[100][100];
int x1,y1,x2,y2;
cin>>x1>>y1;
for(int i=0;i<x1;i++){
for(int j=0;j<y1;j++)
cin>>a[i][j]; //为矩阵a赋值
}
cin>>x2>>y2;
for(int i=0;i<x2;i++){
for(int j=0;j<y2;j++)
cin>>b[i][j]; //为矩阵b赋值
}
for(int i=0;i<x1;i++){
for(int j=0;j<y2;j++){
for(int k=0;k<y1;k++)
c[i][j]+=a[i][k]*b[k][j]; //计算所得矩阵每个位置的值
}
}
for(int i=0;i<x1;i++){
for(int j=0;j<y2;j++)
cout<<c[i][j]<<" "; //输出乘积矩阵c
cout<<endl;
}
return 0;
}
关键步骤就是计算乘积矩阵每个位置值的那一个循环,只要那个循环的逻辑搞清了,以后做题遇到求矩阵就可以直接拿来用
这个简单的弟弟问题昨晚竟然让我想了半天,还是太垃圾了,继续努力啊。。。