Як ми вже обговорили в Розділі 1, цикли while і for перевіряють умову завершення циклу на самому початку. На противагу першим двом, do-while перевіряє умову вкінці, після проходження кожного кроку у корпусі цикла; корпус завжди виконується щонайменше один раз.
 Синтаксис do наступний:
 do
 твердження
 while (вираз)
 Тож, спочатку буде виконано твердження, і лиш потім оцінено вираз. Якщо умова справджується, твердження виконується ще раз, і так далі... Коли вираз виявиться хибним, цикл буде перервано. За винятком змісту перевірки, do-while еквівалентний repeat-untill у Pascal.
 Досвід свідчить, що do-while використовується значно рідше ніж while або for. Тим не менше, час од часу він - корисний, як у наступній функції itoa, яка перетворює число у символьний ланцюжок (функція, протилежна atoi). Ця задача трохи складніша, ніж може видатись з першого погляду, оскільки легкі способи генерації чисел розставляють ці числа в невірному порядку. Ми вирішили відтворити ланцюжок в оберненому порядку, а потім розвернути його.
 /* itoa: перетворює n у знаки s */
 void itoa(int n, char s[])
 {
 int i, sign;
  
 if ((sign = n) < 0) /* виявити знак */
 n = -n; /* перетворити n на додатнє */
 i = 0;
 do { /* генерувати цифри в зворотньому порядку */
 s[i++] = n % 10 + '0'; /* одержати наступну цифру */
 } while ((n /= 10) > 0); /* видалити її */
 if (sign < 0)
 s[i++] = '-';
 s[i] = '\0';
 reverse(s);
 }
 Цей do-while — потрібний, або щонайменше зручний, оскільки принаймні один знак повинен потрапити в масив s, навіть якщо n буде нульовим. Ми використали фігурні дужки навколо єдиного твердження з якого складається корпус do-while (хоча вони не обов'язкові) для того, щоб поспішний читач не сприйняв while-частину за початок циклу while.
 Вправа 3-4. У двійковому взаємодоповнюючому представленні чисел, наша версія itoa не справляється з найбільшим від'ємним числом, тобто значенням n що дорівнює -(2величина слова-1). Поясніть чому ні. Поміняйте програму, щоб вона виводила це число правильно, незалежно від машини на якій вона виконується.
 Вправа 3-5. Напишіть функцію itob(n,s,b) яка переводить десяткове n у b систему числення і зберігає це у рядку s. Так, наприклад, itob(n,s,16) сформує n як шістнадцяткове число, збережене в ланцюку s.
 Вправа 3-6. Напишіть версію itoa, яка братиме три аргументи замість двох. Третім аргументом буде мінімальна ширина поля. Конвертоване число буде доповнюватись пробілами зліва у разі потреби, щоб добитися певної ширини.