提取数字的每一位,可以使用取余和除法的组合来实现。代码如下:
int ival;
deque<int> numbers;
cin >> ival;
while(ival) {
//注意对 10 取余得到的是当前数字的最后一位
numbers.push_front(ival % 10);
ival /= 10;
}
因为对 10 取余得到的是当前数字的最后一位,比如 1234%10 的结果是 4,所以记录结果的时候必须将每次取余得到的数字放到已经提取出的部分结果的前面。对于 STL 容器 deque 或者 list,这可以通过 push_front() 操作来实现。如果对结果的记录不使用这种可以在序列前端插入元素的结构,比如用 vector 来记录结果,那么最后采用逆序输出也是可以的。