给定n位长整数,如何访问其部分?

时间:2012-08-21 02:24:00

标签: c++ integer

  

可能重复:
  Split an Integer into its digits c++

给出一个数字4567

在C ++中,您如何单独访问4567

4 个答案:

答案 0 :(得分:2)

个位数为n % 10,十位数为(n / 10) % 10,依此类推。注意负数,规则略有不同。

答案 1 :(得分:1)

只是为了增加这里的答案......你做了很长的分工。这首先为您提供最低有效数字。

n = abs(n);
while( n != 0 ) {
    int r = n % 10;
    n = n / 10;
    cout << r << endl;
}

输出:

7
6
5
4

显然,此方法首先为您提供最低有效数字。你当然可以将它生成一个数组,以便你可以通过它的功率访问每个数字(元素0是10 ^ 0,1是10 ^ 1等等)

换句话说,将数字转换为字符串。这种方法的效率略低于长除法。我知道这个问题陈述了C ++,但使用C函数itoa没有错。

char s[33];
itoa(abs(n), s, 10);
for( char *d = s; d != 0; d++ ) {
    int r = *d - '0';
    cout << r << endl;
}

输出:

4
5
6
7

答案 2 :(得分:0)

我对C ++并不完全确定,但我知道python至少会循环向下,所以要得到最后一位数你可以使用mod 10,然后将最后一位数除以10,所以,在sudo代码中

 int num_to_test = 1234;
 for (int i = 0; i < num_to_test.length; i++ ) {
      print num_to_test % 10;
      num_to_test = num_to_test / 10;
 }

答案 3 :(得分:0)

做一点数学并减少数量。像这样:

int thousands = floor(num / 1000);
num = num - thousands * 1000;

int hundreds = floor(num / 100);
num = num - hundreds * 100;

此外,我希望你能看到它的发展方向。