Lo que pasa es que luego de que introduces 'L' tienes que presionar la tecla ENTER y en el buffer o memoria intermedia se queda atrapado el salto de línea que se produjo cuando presionaste dicha tecla, por consiguiente cuando el bucle diga
c = getchar() este tomará el salto de línea que hubo anteriormente. La comparación que haría el compilador sería la siguiente (explicado humanamente)
1. La función getchar() espera un carácter escribes 'L' luego presionas ENTER y compara y dice
c diferente de EOF si, y
c es igual a mono si.
2. Luego entra en el bucle, y entra en el if (por cierto está mal debería ser así c == 'd') y hace la comparación si es verdadera entrará en el if.
3. Entonces vuelve al punto uno donde está la función getchar() pero en el buffer ha quedado un salto de línea ('\n') entonces
c es igual al salto de línea y compara de la siguiente manera: c('\n') es diferente de EOF si, y c('\n') es igual a mono pues no, entonces la condición es falsa y sale del bucle.
Para evitar esto podemos hacerlo de la siguiente manera: