RE:ANAGRAMAS, PERMUTAR LETRAS
Tienes que hacer un algoritmo recursivo. El problema principal en este caso es saber qué letras han sido utilizadas y cuales no, a parte de que devolver la palabra en C es un poco royo por los punteros, y todo eso.
Te doy el algoritmo en "pseudocódigo", que es una descripción del programa sin remitirte a ningún lenguaje particular, lo que me permite ciertas "licencias" que en C no se permitirían ;-)
Función Permutacion("lista_de_letras") que devuelve una lista_de_palabras {
Si "lista_de_letras" está vacía, terminar
"lista_de_palabras_a_devolver" = lista_vacia
Para cada "letra" de lista_de_letras
"lista_de_palabras_provisional" = Permutacion("lista_de_letras" quitando "letra")
Anteceder a todas las palabras de "lista_de_palabras_provisional" la "letra"
"lista_de_palabras_a_devolver" = "lista_de_palabras_a_devolver" + "lista_de_palabras_provisional"
FinDelPara
Devolver "lista_de_palabras_a_devolver"
}
El problema de este algoritmo es que repite palabras si la palabra original tenía letras repetidas...
Espero que te sirva