我试图将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矩阵,因此需要将m
和n
初始化为2。
关于c - c中的矩阵相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46738232/