如何确定C ++中数字的十位数

时间:2012-10-09 07:48:20

标签: c++

  

可能重复:
  How to get the digits of a number without converting it to a string/ char array?

我很难用C ++完成这项任务;我想要做的是弄清楚用户给出的单位数和任何数字的十位数。

例如,如果数字是9775,则单位数字获得为9775 % 10, 但我找不到十位数。

3 个答案:

答案 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());  
}