Saludos,
Lo que básicamente hace el programa es leer un número de teclado (un entero), extraer cada uno de sus dígitos empezando desde el último y mostrar el dígito por pantalla.
Por ejemplo si tienes el número 458, el programa extrae el 8, luego el 5 y por último el 4 y mostrará en pantalla: 854
Con la línea siguiente lee un número de teclado y lo almacena en la variable
valor:
Luego comienza un ciclo
while, que se repetirá mientras se cumpla la condición
valor > 0, en total se ejecutará 3 veces el código que está dentro del while (una vez por cada dígito de nuestro número leído):
El operador % halla el residuo de una división, por ejemplo: 458 % 10 = 8, ya que:
458 / 10 = 45
Entonces:
458 % 10 = 458 - 45*10 = 458 - 450 = 8
Las 3 ejecuciones del while serían:
Primera ejecución:
/* valor = 458 */
while (valor > 0) { /* Pregunta si 458 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 458 % 10 = 8 */
valor = valor / 10; /* valor = 458 / 10 = 45 */
printf("%d", digito); /* Muestra el valor de digito: 8*/
}
Segunda ejecución:
/* valor = 45 */
while (valor > 0) { /* Pregunta si 45 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 45 % 10 = 5 */
valor = valor / 10; /* valor = 45 / 10 = 4 */
printf("%d", digito); /* Muestra el valor de digito: 5 */
}
Tercera ejecución:
/* valor = 4 */
while (valor > 0) { /* Pregunta si 4 es mayor a 0? -> SI */
digito = valor % 10; /* digito = 4 % 10 = 4 */
valor = valor / 10; /* valor = 4 / 10 = 0 */
printf("%d", digito); /* Muestra el valor de digito: 4 */
}
En la cuarta ejecución, preguntaría 0 > 0 -> NO, por lo cual sale del while y termina el programa.
La recomendación, es hacer el ejercicio en papel, toma un par de números de ejemplo y vas analizando que resultados obtienes con cada línea del programa, eso ayudará a que lo comprendas mejor, con el tiempo llegarás a saber que hace un programa sólo con mirarlo y analizarlo un poco.