Консультация № 191242
25.07.2017, 11:21
0.00 руб.
0 7 1
Здравствуйте! У меня возникли сложности с таким вопросом:
чему будет равно значение переменной i после выполнения следующего фрагмента программы при n=222 ?

Код:
...
int k = 2, p = 4;
int n;
scanf("%d", &n);
for (int i = 0; i<n; i++)
{ k++;
p+=25;
}

Я посчитала, что i = 221 ... но говорят неправильно

Обсуждение

давно
Мастер-Эксперт
325460
1469
25.07.2017, 11:29
общий
Адресаты:
День добрый.

первое что надо учесть, у Вас идет определение переменной непосредственно в цикле, соответственно за телом цикла переменна i не будет видна.

Что же происходит у нас в цикле и нарасчивается на 1
когда i = 221 цикл все еще отрабатывает и происодит вход в тело цикла, переменная i увеличивается на 1 i = 222 и вот тут срабатывает условие i < n
происходит выход из цыкла.
Об авторе:
to live is to die
давно
Посетитель
401172
78
25.07.2017, 11:32
общий
Спасибо, понятно! Я трактовала вопрос как "На каком значении переменной i закончит свою работу цикл?" и получилось, что это неверно
давно
Советник
400484
472
25.07.2017, 11:33
общий
это ответ
Здравствуйте, pNod!
Здравствуйте, pNod!
for (int i = 0; i<n; i++) - ответ тут.
i = 221 тогда условие выполняется и выполнится
Код:

{
k++;
p+=25;
}

после этого i будет увеличено на 1 (i++)
i = 222 - условие не выполнится и будет выход из for

Вот как то так...
5
давно
Посетитель
7438
7205
25.07.2017, 11:55
общий
25.07.2017, 12:01
Адресаты:
После выхода из цикла переменная i становится недоступной.
Думаю, правильный ответ: после цикла переменная i - недоступна
Если бы она была описана вне цикла, то она была бы равна 222

Именно по этой причине я стараюсь переменные цикла не определять в теле цикла.
Лично мне достаточно часто бывает нужно значение этой переменной после выхода из цикла.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401172
78
25.07.2017, 12:04
общий
Цитата: Лысков Игорь Витальевич
Думаю, правильный ответ: после цикла переменная i - недоступна

Здравствуйте, Игорь Витальевич! Знаете, я ведь также подумала, но решила, что надо обязательно ввести значение, потому как ответы программа проверяет автоматически. Значит забито в ответе число, т.к. сформулировать словом можно по разному: я сформулирую ответ как "локальная переменная уничтожена", вы "что не определена", кто-то что ее "не существует"...
Так что, думаю здесь, имелось ввиду 222.
давно
Посетитель
7438
7205
25.07.2017, 12:09
общий
Адресаты:
Скорее всего. Значит, вопрос сформулирован некорректно.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401172
78
25.07.2017, 12:11
общий
Цитата: Лысков Игорь Витальевич
Значит, вопрос сформулирован некорректно.

Полностью согласна.
Форма ответа