Hum..eu fiz um programa desse também, mas não parece tão complexo quantos esses ae, e PRIMEIRO PEDE O NUMERO COM A OPERAÇÃO DESEJADA E Só DEPOIS PEDE PRA INFORMAR OS NUMEROS DA OPERAÇÃO: 
Fiz assim 
1º declarei algumas funções fora de main() são elas:Somar,Subtrair,Multiplicar,Dividir,Raiz; 
tenho elas aqui se você quiser: 
  
int somar (int a, int b ){ 
    return(a+b );
    }
int subt (int a, int b ){
    return(a-b );
}   
int mult(int a, int b ){
    return(a*b );
}
int divd(int a, int b ){
    return(a/b);
}
int raiz(int a) {
    return(a*a);
}
  
2º declarei as seguintes variaveis: 
option,result,n1,n2; 
  
  
3º Fiz o menu aparecer na tela assim como o seu, e la no final botei("Escolha uma opcao") 
ex: 
printf("\t\t\t\tCalculadora MS-DOS\n");
    printf("\t\t\t<1> Somar\n");
    printf("\t\t\t<2> Subtrair\n");
    printf("\t\t\t<3> Multiplicar\n");
    printf("\t\t\t<4> Dividir\n");
    printf("\t\t\t<5> Raiz\n");
    
    printf("Escolha um numero: ");
    scanf("%d",&option);
 
3º Fiz um switch de opcao:
onde: case 1{
 
printf("Informe o primeiro numero")
scanf("%d",&num1)
printf("Informe o segundo numero")
scanf("%d",&num2)
ai aqui eu usava a variavel result assim:
RESULT=SOMAR(A+N)
 
e depois FAZIA UM PRINTF COM A RESULT QUE AGORA TEM O VALOR DE SOMAR(A,B )  PRINTF("%D", RESULT)
}
 
 
Se case2: {
fazia a mesma coisa só que usavaRESULT= SUBT(a,b ); 
}
Basicamente fazia isso em todos
Espero ter ajudado.