Parking Charges exercise from Deitel's C book
I see a number of things that may help you improve your code.

Eliminate global variables where practical

The code declares and uses a global variable charge.  Global variables obfuscate the actual dependencies within code and make maintainance and understanding of the code that much more difficult.  It also makes the code harder to reuse.  For all of these reasons, it's generally far preferable to eliminate global variables by either making them local and/or passing them into and out of functions. That way the linkage is explicit and may be altered more easily if needed.  For example, to eliminate charge global, simply make it local to calculateCharges.

Consider improving names

I think hours is not a bad variable name, but one is, since hours gives the reader some idea of why the variable exists, but one could be anything.

Check return values for errors

The call to scanf can fail.  You can check the return values to make sure they haven't or your program may crash (or worse) when given malformed input or due to low system resources.  Rigorous error handling is the difference between mostly working versus bug-free software.  You should strive for the latter.

Understand variable passing

When you write this:

float calculateCharges( float hours )


It means that the function takes a float named hours as the argument.  Because it doesn't say float &amp;hours, which would take a reference to the passed variable (a pointer, in essence), it's passed by by value.  This means that it's really not necessary to create a local copy named h; just use hours directly.  

Decompose the program into smaller parts

Right now, much of the code is in main which isn't necessarily wrong, but it means that it's not only hard to reuse but also hard to troubleshoot.  Better is to separate the code into small chunks.  It makes it both easier to understand and easier to fix or improve.  For example, one might have a function for getting input and another for printing output in addition to the existing function that converts hours to a charge.

Make sure all paths return a value

The calculateCharges routine returns the dollar amount if the passed number of hours is greater than zero, but what if it's not?  Right now the code doesn't return any value which is a problem.  Rather than printing a message, better would be to return some special marker value, such as -1 that the calling code can check for and then have it decide the appropriate action.

Use an array

Instead of naming things one, two, three, create an array: float hours[3]; and loop through that.