我需要找到每个数字从1到40所具有的位数。看起来使用for和while循环应该很简单,但是我无法使其正常工作。

我尝试使用“ cin >> a;”来执行此操作,从键盘输入“ a”的值,而while循环对于我输入的任何数字都可以完美地工作,但是当我尝试使用for循环来实现时,它不起作用,因此问题一定存在。

int main()
    {
        int a; //initially found number
        int digits=0; //number of digits number "a" has
        int temp; // temporary number "a"

    for(a=1;a<=40;a++) // takes a number, starting from 1
    {
        temp=a;

        while(temp!=0) //finds number of digits the number "a" has
        {
            temp=temp/10;
            digits++;
        }
        cout<<digits<<endl; //prints number of digits each found number "a" has
    }

    return 0;
    }


我应该得到的是:1到9的每个数字1,然后10到99的每个数字2,依此类推。我现在得到的是1 2 3 4 5 6 7 8 9 11 13 15 17 19,以此类推(仅显示不均衡的数字,进一步说明),我将非常感谢您的帮助。

最佳答案

您没有重置digits值。您应该在每次迭代的开始添加行digits = 0

关于c++ - C++需要弄清楚为什么此for循环不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58680320/

10-17 01:32