Sweet Danger got it right so he deserves the points for best answer.
Just to expand a little: In C, when you write something like:
int do_something () {....}
then you're saying that do_something is a routine that will do some work and give you an answer back - that answer will be an int value. (You can make it any other type by changing int to float or double or whatever).
Now, if you write:
int x;
x = do_something ();
then do_something () executes its statements and "returns" an answer. That answer gets put into x. However, the computer isn't psychic so you have to tell the computer exactly what answer you want it to return. Hence the return statements, such as: return 0; or return 2*x+y; or whatever. Nearly always, the return statement should be the very last statement in the routine. The beauty of this is that we can use (or "call") do_something() multiple times, but even if we only call it once then using still makes our code look a lot tidier.
Sweet Danger also mentioned void. If you want a routine to do something but not give an explicit answer back, then you can use "void" instead of int, double, etc. When you do this, you should also NOT put in a return statement (as there's nothing to return). Now, when you want the routine to do something, you simply write its name, followed always by the ().