Оператор switch может иметь среди последовательности операторов другой оператор switch. Даже если константы case внутреннего и внешнего операторов имеют одинаковые значения, не возникнет никакого конфликта. Следующий фрагмент кода совершенно корректен:
switch (х) {
case 1:
switch(у) {
case 0: printf("Divide by zero error.");
break;
case 1: process(x,y);
}
break;
case 2:
...