Interesante el problema... pero por ahora lo que se me ocurre es... que primero que nada... leas el numero en una cadena, veas el tamaño (cientos, miles o millones que se yo) Y luego verifiques cada numero y lo asocies a una cadena, ejemplo:
Si se ingresa 243, ves que se trata de tres terminos, es decir, que lo maximo que hay son centenas... entonces verificas el 2, siempre cuando hablamos de 2 en las centenas, se va a escribir doscientos blablabla, esa cadena la guardas en otra cadena resultante, luego a esa le agregas verificando el segundo termino (4) como es en las decenas, y es 4, es cuarenta blablabla (si el cuatro estuviera en las centenas seria cuatrocientos), ese cuarenta se lo agregas a la cadena resultante y luego verificas la unidad, y si es mayor que 0, le agregas a la cadena el numero es decir, "y tres" si fuese 0 la dejas asi... Y pes asi sucesivamente
Eso es lo que se me ocurre horita, el hecho es que necesitaras muchas decisiones. Utiliza las estructuras switch...
Saludos