Вообще, эти три цикла взаимозаменяемы, т.е. если есть программа, написана с помощью одного из них, то она всегда может быть переписана с помощью любого другого. Но по правилам хорошего стиля и для удобства рекомендации следующие:
for используется, когда число итераций известно (есть переменная или константа, которая определяет это количество).
while и do-while используются, когда число итераций заранее неизвестно.
while используется, когда существует возможность, что цикл не выполнится ни разу, а do-while следует использовать, если известно, что как минимум одна итерация всегда требуется.
Для примера:
for - выведите N чисел на экран (N определяет число итераций).
while - алгоритм Евклида для вычисления НОД (если одно из чисел 0, то итераций не будет)
do-while - реализация игры "Угадай число". (всегда требуется хотя бы одна попытка, то точное их число неизвестно).