codice:
    if(b<c)
        if(c<a)
            if(b<a){
        temp=a;
        b=c;
        a=b;
        c=temp;
    }else
        temp=a;
        a=b;
        b=temp;
    }

Questo codice è sbagliato.
Anzitutto, se b < c e c < a allora b sarà sempre anche minore di a (quindi, il terzo if è assolutamente inutile).
L'indentazione fatta male, poi, inganna l'occhio: quel ramo "else" (composto da UNA SOLA ISTRUZIONE) non verrà mai eseguito (per quanto detto prima), quindi, nel caso in cui b non sia minore di c o nel caso in dui c non sia minore di a, semplicemente non viene fatto nulla. Inoltre, se b è minore di c, viene sempre assegnato b ad a e temp a b... qualunque siano i loro valori.

Riscrivo esattamente il tuo codice, usando un'indentazione corretta (e le parentesi graffe che nel tuo codice mancano e che aiuterebbero a capire l'errore):

Questo è esattamente il tuo codice indentato meglio (ho anche esplicitato le graffe implicite):

codice:
    if(b<c) {
        if(c<a) {
            if(b<a){
                temp=a;
                b=c;
                a=b;
                c=temp;
            }else {
               temp=a;
            }
            a=b;
            b=temp;
        }
    }

Come vedi va completamente rivisto.

Ciao.