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