Фиксация поврежденной петли путем изменения точно одного символа

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

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

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

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

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

27
задан Javier 2 January 2012 в 02:47
поделиться

7 ответов

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

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

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

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

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

for( i = 0; i < n; n-- )
    printf("-");
34
ответ дан 28 November 2019 в 04:50
поделиться

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

for (i = 0; -i < n ; i--)
0
ответ дан 28 November 2019 в 04:50
поделиться

Думаю, вот один из них:

for( i = 0; i < n; n-- )
0
ответ дан 28 November 2019 в 04:50
поделиться
    for( i = 0; i < n; n-- )  
    printf("-");  

Изменил i-- на n -

2
ответ дан 28 November 2019 в 04:50
поделиться

Замените i - на n - другое.

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

17
ответ дан 28 November 2019 в 04:50
поделиться

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

Третьего не придумали.

0
ответ дан 28 November 2019 в 04:50
поделиться

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

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

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

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

7
ответ дан 28 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: