XD们,再来帮帮我哇.....

大一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");//判断输入的两个矩阵是否满足矩阵相乘的条件
}

我傻了,把加号写成乘号了