我的代码中还有其他所有内容,除了我的do-while循环计算每次都是零。我不知道为什么会这样。这是代码所在的函数:(我必须使用do while循环)
编辑:即使添加括号后,它仍然会变为0.我使用的示例输入是200和45.答案应该是5正确吗?
int calculate_GCD(int value1, int value2){
int big;
int small;
int r; //remainder
int GCD;
if(value1>value2){
big = value1;
small = value2;
}
else{
big = value2;
small = value1;
}
do{
r = big % small;
if(r == 0)
GCD = small;
else{
big = small;
small = r;
}
}
while(r != 0);
return(GCD);
}
感谢任何帮助。
答案 0 :(得分:4)
你需要在else之后加上括号。
else
{
big = value2;
small = value1;
}
答案 1 :(得分:0)
你忘了在else
之后用括号括起两个语句 else
big = value2;
small = value1;
应该有
else
{
big = value2;
small = value1;
}
答案 2 :(得分:-1)
此代码不符合您的预期:
else
big = value2;
small = value1;
以下是它的实际作用:
else
big = value2; // Sometimes do this
small = value1; // ALWAYS do this
这是你想要的:
else
{
big = value2;
small = value1;
}
答案 3 :(得分:-1)
你永远不会改变大小的值 - 他们用计算的mod值来控制r的值。
因此,如果第一次“r”不为零,即第一次执行do-while时,你的循环将永远继续。