Подтвердить что ты не робот

Фиксирование сломанной петли, изменяя ровно один символ

Я нашел сайт с некоторыми сложными головоломками C. Сейчас я имею дело с этим:

Ниже приведен фрагмент кода C, целью которого было напечатать знак минус 20 раз. Но вы можете заметить, что это не работает.

#include <stdio.h>
int main()
{
    int i;
    int n = 20;
    for( i = 0; i < n; i-- )
        printf("-");
    return 0;
}

Ну, исправление вышеуказанного кода прямолинейно. Чтобы сделать проблему интересной, вы должны исправить вышеуказанный код, изменив ровно один символ. Существует три известных решения. Посмотрите, можете ли вы получить все эти три.

Я не могу понять, как решить. Я знаю, что это можно исправить, изменив -- на ++, но я не могу понять, какой единственный символ изменится, чтобы заставить его работать.

4b9b3361

Ответ 1

Вот одно из решений:

for( i = 0; -i < n; i-- )
        printf("-");

Вот второй, спасибо Марку за помощь мне!

for( i = 0; i + n; i-- )
    printf("-");

И у Марка также был третий, который

for( i = 0; i < n; n-- )
    printf("-");

Ответ 2

Изменить i-- на n-- - это другое.

Хорошо - Габ сделал исправление, поэтому я удалил другое решение. Он побеждает!

Ответ 3

Третий ответ:

for( i = 0; i + n; i-- )  
    printf("-"); 

Спасибо Габу Ройеру за вдохновение.

Объяснение: В конце концов, i + n приведет к -20 + 20 = 0, который равен false.

Ответ 4

    for( i = 0; i < n; n-- )  
    printf("-");  

Изменено я - до n -

Ответ 5

Вот один из них, я думаю:

for( i = 0; i < n; n-- )

Ответ 6

Сравнение в цикле for может быть любым выражением - вы можете отрицать i.

for (i = 0; -i < n ; i--)

Ответ 7

Решение 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;
}

Не решил третий.

Ответ 8

Вот еще один:

#include <stdio.h>

int main()
{
    int i;
    int n = -20; //make n negative
    for( i = 0; i < n; i-- ) 
        printf("-");
    return 0;
}