Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Оператор выбора switch






Оператор выбора switch (или переключатель) предназначен для выбора ветви вычислительного процесса исходя из значения управляющего выражения. Использование данного оператора целесообразно при сложном условном ветвлении.

Структура оператора следующая:

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

{

case константное выражение: оператор или группа операторов

break;

case константное выражение: оператор или группа операторов

break;

……………

default: оператор или группа операторов

}

Значение выражения оператора switch должно быть целочисленным. Это означает, что в выражении можно использовать переменные только целого или символьного типа. Результат вычисления выражения по очереди сравнивается с каждым из константных выражений. Если в какой-либо строке находится совпадение, управление передается на соответствующую метку case, и выполняется связанная с ней группа операторов. Выполнение продолжается до конца тела оператора switch или пока не встретится оператор break, который передает управление из тела switch оператору, следующему за закрывающей данную конструкцию фигурной скобкой.

Применение оператора break в контексте блока switch является обычным. Без него после выполнения варианта case, который соответствует значению управляющего выражения, оператор switchпродолжит свою работу, при этом будут выполнены все последующие варианты caseи ветка default.

Оператор, связанный с default, выполняется, если выражение не совпало ни с одним из константных выражений в case. Оператор defaultне обязательно располагается в конце конструкции. Кроме того, он и сам не обязателен. В этом случае при отсутствии совпадений не выполняется ни один оператор. Не допускается совпадение константных выражений.

Пример 1. По номеру дня недели, введенному с клавиатуры, вывести на экран название дня недели:

#include < stdio.h>

int main(void)

{

char day;

printf(" Введите номер дня недели\n");

scanf(" %c", & day);

 

switch (day)

{

case'1': printf(" Понедельник\n"); break;

case'2': printf(" Вторник\n"); break;

case'3': printf(" Среда\n"); break;

case'4': printf(" Четверг\n"); break;

case'5': printf(" Пятница\n"); break;

case'6': printf(" Суббота\n"); break;

case'7': printf(" Воскресенье\n"); break;

default: printf(" Ошибка ввода\n");

}

return 0;

}

В этом примере переменная day, управляющая оператором switch, имеет символьный тип. При вводе с клавиатуры символов 1, 2, … 7 на экран выводится название соответствующего дня недели. При вводе любого другого символа на экран выводится сообщение об ошибке.

Пример 2. По номеру месяца, введенному с клавиатуры, вывести на экран название времени года:

#include < stdio.h>

int main(void)

{

int month;

printf(" Введите номер месяца в году\n");

scanf(" %d", & month);

switch (month)

{

case 12:

case 1:

case 2: printf(" Зима\n"); break;

case 3:

case 4:

case 5: printf(" Весна\n"); break;

case 6:

case 7:

case 8: printf(" Лето\n"); break;

default: printf(" Ошибка ввода\n"); break;

case 9:

case 10:

case 11: printf(" Осень\n");

}

return 0;

}

В этом примере оператор switch управляется целочисленной переменной month. При вводе в эту переменную значений 12, 1 или 2 выполняется одно и то же действие – вывод на экран слова " Зима", так как в ветвях case 12: и 1: нет ни одного оператора. При вводе значения 12, например, выполнение switch начнется со строчки case 12:, затем будет выполнена строка case 1:, затем операторы строки case 2:, последний из которых – break – завершит выполнение оператора switch. Обратите внимание также на положение ветви default – совсем не обязательно помещать ее последней в switch.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.