I suppose you did it as an exercise, and not because you actually needed the job done, so here are some comments:
1). Code repetition. Most of your code is just 4 lines repeated over and over again with a few changes. This is generally a very, very bad thing. What if you need to change the words (translate to a different language)? What if you want to extend the code? Refactor it?
You could avoid it by keeping the output strings separate, say in an array. Then, you can really shrink your code.
Ideally though, you should separate the interface and the implementation - have an abstract class that provides you the strings, that is implemented in some way. Then you can change the implementation without touching any of the other code.
2). Formatting.
Your code is difficult to read because of strange tabulation.
Code:
if (input >= 3) {
input = input - 3;
cout << "Three ";
}
or
Code:
if (input >= 3)
{
input = input - 3;
cout << "Three ";
}
is much better.
3). Separation of concerns.
Instead of lumping all the code together, it may be a good idea to separate the routines for presentation with the actual logic of the application. This can greatly improve readability and reduce the number of mistakes.
E.g. in a more "functional" style, you could reduce your main code into a composite of three functions: output( process ( input() )); - and then one could work on improving each separate bit of code without the fear of breaking something else.
Just a few things that you may want to look into.