C 为什么在满足布尔条件后,我的DO-while循环就无法结束

C++ Why does my do-while loop fail to end as soon as boolean condition is met?

本文关键字:循环 DO-while 结束 我的 为什么 满足 布尔 条件      更新时间:2023-10-16

我当前的项目要求使用do-nile循环和单独的值生成功能进行程序。该程序要求无限期的输入数量,直到输入最后两个数字之间的差异大于12。代码可以工作,但只有在显然感觉到它时才起作用。有时它认识到布尔已经立即达到并终止,有时我可以输入15个以上的数字,直到结束,如果它甚至首先结束。如果可能的话,我想保持我的代码与目前的相似之处。我知道我需要一个前提条件,因为第一个输入与目前试图弄清楚这一点。

到目前为止,这是我的代码:

bool TwelveApart(int x, int y);
int main()
{
    int num1, num2;
    cout << "Enter some integers: " << endl;
    do
    {
        cin >> num1 >> num2;
        TwelveApart(num1, num2);
    } while (TwelveApart(num1, num2) == false);
    cout << "The difference between " << num1 << " and " << num2 << " is greater than or equal to 12." << endl;
    return 0;
}
bool TwelveApart(int x, int y)
{
    if (abs(x - y >= 12))
    {
        return true;
    }
    else
    {
        return false;
    }
}

中的条件
if (abs(x - y >= 12))

不是正确的设置。它需要:

if (abs(x - y) >= 12 )

fwiw,您可以将功能简化为:

bool TwelveApart(int x, int y)
{
   return (abs(x - y) >= 12 );
}

另外,您在do-while循环中对TwelveApart有冗余的调用。该电话没有做任何有用的事情。循环可以是:

do
{
    cin >> num1 >> num2;
} while (TwelveApart(num1, num2) == false);