我被困在 C++ 中做这个任务;我想要做的是找出用户给出的任何数字的个位和十位。
例如,如果数字是 9775,则获得的个位为9775 % 10
,但我无法找到十位数。
我被困在 C++ 中做这个任务;我想要做的是找出用户给出的任何数字的个位和十位。
例如,如果数字是 9775,则获得的个位为9775 % 10
,但我无法找到十位数。
对于非负整数 x,十位数是(x / 10) % 10
。
#include <math.h>
int getdigit(int number, int digit)
{
return (number / ((int) pow(10, digit)) % 10);
}
第一个数字是 0。不过,我真的不喜欢浮点数参与(通过 pow)。
尝试使用很少使用的函数:
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
例如,一个简单的循环:
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());
}