Оператор выбора (оператор переключатель) служит для выбора действий из нескольких возможных альтернативных вариантов. Оператор выбора имеет вид:
switch (выражение)
{
case константное_выражение: оператор или список операторов;
case константное_выражение: оператор или список операторов;
…………………..
case константное_выражение: оператор или список операторов;
default: оператор или список операторов;
}
здесь switch, case, default - ключевые слова.
Оператор выбора выполняется следующим образом.
сначала вычисляется значение выражения;
затем это значение по очереди сравнивается с константными выражениями, следующими за case;
если значение выражения совпадает с каким-то константным выражением, то выполняются операторы, помеченные соответствующим оператором case, и все следующие за ним до конца тела оператора switch или пока не встретится оператор break – оператор прерывания действия, который передает управление из тела switch вовне;
если значение выражения не совпадает ни с одним константным выражением и есть вариант default, то управление передается на оператор, помеченный ключевым словом default;
|
|
если сравнение не найдено и варианта default нет, то управление передается на cледующий за switch оператор.
Пример 1. Вывести название дня недели по его номеру.
#include <stdio.h>
int main()
{ int n;
printf(“Введите номер дня недели “);
scanf(“%d”,&n);
switch (n)
{ 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;
}
Пояснения.
Программа будет выполняться следующим образом: если будет введено значение n меньшее 1 (0 или какое-нибудь отрицательное число) или большее 7 (8 и далее), то это значение не совпадет ни с одной константой выбора, тогда выполняется оператор соответствующий ключевому слову default, и на экране появится текст:
неверный номер дня недели
Если же будет введено значение n равное 3, то начнут выполняться операторы соответствующие константе выбора 3, сначала оператор вывода printf(“среда\n”); затем выполнится оператор break и выполнение оператора выбора будет закончено. На экране появится текст:
среда
Пример 2. Ввести два числа типа float, знак арифметической операции и вывести на экран значение полученного выражения.
#include <stdio.h>
int main()
{float a,b,c;
char z;
printf(“Введите два числа и знак(+,-,*,/) через пробел\n”);
scanf(“%f %f %c”,&a,&b,&z);
switch (z)
{ case ‘+’: c=a+b; break;
case ‘-‘: c=a-b; break;
case ‘*’: c=a*b; break;
case ‘/’: if (b==0.) {printf(“Деление на 0 невозможно\n”); break;}
c=a/b; break;
default: printf(“неверный знак операции\n”);
|
|
}
printf("%f%c%f=%f",a,z,b,c);
return 0;
}
Пример 3. Вывести название времени года по введенному номеру месяца.
#include <stdio.h>
int main()
{ int n;
printf(“введите номер месяца “);
scanf(“%d”,&n);
switch (n)
{ 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;
case 9:
case 10:
case 11: printf(“осень\n”); break;
default: printf(“неверный номер месяца\n”);
}
return 0;
}