我需要找到每个数字从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/