Как уже отмечалось в главе 1, циклы WHILE и FOR обладаюттем приятным свойством, что в них проверка окончания осущес-твляется в начале, а не в конце цикла. Третий оператор циклаязыка "C", DO-WHILE, проверяет условие окончания в конце,после каждого прохода через тело цикла; тело цикла всегдавыполняется по крайней мере один раз. Синтаксис этого опера-тора имеет вид: DO операторWHILE (выражение) Сначала выполняется оператор, затем вычисляется выражение.Если оно истинно, то оператор выполняется снова и т.д. Есливыражение становится ложным, цикл заканчивается. Как и можно было ожидать, цикл DO-WHILE используетсязначительно реже, чем WHILE и FOR, составляя примерно пятьпроцентов от всех циклов. Тем не менее, иногда он оказывает-ся полезным, как, например, в следующей функции ITOA, кото-рая преобразует число в символьную строку (обратная функцииATOI). Эта задача оказывается несколько более сложной, чемможет показаться сначала. Дело в том, что простые методы вы-деления цифр генерируют их в неправильном порядке. Мы пред-почли получить строку в обратном порядке, а затем обратитьее.ITOA(N,S) /*CONVERT N TO CHARACTERS IN S */CHAR S[];INT N;{INT I, SIGN; IF ((SIGN = N) < 0) /* RECORD SIGN */ N = -N; /* MAKE N POSITIVE */I = 0;DO { /* GENERATE DIGITS IN REVERSE ORDER */ S[I++] = N % 10 + '0';/* GET NEXT DIGIT */} WHILE ((N /=10) > 0); /* DELETE IT */IF (SIGN < 0) S[I++] = '-'S[I] = '\0';REVERSE(S);} Цикл DO-WHILE здесь необходим, или по крайней мере удобен,поскольку, каково бы ни было значение N, массив S должен со-держать хотя бы один символ. Мы заключили в фигурные скобкиодин оператор, составляющий тело DO-WHILе, хотя это и необязательно, для того, чтобы торопливый читатель не принялчасть WHILE за начало оператора цикла WHILE. Упражнение 3-3 -------------- При представлении чисел в двоичном дополнительном коденаш вариант ITOA не справляется с наибольшим отрицательнымчислом, т.е. Со значением N рAвным -2 в степени м-1, где м -размер слова. объясните почему. Измените программу так, что-бы она правильно печатала это значение на любой машине. Упражнение 3-4 -------------- Напишите аналогичную функцию ITOB(N,S), которая преобра-зует целое без знака N в его двоичное символьное представле-ние в S. Запрограммируйте функцию ITOH, которая преобразуетцелое в шестнадцатеричное представление. Упражнение 3-5 --------------- Напишите вариант Iтоа, который имеет три, а не два аргу-мента. Третий аргумент - минимальная ширина поля; преобразо-ванное число должно, если это необходимо, дополняться слевапробелами, так чтобы оно имело достаточную ширину.