Oregon ha ragione: se il tuo è il caso seguente
codice:
do {
  switch(x)
  {
    case('a'):
      break;
    case('b'):
      break;
    case('c'):
      break;
    case('d'):
      break;
    case('q'):
      break;
    default:
      printf("Opzione inesistente\n");
      break;
  }
}while(x!='q');
Perché non dovrebbe uscire? l'opzione di controllo del ciclo while verrebbe eseguita comunque...