Respecto al segundo código, hay muchas cosas mal. Los caracteres están codificados en un código. Es decir, a cada carácter le corresponde un número. La codificación normalmente usada es la ASCII extendida o la UTF-8(o 16).
En esta línea
cLetra = 'a' || 'b' || 'c' || 'd' || 'e' || 'f' || 'g' || 'h' || 'i' || 'j' || 'k' || 'l'
Estás igualando a 'cLetra' a, no estás comparando. Además, lo que se pone entre el operador || es una comparación. Como los caracteres equivalen a un número distinto de cero, entonces esta es la equivalencia:
true || true || true || true || true || true || true || true || true || true || true
Como ves, si o si, el if se va a cumplir, ya que el operador || dice que si alguno de las comparaciones vale true, todo vale true, es decir, el código de antes corresponde al siguiente:
if(true) {...}
Lo que tendrías que hacer es lo siguiente:
if(cLetra < 'm') {/* El código va aquí */}
Lo mismo pasa con el otro if