使用while循环计数数字

E.O*_*.O. 7 c++ counting digits while-loop

我最近制作了一个程序,需要检查用户输入的数字中的位数.结果我做了以下代码:

int x;    
cout << "Enter a number: ";
cin >> x;
x /= 10;
while(x > 0)
{
  count++;
  x = x/10;
}
Run Code Online (Sandbox Code Playgroud)

据我所知(即使我的经验有限),它看起来粗糙而且相当不优雅.

有没有人知道如何改进这个代码(虽然没有使用内置的c ++函数)?

Zan*_*ynx 12

在您的特定示例中,您可以将数字作为字符串读取并计算字符数.

但对于一般情况,您可以按照自己的方式进行操作,也可以使用10对数的基数.

这是对数示例:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double n;
    cout << "Enter a number: ";
    cin >> n;

    cout << "Log 10 is " << log10(n) << endl;
    cout << "Digits are " << ceil(log10(fabs(n)+1)) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • `log10(10)== 1`,所以我认为你需要`floor(log10(n))+ 1`. (3认同)
  • 尝试x = 0,或x = -1,或x = 999.999. (3认同)

Dav*_*men 5

int count = (x == 0) ? 1 : (int)(std::log10(std::abs((double)(x)))))) + 1;
Run Code Online (Sandbox Code Playgroud)