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

这行代码贴的
你咋贴出来的