Dando una prima occhiata ho notato che:
codice:
int inserisci (struct contribuenti elenco_contribuenti[], int n) {  //Serve per inserire un nuovo individuo  
   if (n>=MAX_ELEM)           
               printf("Non puoi aggiungere altri individui\n");
               //qui se non metti altro e la condizione si verifica ti esegue lo stesso il resto tutto il resto della funzione
ciao..poi lo controllo meglio..
Cmq..cerca si essere piu' specifico sui problemi cosi è piu' facile trovare gli errori..