Возможен ли вывод следующего фрагмента программы?
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
Ответ: ми
Может кто-нибудь объяснить этот кусок кода?(MCQ Вопрос)
2 ответа
Этот вопрос можно решить, исключив неправильный ответ. Этот фрагмент печатает символ и выходит из цикла, если символ x
, Таким образом, программа не будет выводить x
,
Любая выходная строка, которая не содержит x
возможно. Возможно, в вашем MCQ mi
это единственный вариант с x
и все остальные параметры содержат x
где-то в строке делает их неправильный ответ.
Если ввод "mix....", вывод будет "mi". Ниже ваша петля развернута.
getchar() -> m -> else -> print m /* First getchar */
getchar() -> i -> else -> print i /* Second getchar */
getchar() -> x -> if -> break /* Second getchar */
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
Ваш код будет продолжать работать до тех пор, пока не встретит 'x', поэтому, независимо от того, что вы вводите, он будет читать символ за символом, как вы использовали функцию getchar().
- Если символ "х", то разорвать цикл.
- еще печатать персонажа.
как, если вход
Sparx
выход будет
лонжерон
Цикл для
for(i=getchar();; i=getchar())
и синтаксис и структура цикла for
for ( variable initialization; condition; variable update )
так как i = getchar() будет читать char 'i', то все в порядке. Далее нет условия и окончательного обновления вы снова читаете символ, так что это бесконечный цикл.
Цикл прекратится только тогда, когда он столкнется 'x'
как утверждение
if(i=='x')
break;
В противном случае он будет продолжать печатать символ.
else putchar(i);
Вот демо.
Надеюсь, поможет!!