Revisa bien cada apertura y cierre de llave.
Luego además, veo una cosa rara, parece que la definición de la función ordenar() está DENTRO del main()
Me refiero a la parte que marco en rojo:
case 3:
{printf("\nCuantas palabras deseas ordenar?:");
scanf("%i",&n);
fflush(stdin);
char palabras[n][20];
for(i=0;i<n;i++)
{
printf("\nINGRESA PALABRA?:");
gets(palabras);
}
for(i=0;i<n;i++)
{
printf("\n%s",palabras);
}
ordenar(palabras,n);
getch();
}
void ordenar(char palabras[][20],int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(palabras[0]>=palabras[j][0])
{
strcpy(letra,palabras);
strcpy(palabras,palabras[j]);
strcpy(palabras[j],letra);
}
}
}
printf("\nLOS FRASES ORDENADAS SON:");
for(i=n-1;i>=0;i--)
{
printf("\n%s",palabras);
}
}
getch();
system("cls");
break;
case 4:
printf("\n\t ¿Estás seguro de que NO ");
break;
default:
printf("Esta opción no existe");
getch();
system("cls");
}
printf("\n\t quieres volver a ejecutar el programa?\n\t elige una opción:\n\t\t SI presiona 1 para volver\n\t\t NO presiona 4 para salir\n");
scanf("%d",&opc);
system("cls");
}
while(opc!=4);
printf("\n\t Adios!!!");
}
}
Debería estar fuera del main, por ejemplo después, ya que antes del main ya se ha puesto la declaración de esta función.
Dentro del main, tendrás que llamar a esa función para que haga su cometido. Pero su definición, es decir, su código se ha de escribir fuera del main