Задачи по языку С


         

Массив символов инициируется строкой символов


char input[]="SSSWILTECH1\1\11W\1WALLMP1"; Массив символов инициируется строкой символов "SSS...MP1".
for ( i=2; (c=input[2])!='\0'; i++ ) { Переменная c принимает значения символов из массива input, начиная с третьего.
switch('S') При первом проходе по перключателю c='S';
default: putchar('S') Так как ни одна из меток вариантов не совпала с 'S', то выбирается вариант default. Печатается S.
continue Оператор продолжения приводит к очередному повторению самого внутреннего из объемлющих циклов, в данном случае это оператор for. Заметим, что оператор продолжения действует как оператор перехода к повторной инициации заголовка в операторе for.
for ( ; (c=input[3])!='\0'; i++ ) { Значение четвертого символа из input записывается в c.
switch('S') c='W'
default: putchar('S'); continue Как и раньше, печатается W.

Аналогично для i=4, c='I'
switch('L') i=5, c='L'
case 'L': continue Выбирается вариант 'L', ничего не печатается
в цикле for
i=5, c='L' Ничего не печатается.
i=6, c='T' Печатается T.
i=7, c='E' Ничего не печатается.
i=8, c='C' Печатается C.
i=9, c='Y' Печатается H.
switch('1') i=10, c='1'
case '1': break Оператор разрыва приводит к выходу из ближайшего объемлющего цикла или переключателя. В данном случае он вызывает переход на оператор, следующий за переключателем.
putchar(' ') Печатается пробел.
for ( ; (c=input[11])!='\0'; i++ ) { Возвращаемся назад к началу оператора for.
switch('\1') Символьная константа '\n', где n состоит не более чем из четырех восьмеричных цифр, соответствует символу с указанным восьмеричным кодом.

Например, в кодировке ASCII \0 соответствует символу nul, а \101 - символу A.
case 1: Метками вариантов могут быть целые или символьные константы. Значение \1 совпадает с целым 1, так как в языке тип char автоматически приводится к int.
while ( (c=input[++i]) !='\1' && c!='\0'); Условие окончания цикла для оператора while есть или c=='\1', или конец строки. Каждый раз, когда проверяется условие оператора while, i увеличивается на 1, так что выполнение цикла приведет к тому, что i станет индексом символа из input, следующего за '\1' или за концом строки.
i=12, c='\11' Ничего не печатается.
i=13, c='W' Ничего не печатается.
i=5, c='\1' Оператор while завершается.
case 9: putchar('S') Операторы каждого варианта выполняются последовательно, один за другим; между ними нет никакого неявного оператора разрыва. За вариантом 1 следует вариант 9. Печатается S.
case 'E': case'L': continue За вариантом 9 следуют варианты 'E' и 'L'.
for ( ; (c=input[15])!='\0'; i++ ) { Опять возвращаемся назад к началу оператора for.
в цикле for
i=15, c='W' Печатается W.
i=16, c='A' Печатается A.
i=17, c='L' Ничего не печатается.
i=18, c='L' Ничего не печатается.
i=19, c='M' Печатается M.
i=20, c='P' Печатается P.
i=20, c='1' Печатается пробел.
i=20, c='\0' Завершается оператор for.
putchar('\n')

Содержание  Назад