我试图将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;
}
答案 0 :(得分:0)
您必须在使用之前初始化任何变量,因此在您的代码中,您需要将m
和n
初始化为2,因为这是2D矩阵。
答案 1 :(得分:0)
n
和m
未初始化。