Salve a tutti. :-)

In un esercizio (King Kim N., Programmazione in C, Apogeo, 2010, pag. 127) mi si chiede di scrivere un programma che riconosca il valore maggiore tra i numeri inseriti. I numeri inseriti dall'utente possono essere infiniti e, per interrompere il programma, occorre inserire un numero minore o uguale a zero. A questo punto il programma deve mostrare all'utente il valore maggiore inserito. Il programma che ho pensato è questo:

codice:
#include <stdio.h>                                           

int main(void)

{
    float max, n;                                               /*dichiaro le variabili*/
    
    for (;n > 0;) {
    
    printf("immettere un numero maggiore di 0: ");       /*il programma chiede all'utente di immettere un valore*/
    scanf("%f", &n);                                              
    
    if (n > max) n = max;                                    /*assegno il valore di n alla variabile max*/
    }
    
    printf("\nil numero piu' grande immesso e' %f", max);
    
    return 0;
}
Il problema è che quando compilo e lancio il programma il valore che l'ultima chiamata alla printf mostra nel prompt dei comandi è sempre zero. Ho provato a modificare il programma facendo una chiamata alla printf prima del ciclo for, oppure usando tre variabili invece di due, ma il succo è che qualunque sia il valore che la variabile max assume (condizione che stabilisco nella funzione if) in output ho sempre zero! Cosa sto sbagliando? Grazie in anticipo