大一c语言,函数是矩阵乘法,输入两个矩阵及其行数和列数,把答案打印在屏幕上。我自己测试了一次,发现乘完的新矩阵的行列数和预期相符,但是里面的数字不对。
void multiply(int* p, int a, int b, int* q, int c, int d)//p和q 是用指针代替的二维数组,a,b是第一个矩阵的行数和列数,c,d是第二个矩阵的行数与列数
{
if (b == c)//判断输入的两个矩阵是否满足矩阵相乘的条件
{
int w,x,y,z;
float o;
for (w = 0; w <= a - 1; w++)//控制第一个矩阵的行数
{
for(z=0;z<=d-1;z++)//控制第二个矩阵的列数
{
for (o = x = y = 0; y <= c - 1; y++,x++)//用第一个矩阵每行的数乘第二个矩阵对应的每一列的数
{
o = o + *(p + w * b + x) + *(q + d * y + z);//将每一次相乘得到的结果作为新矩阵的每一项
}
printf("%1.3f ", o);//将新矩阵的每一项打印在屏幕上
}
printf("\n");//换行
}
}
else printf("输入的矩阵不符合做乘法运算的条件\n");//判断输入的两个矩阵是否满足矩阵相乘的条件
}