矩阵相乘
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,m,p;
int a[105][105],b[105][105],c[105][105];
memset(c,0,sizeof(c));
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
cin>>p;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=p;j++)
{
cin>>b[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=p;j++)
{
for(int k=1;k<=m;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
int main()
:是 C++ 程序的入口点,整个程序从这里开始执行,函数返回值类型为int
,通常返回0
表示程序正常结束,返回其他非零值可用于表示程序出现错误等情况。int n, m, p;
:声明了三个整型变量,从后续代码可以看出,n
表示第一个二维数组a
的行数,m
表示a
的列数同时也是第二个二维数组b
的行数,p
表示b
的列数。int a[105][105], b[105][105], c[105][105];
:定义了三个二维整型数组,a
、b
、c
,数组大小都设定为105×105
,在实际应用中可以根据具体要处理的数据规模进行调整,但这种固定大小的定义方式要注意避免越界访问问题。这里a
和b
用于存储输入的数据,c
用于存储计算结果。memset(c, 0, sizeof(c));
:使用memset
函数将二维数组c
的所有元素初始化为 0。memset
函数按字节对给定的内存区域进行填充,第一个参数是要填充的内存起始地址(这里是数组c
),第二个参数是要填充的值(0 表示将字节都填充为 0,对于整型数组来说就是将每个元素初始化为 0),第三个参数是要填充的内存区域的总字节数(通过sizeof(c)
获取数组c
的大小对应的字节数)。