#include <iostream>
using namespace std; int main()
{ int i, len = 0, m, n, *a = new int [10];
cout << "n: "; cin >> n; m = n; while (m)
{ a[len] = m % 10; len++; m /= 10; }
int *A = new int [len]; m = len - 1;
for (i = 0; i <= len; i++) A = a[m - i];
for (i = 0; i < len; i++) cout << A << ' ';
delete [] a; }
То есть вводим n, заводим динамический массив a, в который записываем цифры числа n в обратном порядке (то есть, например, число 1234567890 сначала запишется в массив из десяти элементов {0,1,2,3,4,5,6,7,8,9}), потом массив а инвертируем в массив A, а массив а стираем за ненадобностью. Только вот для одной десятичной цифры использовать тип int, в котором 32 бита, слишком расточительно, потому что для этого вполне хватает и полбайта...
если по простому, но не сильно эффективно - sprintf и потом по массиву пройти и '0' отнять от каждого эл.
или через floor(log10)+1 вычислять длину массива и проходя с конца получать каждую цифру чрез % и /