Cara, refiz completamente o programa. Tem algumas coisas meio estranhas no seu código.
Está aqui:
#include<stdio.h>
#include<stdlib.h>
float insereValores()
{
float x;
printf("De o valor a ser calculado: ");
scanf("%f", &x);
printf("%f\n ", x);
return x;
}
float calculo(float x, float y)
{
int deseja, tipo = 0;
do{
printf("Selecione o tipo de conta: \n 1 para soma; \n 2 para subtrair; \n 3 para multiplicar; \n 4 para dividir\n");
scanf("%d", &tipo);
}while ((tipo < 1) || (tipo > 4));
printf("Saiu");
switch(tipo){
case 1:
printf("Soma: %f + %f = %f", x, y, x+y);
break;
case 2:
printf("Soma: %f - %f = %f", x, y, x-y);
break;
case 3:
printf("Soma: %f * %f = %f", x, y, x*y);
break;
case 4:
printf("Soma: %f / %f = %f", x, y, x/y);
break;
default:
printf("Inválido");
}
do{
printf("Deseja realizar uma nova operacao?\n 1 para sim;\n 2 para não:\n");
scanf("%d", &deseja);
}while((deseja < 1) || (deseja > 2));
switch(deseja){
case 1:
main();
case 2:
exit(0);
default:
printf("Inválido");
}
}
int main()
{
float a, b, adef, bdef = 0;
adef = insereValores();
printf("%f\n ", adef);
bdef = insereValores();
calculo(adef, bdef);
}
Não entendi porque colocar getchar() depois de usar scanf e não linka-lo a nenhuma variavel. Tambem tinha uns erros de case sensitve nas variaveis. E em C, as funções tem que vir acima da função main.
EDIT: acrescentando que esse codigo não tem nenhum tratativa de erro. Obviamente. xD