no entiendo eso de los printf, pues el /n, tengo entendido que salta de renglón, y si iría al final, mostraría en el siguiente renglón el scanf
El problema al llamar a printf de esta forma:
printf("\n Input an integer value for x: ");
Es que no tenemos garantizado que la cadena "\n Input an integer value for x: " se imprima inmediatamente en la salida estándar (puede quedarse en su bufer).
Para tener esa seguridad se debe cumplir uno de tres escenarios:
A) El bufer de la salida estándar se llena.
B) La secuencia de caracteres a imprimir termina con '\n'.
C) Se indica explícitamente que debe vaciarse el bufer.
El primer caso no lo controlamos así que mejor nos olvidamos de el.
El segundo caso se consigue al llamar a la función así:
printf("\n Input an integer value for x: \n");
Pero como no se formatea valor alguno se puede sustituir esa función con "puts" generando el mismo efecto (ella imprime automáticamente el '\n' después de la cadena indicada):
puts("\n Input an integer value for x: ");
El tercer caso se consigue llamando a la función "fflush" para que vacie el bufer del stream indicado como argumento (stdout es la salida estándar):
printf("Input an integer value for x: ");
Por ultimo lo subjetivo (cuestión de estilo): cuando uno escribe no pasa al siguiente renglón y empieza a escribir ahí así nada mas.
En su lugar uno escribe hasta alcanzar el final del renglón y solo entonces pasa al siguiente. Esa es la idea de tener el '\n' al final de la cadena (y no al principio).
Un saludo