我试图将2个矩阵A和B相乘,然后将结果存储在c中。矩阵存储在一维数组中。有人可以告诉我我的代码有什么问题吗,为什么我不能打印从矩阵a和b相乘得到的结果。

#include <stdio.h>
#include <stdlib.h>
int main(){
    int m, i, j, k, n, x;
    double *A, *B, *C, sum;

    //allocating dynamic memory
    A= (double*)malloc(m*n*sizeof(double));
    B= (double*)malloc(m*n*sizeof(double));
    C= (double*)malloc(m*n*sizeof(double));

    //initializing matrices with values
    for(i =0; i< m*n; i++){
        A[i] = 1.;
        B[i] = 2.;

    }
    //Multiplying the matrices
    for(i=0; i<m; i++ ){
        for (j=0; j<n; j++){
             sum =0;
             for(k=0; k<n; k++){
                 sum+= A[i*n +k]* B[k*n +j];
                 C[i*n +j] = sum;
                 printf("matrix result %f\n", C[i*n +j]);
             }
        }
     }
     return 0;
  }

最佳答案

您必须在使用任何变量之前对其进行初始化,因此在您的代码中,由于这是2D矩阵,因此需要将mn初始化为2。

关于c - c中的矩阵相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46738232/

10-14 12:08
查看更多