0

可能重复:
将整数拆分为其数字c ++

给定一个数字4567

在 C++ 中,如何分别访问45和?67

4

4 回答 4

2

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

于 2012-08-21T02:26:03.873 回答
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
于 2012-08-21T02:56:20.423 回答
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;
 }
于 2012-08-21T02:29:39.773 回答
0

做一些数学运算并减少数字。像这样:

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

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

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

于 2012-08-21T02:30:08.303 回答