Pull to refresh

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

Reading time1 min
Views3.3K
Нужно заменить ровно один (любой) символ в следующей строке, причём так, чтобы она скомпилилась и было выведено ровно 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("*"); } }
Tags:
Hubs:
Total votes 65: ↑50 and ↓15+35
Comments100

Articles