Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ЭВМ ответы.doc
Скачиваний:
3
Добавлен:
07.05.2019
Размер:
309.25 Кб
Скачать

3.2. Оператор множественного выбора

   Язык Си имет встроенный оператор множественного выбора, называемый switch. Основная форма оператора имеет вид:

   /* Пример 11 */   switch(выражение){    case constant1:   последовательность операторов;   break;    case constant2:   последовательность операторов;   break;    ...    default: последовательность операторов;    }

   Сначала вычистяется выражение в скобках за ключевым словом switch. Затем перебирается список меток ( case: ....; и т.д. ) до тех пор, пока не найдется метка, соответствующая значению вычисленного выражения. Далее происходит выполнение последовательности операторов, следующих за двоеточием. Если же не встречается ни одного соответствия, то выполняется default-последовательность.
   Допускается конструкция оператора switch, когда слово default и соответствующая последовательность операторов может отсутствовать.
   Ещё один не встречавшийся ранее оператор - break. Когда после одного или нескольких операторов встречается ключевое слово break, то его выполнение приводит к выходу из оператора switch и переходу к следующей инструкции. Наличие оператора break в операторе switch необязательно. Оператор break заканчивает последовательность операторов, относящихся к каждой метке. Если же оператор break отсутствует, то выполнение switch продолжается до первого встретившегося break либо до конца самого оператора switch. Рассмотрим две программы с использованием оператора break и без него:
   

   #include<stdio.h>    /* Пример 12 */   main() {   char ch;   pitntf("Введите заглавную букву русского алфавита ...");   ch=getchar();   /*Вводим один символ*/   if(ch>='A' && ch<='Я')   /*Проверяем, пренадлежит ли     значение ch диапазону допустимых значений в программе*/   {     switch(ch)     {     case 'A': printf("Андреев\n");      break;     case 'Б': printf("Булгаков\n");      break;     case 'В': printf("Волошин\n");      break;     case 'Г': printf("Гоголь\n");      break;     default: printf("Достоевский и т.д...\n");      break;   }    else ptintf("Надо было ввести заглавную букву."); }

   #include<stdio.h>    /* Пример 13 */   main() {   char ch;   pitntf("Введите заглавную букву русского алфавита ...");   ch=getchar();   /*Вводим один символ*/   if(ch>='A' && ch<='Я')   /*Проверяем, пренадлежит ли     значение ch диапазону допустимых значений в программе*/   {     switch(ch)     {     case 'A': printf("Андреев\n");     case 'Б': printf("Булгаков\n");     case 'В': printf("Волошин\n");     case 'Г': printf("Гоголь\n");     default: printf("Достоевский и т.д...\n");  }    else ptintf("Надо было ввести заглавную букву."); }

   Предположим, вы запустили первую программу и ввели букву Б. Результатом выполнения будет строка: Булгаков. Т.е. выполняется только один оператор, соответствующий метке 'Б .