Я нашел, что сайт с некоторыми усложнил загадки C. Прямо сейчас я имею дело с этим:
Следующее является частью кода C, намерение которого состояло в том, чтобы распечатать знак "минус" 20 времена. Но можно заметить, что, это не работает.
#include
int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("-"); return 0; } Хорошо фиксация вышеупомянутого кода проста. Для создания проблемы интересной необходимо исправить вышеупомянутый код путем изменения точно одного символа. Существует три известных решения. Посмотрите, можно ли получить все те три.
Я не могу выяснить, как решить. Я знаю, что это может быть зафиксировано путем изменения --
кому: ++
, но я не могу выяснить что отдельный символ измениться, чтобы заставить его работать.
Вот одно решение:
for( i = 0; -i < n; i-- )
printf("-");
Вот второе, спасибо Марку за помощь!
for( i = 0; i + n; i-- )
printf("-");
И у Марка также был третий, который был
for( i = 0; i < n; n-- )
printf("-");
Сравнение в цикле for может быть любым выражением - i можно отрицать.
for (i = 0; -i < n ; i--)
for( i = 0; i < n; n-- )
printf("-");
Изменил i-- на n -
Замените i -
на n -
другое.
Хорошо - Габ исправил, поэтому я удалил другое решение. Он побеждает!
Решение 1
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; n-- ) // Change i-- to n--
printf("-");
return 0;
}
Решение 2
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; -i < n; i-- ) // Compare to -i
printf("-");
return 0;
}
Третьего не придумали.
Третий ответ:
for( i = 0; i + n; i-- )
printf("-");
Спасибо Габу Ройеру за вдохновение.
Объяснение: В конце концов, i + n
приведет к -20 + 20 = 0
, что является ложным
.