This is not a precise analogy, but still. Imagine that f is a post office and g is a letter carrier. The post office sorts letters and gives them to the letter carrier to deliver. Working together, they are able to deliver letters to every address in the neighborhood. Now, could this be the case if the letter carrier did not go to every address in the neighborhood?

Suppose that gof is surjective.
then for every c in C there exists an a in A such that g(f(a))= c, where f(a) is in B
so there must exist a b in B for every c in C such that g(b)= c. (b=f(a))
therefore g must also be surjective

Suppose that g o f is surjective.
Then for every c in C there exists an a in A such that f(a) is in B and g(f(a)) = c. Therefore, g is surjective.

In your version, if you say "for every c in C" for the second time, you threw away some arbitrary c that you selected the first time, and, therefore, you threw away that depended on that first c. So, strictly speaking, one can't refer to that (by saying b=f(a)) when talking about the second arbitrarily chosen c. But I am probably being overly strict here.

Emakorov, I don't think you're being overly strict. Mremwo, I'm just going to rewrite your argument and clean it up a bit (as emakorov said, you're argument is essentially correct, and would probably get close to full credit, if not full credit on an exam):

Let c be an arbitrary element of C. Since g o f is surjective, there exists an a in A such that (g o f)(a) = c. Let b=f(a). Then b is in B and g(b)=g(f(a))=(g o f)(a)=c. Since c was arbitrary, g is surjective.