Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这个循环不能找到向量的欧几里德和?_C_Loops - Fatal编程技术网

C 为什么这个循环不能找到向量的欧几里德和?

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将达到在最

我试图找到两个向量的欧几里得和,向量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将达到在最后一次迭代中计算的值

我想你应该用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;。