Язык Си - [59]

Шрифт
Интервал

.

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. Вторая форма несколько неуклюже звучит на словах, но проще записывается в виде выражения.


3.     Строка 5: должна выглядеть так scanf(" %d %d", &weight, &height). He забывайте указывать символы в качестве префиксов имен переменных в функции scanf( ). Кроме того, данной строке должна предшествовать строка, предлагающая ввести данные.

     Строка 9: подразумеваемое выражение должно выглядеть так: (height < 72 && height > 64). Однако первая часть этого выражения необязательна, поскольку величина height, если поток управления достигнет записи else-if, будет обязательно меньше 72. Поэтому более простое условие (height > 64) в данном случае служит той же цели.

     Строка 11: избыточное условие; второе подвыражение (отрицание условия "величина weight меньше или равна 300") означает то же, что и первое. В действительности данное условие записывается так: (weight > 300). Но неприятности на этом не кончаются. Строка 11 относится к ошибочному оператору if. Очевидно, что эта часть else ассоциируется с оператором if, расположенным в строке 6, но, согласно правилу, связывающему ее с ближайшим отрицанием условия, содержащегося в if, она будет ассоциироваться с оператором if на строке 9. Поэтому условие, помещенное на строке 11, будет проверяться в том случае, когда величина weight меньше 100, а величина height меньше или равна 64. Это делает невозможным превышение переменной weight значения 300 при выполнении данного оператора.

     Строки 7-9 должны быть заключены в фигурные скобки. Тогда строка 11 станет альтернативой оператору, расположенному на строке 6, а не на строке 9.

     Строка 12: данное выражение необходимо упростить так: (height < 48)

     Строка 14: это ключевое слово else относится к последнему оператору if, раcположенному на строке 12. Операторы, помещенные на строках 12 и 13, необходимо заключить в фигурные скобки, тогда


Еще от автора Митчел Уэйт
Язык программирования C [Лекции и упражнения, 6-е изд.]

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


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.