ВОРОТА | ВОРОТА КС 2021 | Набор 1 | Вопрос 47

Опубликовано: 7 Октября, 2022

Рассмотрим следующую программу ANSI C.

#include 
int main()
{
    int i, j, count;
    count=0;
    i=0;
    for (j=-3; j= 0) && (i++))
        count = count + j;
    }
    count = count +i;
    printf(“%d”, count);
    return 0;
}

Какой из следующих вариантов правильный?
(A) Программа не будет успешно скомпилирована
(B) Программа успешно скомпилируется и выведет 10 при выполнении
(C) Программа успешно скомпилируется и выведет 8 при выполнении
(D) Программа успешно скомпилируется и выведет 13 при выполнении

Ответ: (В)
Объяснение: Изначально i=0, count=0 и цикл for выполняется от j= -3 до j=3.
Если условие внутри цикла for будет выполняться, когда j>=0 и i не равно нулю,
Таким образом, для j = -3, -2, -1 он не войдет в условие if, так как j меньше 0.

Когда j = 0, начальное значение i также равно 0, поэтому, если условие не будет выполнено, но i++ увеличит значение i после проверки условия if. так что теперь я =1.
Когда j = 1, значение i равно 1, поэтому он войдет в условие if, а значение count будет 0 + 1 = 1, а i++ увеличит значение i после проверки условия if. так что теперь я = 2.
Когда j = 2, значение i равно 2, поэтому он войдет в условие if, а значение count будет 1 + 2 = 3, а i++ увеличит значение i после проверки условия if. так что теперь я =3.
Когда j=3, значение i равно 3, поэтому он войдет в условие if, а значение count будет 3+3 =6, а i++ увеличит значение i после проверки условия if. так что теперь я =4.

После запуска цикла for значение переменной count равно 6, а значение i равно 4.
Таким образом, count=count+i будет 6+4=10.

Следовательно, программа будет успешно скомпилирована и выдаст 10 при выполнении: https://ide.geeksforgeeks.org/lyJ79mDqil.


Викторина этого вопроса

РЕКОМЕНДУЕМЫЕ СТАТЬИ