Множественный выбор
Когда в программе нужно осуществить выбор одного из нескольких вариантов, мы можем сделать это, используя конструкцию if-else if-else_...else Во многих случаях оказывается более удобным применять оператор switch.
Оператор switch (переключатель) используется для разветвления программы по нескольким направлениям. Он имеет следующую форму:
switch(e) { сase c1: s1; break; case c2: s2; break; ... case ck: sk; break; default: s(k+1); }
где
- e - целое выражение (или выражение, которое может быть преобразовано в целое выражение);
- ci - целое выражение с постоянным значением (или выражение, которое может быть преобразовано к такому выражению);
- si обозначает операторы, число которых может быть больше или равно нулю.
Метки ci, обозначающие альтернативы case, должны быть уникальными; двух одинаковых меток быть не может. Только одна альтернатива может получить префикс default.
Результатом выполнения оператора switch является выбор альтернативы с меткой ci, которая равна значению выражения переключателя e; в этом случае выполняются операторы si. В случае, если выражение переключателя не равно ни одному из выражений альтернатив case, то выполняются операторы s(k+1); при отсутствии альтернативы default не выполняется ни одна из альтернатив оператора switch.
Пример:
/* Реализация работы калькулятора. Сначала задается число - сколько раз нужно подсчитать. Вводятся левый операнд, операция, правый операнд. Оператор выбора определяет, какой оператор должен работать. Результат выводится на экран. */ #include <stdio.h> #include <conio.h> #include <process.h> main() { float a,b; char opr; float result=0; int I,i=0; clrscr(); printf("Сколько раз будете считать?:\n"); scanf("%I",&I); printf("Введите операнд, операцию, операнд:\n"); while(i<I) { i++; scanf("%f%c%f",&a,&opr,&b); switch(opr) { case '+': result=a+b; break; case '-': result=a-b; break; case '*': result=a*b; break; case '/': result=a/b; break; default: printf("Ошибка. Неверен знак операции "); exit(1); /* функция берется из заголовочного файла process.h*/ } textcolor (15); /* функция берется из заголовочного файла conio.h*/ cprintf("Результат равен %g\n",result); if (i<I) printf("Введите операнд, операцию, операнд\n"); else { textcolor(12); /* функция берется из заголовочного файла conio.h */ cprintf("Конец работы\n"); /* текст печатается красным цветом*/ } } getch () ; exit(0); /* функция берется из заголовочного файла process.h */ }