Gia',perche' non puo' verificare se le due stringhe sono uguali prima che la stringa l venga inizializzata.
Ho sostituito l' ultima parte con questa:
codice:
do
  {
    printf("Digita cognome studente o esci per terminare: ");
    gets(l);
    for(i=0;i<n;i++)
      {
        if(strcmp(l,classe[i].cognome)==0)
          puts(classe[i].nome);
          puts(classe[i].cognome);
          printf("%d",(classe[i].fisica+classe[i].inglese+classe[i].matematica)/3);
      }
  }while((strcmp(l,"esci"))!=0);
Pero' il problema viene nel blocco precedente: appena digito il voto di inglese (un float) mi si blocca tutto,dice "il programma ha smesso di funzionare".
Si impalla
Eppure la prima parte mi sembra corretta.