我正在尝试编写代码来解决两个3D矢量的交叉积。我需要能够输入向量的X,Y,Z值,然后输出两个向量的叉积。当我运行程序时,它返回零值。感谢任何帮助!
#include <stdio.h>
#include <stdlib.h>
int a,b,c;
int x,y,z;
int A[3],B[3];
int sum = 0;
int i;
void vector_product(int A[i], int B[i])
{
sum += ((b*z)-(c*y))+((a*z)-(c*x))+((a*y)-(b*x));
}
int main(void)
{
for(i=0;i<3;i++)
{
scanf("%d",&A[i]);
}
for(i=0;i<3;i++)
{
scanf("%d",&B[i]);
}
int A[3] = {a, b, c};
int B[3] = {x, y, z};
vector_product(A,B);
printf("%d\n",sum);
return sum;
}
答案 0 :(得分:0)
看起来您正试图让a
,b
和c
引用A[0]
,A[1]
和A[2]
,但事实并非如此。
行
int A[3] = {a, b, c};
int B[3] = {x, y, z};
隐藏全局变量A
和B
,并使用{0,0,0}
初始化这两个向量(因为永远不会设置a,b,c,x,y或z)。然后在vector_product
函数中,您使用a
,b
,c
等,并且不要使用您传入的两个数组。我建议您做什么一些程序员Dude说并找到/重读了一本关于C的书,特别是关于数组的部分。