Unless you consider a smaller value with a very large number at startup, which may not be a good idea for some cases, the best thing is to start the variable for less height with the first height that the program receives case its value is same as the initial value (which I considered 0):
#include<stdio.h>
int main(void){
float altura;
float maior_altura=0;
float menor_altura=0;
int sexo;
int total_feminino=0;
int total_masculino=0;
printf ("Digite '0' para encerrar o programa.\n");
while ( 1 ) {
printf ("'1' para Masculino\n'2' para Feminino\n");
scanf ("%d", &sexo);
if ( sexo==0 ){
// sai do laço
break;
} else {
// pega altura
printf ("Altura: \n");
scanf ("%f", &altura);
// processa as entradas
if ( sexo==1 ){
total_masculino++;
} else {
if ( sexo==2 ){
total_feminino++;
}
}
// força a inicialização do menor valor
if ( menor_altura==0 ){
menor_altura=altura;
}
if ( altura>maior_altura ){
maior_altura=altura;
}
if ( altura<menor_altura ){
menor_altura=altura;
}
}
}
printf ("Maior altura registrada = %f\n", maior_altura);
printf ("Menor altura registrada = %f\n", menor_altura);
printf ("Total do sexo feminino = %d\n", total_feminino);
printf ("Total do sexo masculino = %d\n", total_masculino);
return 0;
}
Tip, do not be shy about using explicit names for variables, it's easier to read the code. By the way, taking the same commands that I used, I simplified the entry of the height.