E' piuttosto "ovvio" e "divertente", se ci pensi... tu stai scorrendo tutta la matrice e ogni cella la scambi con quella opposta... ma siccome stai scorrendo tutta la matrice, prima o poi arrivi sopra alla cella "opposta" e scambi anche quella, quindi tutto torna alla posizione originale...

Quello che devi fare è scorrere solo "metà matrice":

codice:
        for (int i=0; i<n; i++){
            for (int j=0; j<n/2; j++){
                temp=display[i*n+j];
                display[i*n+j]=display[i*n+(n-j-1)];
                display[i*n+(n-j-1)]=temp;
            }
        }

Ciao.