Другой подход состоит в том, чтобы иметь две петли.
1) Первый цикл: обратный номер.
int j = 0;
while( i ) {
j *= 10;
j += i % 10;
i /= 10;
}
2) Второй цикл: вывод чисел справа налево.
while( j ) {
std::cout << j % 10 << ' ';
j /= 10;
}
Предполагается, что вы хотите, чтобы цифры печатались справа налево. Я заметил, что есть несколько решений, которые не имеют этого предположения. Если нет, то достаточно второго цикла.