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

Переключатель

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

switch (переключающее_выражение)

{ case константное_выражение_1: операторы_1;

case константное_выражение_2: операторы_2;

. . .

case константное_выражение_n: операторы_n;

default: операторы_n+1;

}

Оператор  switch  передает управление тому оператору, константное_выражение которого совпадает со значениями переключающего_выражения.

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

Все константные_выражения приводятся к типу переключающего выражения. Они должны быть разными по значению, но одного типа.

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

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

Пример.

#include <stdio.h>

void main()

{int a;

puts(“Введите целое число”);

scanf(“%d”,&а); // ввод с клавиатуры переменной а (пусть 2)

switch (а)

{ case 0: printf (“это нуль”);

case 1: printf (“это единица”);

case 2: printf (“это двойка”);

default: printf (“это больше двух”);

}

}

Метки не изменяют последовательности выполнения операторов. Если не предусмотрены переходы или выход из переключателя, то в нем выполнятся все операторы последовательно, начиная с той метки, на которую передано управление. В нашем примере, если a=2, напечатается это двойка это больше двух .

Для того чтобы выполнялась только одна группа операторов, предусмотрен оператор  break . Если поместить оператор  break  после каждой группы операторов, то выполниться только та группа, константное_выражение которого совпало с переключающим_выражением.

Рис.5а – Блок-схема работы оператора Рис.5б – Блок-схема работы оператора

переключателя переключателя с оператором   break 

Пример  2.6 . По введенному знаку

void main( ) выполняется соответствующее арифметическое действие:

#include <stdio.h>

{char oper;

float x=2.8,y=4.0, z;

printf(“Введите знак операции\n”);

scanf(“%c”,&oper);

switch (oper)

{ case ‘+’: { z=x+y;

printf(“z=%.1f+%.1f=%.1f\n”,z);}

break;

case ‘–’: { z=x–y;

printf(“z=%.1f-%.1f=%.1f\n”,z);}

break;

case ‘*’: { z=x*y;

printf(“z=%.1f*%.1f=%.1f\n”,z);}

break;

case ‘/’: { z=x/y;

printf(“z=%.1f/%.1f=%.1f\n”,z);}

break;

default: printf(“эту операцию не знаю\n”);

}

}

Перед группой операторов может быть помещено несколько константных выражений (меток).

Пример  2.7 . По номеру месяца определяется пора года

#include <stdio.h>

void main( )

{int n;

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

scanf(“%d”,&n);

switch (n)

{ case 1:

case 2:

case 12: puts(“этo зима”); break;

case 3:

case 4:

case 5: puts(“этo весна”); break;

case 6:

case 7:

case 8: puts(“этo лето”); break;

case 9:

case 10:

case 11: puts(“этo осень”); break;

default: puts(“Такого месяца нет”);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]