Salve a tutti ho scritto il seguente codice

codice:
int main(void)
{
	float n, maggiore;

	printf("\n************************************************\n");
	printf("* Programma per il calcolo del numero maggiore *\n");
	printf("*                 BY ZORGATONE                 *\n");
	printf("************************************************\n\n");

	maggiore = 0.00f;

	printf("Immettere i numeri da confrontare (0 per smettere): ");
	while (n != 0)
	{
		scanf("%f", &n);
		if (maggiore < n) {maggiore = n;};
	};
	printf("Il numero maggiore è %.2f.\n", &maggiore);
}
Ma quando compilo mi da un errore (credo trascurabile) e poi eseguendo il programma non mi restituisce il valore maggiore ma sempre e soltanto 0.

codice:
zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ gcc -o sez6prog1_comp.out sez6prog1.c
sez6prog1.c: In function ‘main’:
sez6prog1.c:18: warning: format ‘%.2f’ expects type ‘double’, but argument 2 has type ‘float *’
zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ ./sez6prog1_comp.out
************************************************
* Programma per il calcolo del numero maggiore *
*                 BY ZORGATONE                 *
************************************************

Immettere i numeri da confrontare (0 per smettere): 1 2 3 4 5 2 3 0
Il numero maggiore è 0.00.
zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$