C 为什么这个循环不能找到向量的欧几里德和?
我试图找到两个向量的欧几里得和,向量1,向量2,我已经输入到程序中了。我试图用while循环来实现这一点,但由于某些原因,它不会产生正确的结果。有人能告诉我我的代码哪里出了问题吗?非常感谢你C 为什么这个循环不能找到向量的欧几里德和?,c,loops,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); 在循环的每次迭代中都执行sum=操作,这意味着在循环结束时,sum将达到在最
i = 1;
int sum = 0;
while (i <= n - 1) {
sum = sqrt((vector1[i] - vector2[i])^2);
i++;
}
printf("%d", sum);
在循环的每次迭代中都执行sum=操作,这意味着在循环结束时,sum将达到在最后一次迭代中计算的值
我想你应该用sum+=来代替
还要注意,sum的类型是int,因此在这个过程中,您将丢失由sqrt计算的所有浮点信息
还要注意,a^b表示a和b之间的异或,而不是a对b的幂
简言之,这将解决上述所有3个问题:
sum += abs(vector1[i] - vector2[i]);
将sum=改为sum+=我想。谢谢你,但我只允许使用stdio.h和math.h库中的函数。@learningcomputerscience:我很确定abs在math.h中。如果不是,那么您可以在自己的代码中实现它,比如returnx>y?x-y:y-x;。