我试图找到我已经输入到程序中的两个向量(向量1,向量2)的欧几里得和。我正在尝试使用while循环来执行此操作,但是由于某种原因,它将无法产生正确的结果。有人可以告诉我我的代码哪里出问题了吗?非常感谢。
i = 1;
int sum = 0;
while (i <= n - 1) {
sum = sqrt((vector1[i] - vector2[i])^2);
i++;
}
printf("%d", sum);
答案 0 :(得分:1)
您在循环的每个迭代中都在执行sum =
,这意味着到循环结束时,sum
将获得在上一次迭代中计算出的值。
我想您想改用sum +=
。
还要注意,sum
的类型为int
,因此在此过程中,您将丢失sqrt
计算出的所有浮点信息。
还要注意,a^b
是指a
与b
之间的XOR,而不是a
对b
的幂。
简而言之,这应该可以解决上面列出的所有3个问题:
sum += abs(vector1[i] - vector2[i]);