The rules for the pronounciation of C and G are both consistent. When C occurs before I and E, it makes the [s] sound or the [th] sound depending on dialect. ex: "Cero" pronounced "se-roh" or "the-roh". For the [k] sound, you write C i most cases except before I or E where you use Qu instead since using C would create confusion since it represents a different sound in those cases and Qu is always consistent (ex: Queso pronounced "keh-soh"). As to why we don't Qu before A, O or U is probably because, it produces a [kw] sound in those cases instead of a plain [k] sound. For the [kw] sound, you write "Cu" (ex: Cuidado pronounced "cwi-dahdoh").In all other cases, it's pronounced [k], ex: "Claro" pronounced "clah-roh". When it is followed by H, it creates the "ch" sound as in English (ex: Concha pronounced "con-chah"). For the [th] sound, you use C before I and E and Z in all other cases (ex: Zapato pronounced "thahpahtoh" and Cena pronounced "thehnah"). Similarly, G always sounds like a [g] in most cases (ex: Gancho pronounce "gan-choh") except before I and E when it makes the [x] sound (ex:Ecología pronounced "ecoh-lohhia). In those cases, it sounds like a J. Unfortunately, there is no rule when to use G and when to use J. But to make things simpler, we could probably use J only before A, O and U and G for that sound before I and E just like we make a rule for the C vs Qu vs Z distinction. Jincho and Coraje could really be spelled "Gincho" and "Corage" respectively since J before those vowels is redundant. Hope this helps!