Do-while循环没有结束?

时间:2014-11-20 20:59:29

标签: c++ function do-while

我有一个最奇怪的问题!我需要制作一个程序,用户必须输入一个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位数的数字:”......有什么想法吗?

2 个答案:

答案 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循环,直到用户选择了一个小于或等于的数字。