我写了一些代码,但 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/