it Задачи Найдите ошибку в коде
Найдите ошибку в коде

Найдите ошибку в коде

5 307
17 ноября 2016 в 16:45

Простая задача, но все же требует внимательности, а также знаний в программировании. Итак, я дам вам небольшой кусочек кода, а вы скажите в чем здесь ошибка.

Вот сам код:

unsigned int i;
for (i = 100; i >= 0; --i)
	printf("%d\n", i);

В этом коде есть две небольшие ошибки, которые вам стоит найти.

Ошибки

Первым делом, стоит обратить внимания на неправильное определения переменной i. Дело в том, что в данном случае оно является неверным. Тип unsigned int говорит о том, что значения этой переменной могут быть только цифры, при чем только положительные цифры без знака минус. Данная запись приводит к тому, что цикл будет выполняться вечно, так как условие всегда будет истинным (true). 


Корректный код состоял бы из такого условия i > 0. Он мог бы вывести все значения, кроме нуля. Цикл завершился бы и тогда мы могли бы после самого цикла прописать еще и вывод 0. К примеру, у нас бы получилось нечто вроде этого:

unsigned int i;
for (i = 100; i > 0; --i)
	printf("%d\n", i);
printf("%d\n", i);

Вторая ошибка намного проще и заключается в том, что мы используем %d вместо того чтобы использовать %u. Поскольку мы выводим числа без минуса, то именно так должно все быть. В итоге у нас получился вот такой код, который верно выводит значения от 100 до 1:

unsigned int i;
for (i = 100; i > 0; --i)
	printf("%u\n", i);

Больше интересных новостей

Комментарии для сайта Cackle