用c ++编写数字计数器

时间:2013-10-09 06:03:11

标签: c++

正如标题所说,我必须找出给定数字中的位数。这是我的代码,当数字超过10时,我得到0的结果 在Visual Studio Pro 2012中编程

代码:

#include <iostream>
using namespace std;

int main()
{
    int g, count=0;

    cout << "Enter the number" << endl;
    cin >> g;

    while (g > 0)
    {
        count = count +1;
        g = g/10;
    }
    cout << count << endl;

    system ("pause");
    return 0;
}

5 个答案:

答案 0 :(得分:3)

你做过调试吗?

你认为这个条件的真实价值是什么?

(g > 0 && g <= 10) 

这应该足以让你找出问题所在。

答案 1 :(得分:1)

如果g是&gt; 10,然后

(g > 0 && g<=10)是假的。

答案 2 :(得分:0)

此代码将重现位数。

#include <iostream>

using namespace std;
int main()
{
    int g, count=0;
    cout << "Enter the number" << endl;
    cin >> g;
    while (g > 0)
    {
        count = count +1;
        g /= 10;
    }
    cout << count << endl;
    return 0;
}

除此之外,还有另一种方法可以解决这个问题

#include <iostream>
#include <cmath>

using namespace std;
int main()
{
    int g, count=0;
    cout << "Enter the number" << endl;
    cin >> g;
    count = (int)(log10((double)g));
    if (g == 0)
        count = 0;
    cout << count + 1 << endl;
    return 0;
}

答案 3 :(得分:0)

如果你真的想为此使用循环(log10调用可以完成这项工作),请使用类似的东西(未经测试):

for (count=0;g>0;g/=10,count++) {}

你写的几乎一样,但没有g<10 - 条件。

答案 4 :(得分:0)

首先将字符串转换为int然后尝试查找其长度有点麻烦。你为什么不看字符串?

#include <iostream>
#include <string>

int main()
{
  std::cout << "Enter the number" << std::endl;

  std::string g;
  std::cin >> g;

  std::cout << g.size() << "\n";
}

注意:这不会修剪前导零;我把它留给你。