A program to represent a coin amount using the smallest number of coins
Don't invent error messages. If strtol sets errno, use perror() to print a precise reason for a failure.
Flat is better than nested. I recommend to handle argc &lt; 2 at the beginning, to remove one level of indentations of the main algorithm. Along the same line, there is no need to else once if branch does return.
Testing for duplicated denomination is easier after they are sorted.
while (amount &gt;= denominations[i]) loop is a long way to say

denominationCount = amount / denomination[i];
amount %= denomination[i];

You may want to break the for (i = 0; i &lt; count; i++) early, as soon as amount reaches 0.
Qudos for sizeof(*denominations). 
The algorithm may fail to find a solution.