正如标题所说,我必须找出给定数字中的位数。这是我的代码,当数字超过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;
}
答案 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";
}
注意:这不会修剪前导零;我把它留给你。