我有一个最奇怪的问题!我需要制作一个程序,用户必须输入一个10位数字。所以我用do-while循环检查输入:
do
{
cout<<"Enter a 10-digit number: "<<endl;
cin>>number;
}
while (numberOfDigits(number) != 10);
这是numberOfDigits函数:
int numberOfDigits(int num)
{
int d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
因此,当我输入一个小于10的数字时,它会循环并开始(告诉我再次输入一个10位数字)。但是,当我输入一个超过10位的数字时,会出现无限循环,并且控制台不会停止打印“输入一个10位数的数字:”......有什么想法吗?
答案 0 :(得分:3)
我的猜测是你要超过int的最大范围。如果您输入的数字高于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;
}
答案 1 :(得分:0)
如果你改变了
while(numberOfDigits(number)!= 10)
到
while(numberOfDigits(number)&lt; = 10)
这样它会继续do-while循环,直到用户选择了一个小于或等于的数字。