我已经写了一些代码,但是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处退出。
答案 0 :(得分:3)
您两次声明了完全相同的变量名,因此n_factors++
指的是内部循环中的一个。从内部循环中删除int
,您的程序将输出
大于3个因子的数字= 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;
}
答案 1 :(得分:1)
您将在while循环内外两次重定义n_factors。您要递增的一个是循环内的一个,而循环要检查的那个是局外人,在您的情况下始终为零,即始终小于3。