Primero, algunas aclaraciones:
punk_not_dead, le interesa leer un solo caracter, no una cadena de ellos, por lo tanto en este caso no es util el %s.
dioscw: cuando haces un %s, no debes colocar un &. Puesto que %s indica q es un puntero a un string. Por esa razon no va el &. Por lo tanto si deseas almacenar un string, basta con que hagas scanf("%s", variable);
Ahora al grano.
Tu algoritmo reconoce que el valor de sexo es f o m segun corresponda (lo probe con el gdb). Lo que tienes que hacer es cambiar el || en el if por &&, con lo que te quedaria algo como esto:
Código:
do
{
printf ("\nIntrodusca Sexo: ");
scanf ("%c", & sexo); getchar(); /*Con el getchar rescatas el enter*/
if (sexo!='f'&&sexo!='m')
printf("\nSEXO INCORRECTO, POR FAVOR PRESIONE ENTER E INTENTE DE NUEVO");
}
while (sexo!='f' && sexo!='m');
Recuerda que un || para que sea falso, ambos valores deben ser falsos, en cambio con el &&, basta que uno lo sea.
Salu2!