Циклы do while всегда будут выполняться один раз, поэтому вы всегда получаете 4 монеты, тогда вы также не назначаете входное значение n.
Первое do while будет работать бесконечно, если n> 0, поэтому измените его на:
do {
printf("How much change is owed?\n");
n = get_int();
} while (n == 0);
, следующее за вашими dos добавятся к счету, даже если они не должны, ниже должно бытьлучше.
while (n >= 25) {
count++;
n -= 25;
}
Удачи с CS50, вот где я и начал, это сложно, но на самом деле настраивает вас на то, чтобы научиться думать.