虽然循环不退出,即使它应该退出
While loop not exiting even though it should
我已经写了一些代码,但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
,程序将输出
大于 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;
}
您正在重新定义n_factors两次,分别在while循环的外部和内部。您递增的那个是循环内部的那个,而循环检查的那个是外部变量,在您的情况下它始终为零,即始终小于 3。
相关文章:
- C++ 自动点击器未退出循环
- 使用 while 或 do while 退出循环
- 退出循环,除非未给出输入
- C++线程退出循环条件
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 虽然具有多个 OR 条件的循环不退出循环
- 如果程序退出循环是goto已删除的本地变量
- 中断语句未退出循环
- 计算平均值,而不向退出循环添加负等级
- 使用键盘挂钩时无法动态退出循环
- 定义时间后退出C 循环
- 使用goto来干净地退出循环
- getchar 有什么问题(因为程序在没有检查的情况下退出循环)
- 尝试退出循环时,Ctrl+Z 不起作用
- 如何获取用户输入以退出循环
- 正在销毁线程并退出循环
- 中断语句不会退出循环
- 通过输入一个特定的字母c++来退出循环
- 在c++中,当输入不是unsigned时立即退出循环
- 编程原理和实践使用C++while-loop演练。找不到退出循环的方法