如何在C语言中编写两个向量的叉积函数
我正在用C编写一个函数,它接受两个向量,v1和v3,并执行向量乘以向量的乘法来创建一个矩阵。 v1是1xL1矢量,v3是1xL2矢量。该方法采用v3乘以v1的转置并打印矩阵。这就是我到目前为止所做的:如何在C语言中编写两个向量的叉积函数,c,matrix,vector,cross-product,C,Matrix,Vector,Cross Product,我正在用C编写一个函数,它接受两个向量,v1和v3,并执行向量乘以向量的乘法来创建一个矩阵。 v1是1xL1矢量,v3是1xL2矢量。该方法采用v3乘以v1的转置并打印矩阵。这就是我到目前为止所做的: void crossProduct(float *v1, float *v3, int L1, int L2){ int i, j; float sum; float c[L2][L1]; for(i = 0; i < L2; i++){
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%d", c[i][j]);
}
}
}
void叉积(浮点*v1,浮点*v3,整数L1,整数L2){
int i,j;
浮点数;
浮点数c[L2][L1];
对于(i=0;i
我没有得到预期的结果。我也想用矩阵的形式打印矩阵,但我不知道如何打印 浮点数需要使用
%f
格式,而不是%d
要获得可读数组,请在每个值后放置空格,在每行后放置换行符
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%f ", c[i][j]);
}
printf("\n");
}
}
void叉积(浮点*v1,浮点*v3,整数L1,整数L2){
int i,j;
浮点数;
浮点数c[L2][L1];
对于(i=0;i
是总和=0.0
在错误的位置,或者它只是没有必要,因为下一行应该是c[i][j]=v3[i]*v1[j]
完全没有变量sum
?编译器应该已经告诉您printf
中有错误的格式说明符。是否启用了警告?如果没有,下面是答案,为什么你应该一直这样做。