noch ein fehler:
int middle (int b[]) //sucht den Mittelwert eines Feldes
{
int big=0;
int small=b[0];

das ist falsch.
du must small auf den größtmöglichen integerwert (oder zumindest auf den größten feldwert) setzen.
warum sollte dieser größte wert ausgerechnet in b[0] stehen?

auserdem hast du ja immer noch sizeof drinstehen (ein paar zeilen drunter) !???