fflush es para vaciar el buffer de salida que le hayas pasado como parámetro. No hagas esto con stdin ya su comportamiento no esta definido. Ademas ese no es el problema.
Lo que pasa cuando lees los enteros es lo siguiente.
Imagina que introduces los números 1 y 2 esto es como lo ve la computadora "1 2\n". \n es el enter que das para introducir los datos. Asi que tu programa lee el 1 y el 2 tal como se lo pediste, comsume esos caracteres y tu cadena queda. "\n" Ahora lo siguiente que pides es un carácter entonces te devuelve '\n' que es lo que queda. Como ve que no es ninguna de tus opciones se sale del programa.
¿Como resolver esto?
Sencillo, solamente tienes que decirle a scanf que consuma ese carácter de la siguiente manera "\n%c".
Espero haberte ayudado a comprender como funcionan los flujos. Aquí te dejo un código de muestra.
Código C:
Ver original#include <stdio.h>
int main() {
int a,b;
char eleccion;
printf("Introduce dos números:\n");
printf("Introduce el carácter según quieras sumar, restar, dividir o multiplicar:\n");
scanf("\n%c", &eleccion
); switch(eleccion){
case '+': printf("La suma es:%d", a
+b
); break; case '-': printf("La resta es: %d", a
-b
); break; case '*': printf("La multiplicación es: %d", a
*b
); break; case '/': printf("La división es: %d", a
/b
); break; }
return 0;
}