可能重复:
How to get the digits of a number without converting it to a string/ char array?
我很难用C ++完成这项任务;我想要做的是弄清楚用户给出的单位数和任何数字的十位数。
例如,如果数字是9775,则单位数字获得为9775 % 10
,
但我找不到十位数。
答案 0 :(得分:8)
对于非负整数x,十位数为(x / 10) % 10
。
答案 1 :(得分:4)
#include <math.h>
int getdigit(int number, int digit)
{
return (number / ((int) pow(10, digit)) % 10);
}
第一个数字是0.我不喜欢浮点数(通过pow)。
答案 2 :(得分:3)
尝试使用很少使用的功能:
http://www.cplusplus.com/reference/clibrary/cstdlib/div/
div_t div ( int numer, int denom );
ldiv_t div ( long int numer, long int denom ); // C++ only
lldiv_t div ( long long int numer, long long int denom ); // C++11 only
E.g。用一个简单的循环:
std::vector<int> getDigits(unsigned int numer)
{
std::deque<int> rv;
do {
div_t res = div(numer, 10);
rv.push_front(res.rem);
numer = res.quot;
} while (numer > 0);
return std::vector<int>(rv.begin(), rv.end());
}