Może działać za drugim razem dlatego, że w buforze mogą być jeszcze jakieś dane ;) spróbuj przed pętlą go wyczyścić (poczytaj o cin.clear(); albo cin.ignore(); )
EDIT:
char zmienna = getch();
do {
switch(zmienna) {
case '1':
cout<<"lol";
zmienna = getch();
}
} while(zmienna !='x');
// teraz działa