The idea behind this comes from Pascal, here essentially you HAVE to put main at the end.
In C, you can put functions any any order you like, main is no different.
I like to put main at the bottom - partly because I started out programming in Pascal, and partly because it means that I don't have to make forward declarations of functions. You don't need prototypes of functions in the same source file [unless you have mutual recursion] if you put the functons that call other functions below the ones being called.
Beyond that, there is no particular reason for any particular order - it's a matter of style [and I know some people who prefer to find main and functions called by main first, and then the detailed functons below that].
--
Mats