Lo de los arrays para pasar por parámetro es un poco lio.
Si tienes
char cadena[10], el tipo es char[] y esto es lo que deberías poner como parámetro en la funcion
Si tienes cadena[10][20], etl tipo es char[][20] y eso debes poner de parámetro.
etc, etc.
En tu caso no se muy bien lo que pretendes. La declaración
char word_a[][2][40]= {"ahora","now","",""};
me resulta extraña.
Si nos atenemos a los tipos, si quieres pasar el array completo, ejec() debería coger como parámetro
int ejec (char XX[][2][40])
{
...
}
y llamarlo con ejec (word_a) o lo que sea
La linea que pone
if(ingl[0]=='a') { ejec(char word_a[][2]);
tampoco se muy bien que es lo que quieres. Estas llamando a ejec con una array que declaras ahi mismo (por lo de char delante) y es de tipo char [][2] y no esta inicializado. Supongo que esa linea es la que te protesta.
Espero que esto te sirva de algo.
Se bueno.