Причина, по которой он не работает, заключается в том, что после завершения default:
отсутствует break;
, поэтому управление продолжается в коде для case 9
. Вот это исправлено:
int a = 9, b;
scanf("%d", &b);
switch(a+b)
{
case 3:
a+= b * 2 - (a-b);
b = a + b;
break;
case 5:
a%=b;
break;
case 9:
a+= a * 3 - (a-b);
b = a/b;
break;
default:
a-= b * 2 - (a-b);
b = a - b;
break;
}
printf("a = %d\nb = %d\n",a,b);
Кроме того, для удобства чтения лучше упорядочить регистры каким-либо образом, а не только случайным образом; default
также всегда идет внизу.