3

可能重复:
如何在不将其转换为字符串/字符数组的情况下获取数字的数字?

我被困在 C++ 中做这个任务;我想要做的是找出用户给出的任何数字的个位和十位。

例如,如果数字是 9775,则获得的个位为9775 % 10,但我无法找到十位数。

4

3 回答 3

13

对于非负整数 x,十位数是(x / 10) % 10

于 2012-10-09T07:50:45.297 回答
4
#include <math.h>

int getdigit(int number, int digit)
{
   return (number / ((int) pow(10, digit)) % 10);
}

第一个数字是 0。不过,我真的不喜欢浮点数参与(通过 pow)。

于 2012-10-09T08:02:59.567 回答
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

例如,一个简单的循环:

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());  
}
于 2012-10-09T08:40:04.113 回答