Как стать автором
Обновить

Задачка (без злого умысла)

Время на прочтение1 мин
Количество просмотров3.4K
Нужно заменить ровно один (любой) символ в следующей строке, причём так, чтобы она скомпилилась и было выведено ровно 20 звёздочек:
int main() { int i, n = 20; for (i = 0; i < n; i--) { printf("*"); } }

* This source code was highlighted with Source Code Highlighter.

Для тех, кто «набил руку» на особенностях C, задачка, скорее всего, сложности не представляет; но существует как минимум 3 решения, и если вы нашли одно — то это не повод расслабиться :) А может быть, вы найдёте ещё четвёртое, пятое..?
UPD 1: Первое правильное решение предложил lostmsu, остальные два — steck
Не читайте комменты, поломайте мозг!



UPD 2: Вот эти три решения (color="white"):
  • Самое очевидное — int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
  • Не столь заметное — int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
  • Наиболее красивое — int main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
Теги:
Хабы:
Всего голосов 65: ↑50 и ↓15+35
Комментарии100

Публикации

Истории

Работа

Программист C++
103 вакансии
QT разработчик
3 вакансии

Ближайшие события