RE:funcion para convertir numero de decimal a octa
Funciones como tales para convertir no hay. Lo que si puedes es escribirlo en pantalla de una manera o de otra. Por ejemplo %d escribe un entero normal, %x y %X lo escriben en hexadecimal, %o lo escribe en octal. Vale para scanf
A la hora de escribir el número en el código, puedes poner
a = 33; /* es un entero decimal */
a = 033; /* Si empieza por cero, es octal */
a = 0x33; /* Si empieza por 0x es hexadecimal */
La función strtol () es capaz de extraer un número de una cadena de caracteres. Uno de los parámetros indica cual es la base en la que está el número. Por ejemplo, son equivalentes
int atoi(const char *nptr);
(int)strtol(nptr, (char **)NULL, 10);
Se bueno.