I want to learn how to write code in a way so that if I need to add/edit things in(to) it, I can do it without changing much, if any, code that was already written.
examples could be like, making it so that if there is only 1 coin [be it either a quarter/dime/nickel/penny] it would say "1 penny" not "1 pennies". etc etc

So basically, I want a seamless style of coding.

this is a program i wrote for a pset while learning on cs50.tv

Code:

#include <stdio.h>
#include <cs50.h>

// get value of money to get change for
// convert money into cents
// while (change is more than a quarter)
// subtract a quarter
// increment number of coins used by 1
// while (change is more than a dime)
// subtract a dime
// increment number of coins used by 1
// ...
// while (change is 0)
// output number of coins used
// finish program

I can tell just by reading that my implementation won't compile this. My implementation has no <cs50.h>. In addition, I've never seen a built-in GetFloat().

I have reason to believe that cs50.h is a project file. If this is the case, it doesn't belong between <these brackets> but instead between "these quotation marks".

I have reason to believe that GetInt() is declared and defined in cs50.h. Code shouldn't be defined in .h (header) files, but in .c files. Furthermore, "GetFloat()" seems a horrible Java-esque practise. The reason it's horrible in C is that C has no exceptions. By masking the return value of scanf, you are making error handling extremely difficult. I suggest studying this scanf manual carefully before answering the following questions:
1. How would you describe the value that scanf returns on match failure?
2. How would you describe the value that scanf returns when stdin is EOF-marked, or some other error occurs?
3. What would be the only successful return value of a scanf call that is expected to write to 4 items?

Once you've studied that manual carefully, you shouldn't need to mask it behind GetFloat.