El programa no funciona como quiere debido a que al haber declarado la variable contador dentro del ciclo while e inicializarla en ese momento, a pesar de que se hace un incremento "contador++" ese incremento solo quedara en 2, y al ejecutarse la siguiente vez el while la variable contador volvera a tener un valor de 1 por la inicialización dentro de ciclo. La solución es declarar e inicializar la variable fuera del ciclo while.