Como algunas ideas:
1. Yo crearía un array de cadenas (osea un array de arrays de char) para almacenar todas las palabras prohibidas.
2. Solo crearía tres funciones: una para leer una palabra de una cadena (no necesitas una para leer la primera palabra y otra para el resto, como lo has puesto), otra para comprobar si una palabra está en el array de palabras y otra para insertar una palabra en el array. Son muy sencillas.
3. El código main lo único que tendría que hacer es llamar a la función leer palabra, llamar a la función que comprueba si la palabra está en la lista de prohibidas y si lo está incrementar un contador entero (para comprobar si aparecen 6 palabras) y otro contador para ver si aparecen tres palabras distintas. Te lo pongo en pseudocódigo:
char [] palabra;
char [][] palabras_prohibidas, palabras_encontradas;
int contador_prohibidas, contador_distintas;
"Inicializar palabras_prohibidas con la lista correspondiente"
"Función LeerPalabra lee una palabra de la cadena_de_entrada, devuelve la palabra como resultado y modifica la cadena, eliminando la palabra leída. Devuelve null si la cadena está vacía"
"Función EstaEnLaLista comprueba si la palabra está en la lista y devuelve true si lo está o false si no está en la lista"
"Función InsertarEnLaLista inserta una palabra en la lista devolviendo true si se puede insertar y false si la palabra ya estaba insertada en la lista previamente"
const max_ocurrencias=6
const max_distintas=3
palabra=null
palabras_prohibidas="Lista de palabras prohibidas"
palabras_encontradas=null
contador_prohibidas=0
contador_distintas=0
Repetir
….palabra=LeerPalabra (cadena_de_entrada)
....Si EstaEnLaLista (palabra, palabras_prohibidas) Entonces
........ contador_prohibidas++;
........ Si InsertarEnLaLista (palabra, palabras_encontradas) Entonces
............ contador_distintas++;
........ Fin del Si
....Fin del Si
Hasta que (contador_prohibidas>=max_ocurrencias y contador_distintas>=max_distintas) o (palabra=null)
Si palabra=null Entonces
.... Las condiciones no se cumplen: No es Spam
Sino
.... Las condiciones se cumplen: SPAM
Creo que es una solución bastante elegante y tiene la ventaja de que te servirá para cualquier conjunto de palabras y para cualquier condición de salida (sean 6 ocurrencias y 3 distintas o cualquier otra)