Olá pessoal!  Eu já programo em java, estou estudando C... porém, não consigo navegar no sistema sem que o programa trave.  O que pode estar errado nas funções? já olhei varios exemplos e não percebo nada de errado.   #include <stdio.h>
char nome[4] = {"João"};
int idade=13;
void mostrarNome();
void cadastrarNome();
int main(){
int valida=200;
while(valida != 0){
   printf("\n Menu \n\n 1* Cadastrar Nome \n 2* Mostrar Nomes\n\n");
   scanf("%d",valida);
             if(valida == 2)
             mostrarNome();
             else if(valida == 1)
             cadastrarNome();
}
return(0);
}
void mostrarNome(){
printf("\n\nNome: %s",nome);
printf("\nIdade: %d",idade);    
main();
}
void cadastrarNome(){
     printf("\n\nDigite um nome qualquer:\n");
     scanf("%s",nome);
     printf("\nDigite a idade do individuo\n");
     scanf("%d",idade);
     main();
     }