为什么此循环对找到向量的欧几里得总和不起作用?

时间:2019-10-20 07:04:00

标签: c loops

我试图找到我已经输入到程序中的两个向量(向量1,向量2)的欧几里得和。我正在尝试使用while循环来执行此操作,但是由于某种原因,它将无法产生正确的结果。有人可以告诉我我的代码哪里出问题了吗?非常感谢。

i = 1;
int sum = 0;
while (i <= n - 1) {
sum = sqrt((vector1[i] - vector2[i])^2);
i++;
}




printf("%d", sum);

1 个答案:

答案 0 :(得分:1)

您在循环的每个迭代中都在执行sum =,这意味着到循环结束时,sum将获得在上一次迭代中计算出的值。

我想您想改用sum +=

还要注意,sum的类型为int,因此在此过程中,您将丢失sqrt计算出的所有浮点信息。

还要注意,a^b是指ab之间的XOR,而不是ab的幂。

简而言之,这应该可以解决上面列出的所有3个问题:

sum += abs(vector1[i] - vector2[i]);