c++ - 虽然循环不退出,即使它应该

标签 c++ c++11 while-loop

我写了一些代码,但 while 循环没有退出?

#include <iostream>

#define TriangleNumber(x) (x * (x + 1)) / 2

int main(int argc, char* argv[])
{
    int idx       = 0;
    int n_factors = 0;
    int triangle_num = 0;
    while (n_factors < 3)
    {
        int n_factors    = 0;
        triangle_num = TriangleNumber(idx);
        for (int i = 1; i <= triangle_num; i++)
        {
            if (triangle_num % i == 0)
            {
                n_factors++;
            }
        }
        idx++;
    }
    std::cout << "Number with greater than 3 factors = " << triangle_num;
    return 0;
}

期望在 idx = 3 和三角形编号 6 处退出。

最佳答案

您两次重新声明了完全相同的变量名称,因此 n_factors++ 指的是内部循环中的那个。从内部循环中删除 int,您的程序将输出

Number with greater than 3 factors = 6

工作代码:

#include <iostream>

#define TriangleNumber(x) (x * (x + 1)) / 2

int main(int argc, char* argv[])
{
    int idx       = 0;
    int n_factors = 0;
    int triangle_num = 0;
    while (n_factors < 3)
    {
        n_factors    = 0;
        triangle_num = TriangleNumber(idx);
        for (int i = 1; i <= triangle_num; i++)
        {
            if (triangle_num % i == 0)
            {
                n_factors++;
            }
        }
        idx++;
    }
    std::cout << "Number with greater than 3 factors = " << triangle_num;
    return 0;
}

关于c++ - 虽然循环不退出,即使它应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527340/

相关文章:

c++ - 类成员 - 对于外部世界来说是 const,对于类来说是非常量

c++ - 在 lower_bound 上使用 lambda

javascript - HTML/JavaScript : How to run a loop while running other code?

c++ - CMake 和 Make 需要运行两次才能成功构建代码

c++ - Winmouse在C++控制台上的坐标

c++ - 如何打印第一个和最后一个元素的总和,然后是第二个和倒数第二个元素的总和,依此类推?

javascript - CLI Node 应用程序中的堆栈溢出

python - 使用带有嵌套 while 循环的 readline 方法时出现问题 Python

c++ - 相同的随机数

c++ - 我正在尝试运行一个程序,将文本从一个文件复制到另一个文件