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