Чтение онлайн

ЖАНРЫ

Язык Си - руководство для начинающих

Д. МАРТИН

Шрифт:

Управление в программе передается оператору, у которого в качестве метки используется значение некоторого выражения. Затем в процессе прохождения программы будут выполняться оставшиеся операторы, пока не произойдет новый переход.

Как выражения, так и метки должны иметь значения целого типа (включая тип char), метки должны быть константами или константными выражениями. Если не которому значению выражения не соответствует никакая метка, управление передается оператору с меткой default (если

такой имеется). В противном случае, управление передается оператору, следующему за оператором switch.

III. Форма:

switch (выражение)

{ case метка1: оператор1

case метка2: оператор2

default: оператор3

}

В операторе может присутствовать более чем 2 помеченных оператора, а наличие метки default является необязательным.

IV. Пример

switch (letter)

{

 case 'a':

case 'e': printf(" %c - этогласная\n ", letter);

case 'c':

case 'n': printf(" Символ%свнаборебукв\ саnе\ n ", letter);

default: printf(" Добрыйдень. \n" );

}

Если переменная letter имеет значение 'a' или 'e', будут выведены на печать все три сообщения, если же 'c' или 'n', то последние два. В случае остальных значений будет напечатано только последнее сообщение.

Изложенный здесь материал позволит вам писать гораздо более мощные и обладающие большими возможностями программы, чем раньше. В справедливости этого утверждения вы сможете убедиться, если сравните некоторые из примеров, приведенных в данной главе, с программами, рассмотренными в предыдущих главах. Но вы изучили еще далеко не все. Вот почему вам придется одолеть еще немало страниц этой книги.

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Как осуществить выбор из двух возможностей выполнить оператор или пропустить его: с помощью оператора if.

Как осуществить выбор одного из двух вариантов: с помощью оператора if-else.

Как осуществить выбор одного из нескольких вариантов: с помощью операторов else-if, switch

Операции отношения: > >= = = <= < !=

Логические операции: && || !

ВОПРОСЫ И ОТВЕТЫ 

Вопросы

1. Определите, какие выражения истинны, а какие ложны.

а. 100 > 3

б. 'а' > 'с'

в. 100 > 3 && 'а' > 'с'

г. 100 > 3 || 'a' > 'с'

д. !(100 > 3)

2.

Запишите выражения, соответствующие следующим условиям

а. Значение number равно или больше 1, но меньше 9

б. Значение ch не равно q или k

в. Значение number лежит между 1 и 9, но не равно 5

г. Значение number не лежит между 1 и 9

3. В программе, приведенной ниже, наряду с неоправданно сложными условными выражениями имеются и прямые ошибки. Уточните эту программу и исправьте в ней ошибки.

main /* 1 */

 { /* 2 */

 int weight, height; /* вес в фунтах, рост в дюймах */

/* 4 */

scanf('' %d, weight, height); /* 5 */

if(weight < 100) /* 6 */

if (height >= 72) /* 7 */

printf(" Для такого веса у вас слишком большой рост \n");

else if (height < 72 && > 64) /* 9 */

printf(" У вас большой рост для вашего веса. \n" );

else if (weight > 300 && !(weight < = 300)) /* 11*/

if( !(height >= 48) /* 12 */

printf(" Для такого веса у вас слишком маленький рост.\n" );

else /* 14 */

printf(" У вас идеальный вес. \n"); /* 15*/

/* 16 */

}

Ответы

1. Выражения истинны в вопросах а и г

2. a. number > = 1 && number < 9

б. ch != 'q' && ch != k

Замечание: выражение ch != q || ch!= k всегда будет иметь значение "истина", потому что если переменная сh равна q, то она не может равняться k, и второе условие оказывается выполненным врезультате все выражения "ИЛИ" будет истинным.

в. number > 1 && number < 9 && number != 5

г. !(number > 1 && number < 9) или number < = 1 || number > = 9

Замечание: сказать, что число НЕ лежит между 1 и 9 это то же самое, что сказать: число равно или меньше 1 ИЛИ равно или больше 9. Вторая форма несколько неуклюже звучит на словах, но проще записывается в виде выражения.

Поделиться с друзьями: