Saludos,
En el primero programa, en la operación 20/100, estás dividiendo 2 enteros, el resultado es otro entero, en este caso 0 y esto es el que muestra el printf, claro con formato de flotante, que es 0.00000
Lo raro es que en el segundo programa si trata a 20/100, como una división de 2 flotantes y el resultado es 0.20000
He leído un poco y no encuentro la causa de este problema, aparentemente es un bug del compilador.
Lo que si puedes hacer para no tener este problema, es tratar los datos como flotantes (ya que el resultado que esperas es también un flotante), cambia:
Por esto:
printf("\n%f",(float)20/(float)100);
Y con esto se soluciona...