“做”循环不会结束
Do-while loop does not end?
我有最奇怪的问题!我需要制作一个程序,用户必须输入一个 10 位数字。所以我用一个do-while循环检查输入:
do
{
cout<<"Enter a 10-digit number: "<<endl;
cin>>number;
}
while (numberOfDigits(number) != 10);
以下是位数函数:
int numberOfDigits(int num)
{
int d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
因此,当我输入小于 10 的数字时,它会循环并转到开头(告诉我再次输入 10 位数字)。但是,当我输入一个超过 10 位数字的数字时,会发生无限循环,并且控制台不会停止打印"输入 10 位数字:"......有什么想法吗?
我的猜测是你正在超过一个整数的最大范围。如果您输入的数字更高,那么2,147,483,647
考虑到您需要 10 个数字,这极有可能。尝试使用长长。
int numberOfDigits(long long num)
{
long long d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
我刚刚尝试过,它对我来说效果很好。我用来测试的完整程序:
using namespace std;
int numberOfDigits(long long num)
{
long long d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
int main()
{
long long number = 0;
do
{
cout<<"Enter a 10-digit number: "<<endl;
cin>>number;
}
while (numberOfDigits(number) != 10);
return 1;
}
如果您更改了
而 (位数(数字) != 10)
自
而 (位数(数字) <= 10)
这样,它将继续执行 do-while 循环,直到用户选择了一个小于或等于的数字。
相关文章:
- 为什么在这个代码结束循环中没有得到结束
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 使用 shared_ptr 在中断时结束多线程循环
- 如何使用循环结束 c++ 上的行
- 具有迭代器和自定义步长的循环结束条件
- 为什么这个 while 循环在下面的代码中没有结束?
- 为什么在使用不相关的宏时会阻止 while 循环结束?
- 为什么我的 while 循环永远不会在 C++ 中的数字猜测游戏中结束?
- while 循环 C++ 结束,但不继续到其余语句
- 当满足条件时,While循环未结束
- 使用分隔符结束用户输入的循环
- <= 和 == 运算符无法正常工作以结束循环
- C 如何结束一个段循环,该循环添加数字而不使用数字作为触发器来结束循环
- 如果其中一个为真,则 && 结束循环,而不是如果两者都为真
- 在 x 时间后结束循环的性能最低占用方式
- 如果用户对C++说,如何提前结束循环
- C++ 循环条件未结束循环
- 一旦用户错了两次,就结束循环
- EOF和GETCHAR结束循环
- 在sentinel使用条件语句结束循环后显示最大值