четверг, 31 марта 2011 г.

Задачка

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

Для тех, кто «набил руку» на особенностях C, задачка, скорее всего, сложности не представляет; но существует как минимум 3 решения, и если вы нашли одно — то это не повод расслабиться :) А может быть, вы найдёте ещё четвёртое, пятое..?
Вот эти три решения:
  • Самое очевидное — 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("*"); } 

Комментариев нет:

Отправить комментарий