Оператор многовариантного ветвления. Может быть вложенным.
Значение выражения последовательно сравнивается с константами и если они совпадают, то выполняется инструкция.
Синтаксис:
switch(выражение) {
case константа :
инструкции;
break;
...
default:
инструкции;
break;
}
выражение — должно иметь целочисленный тип (int, char) или тип string , использование логических операций или сравнения недопустимо;
case — является меткой и не имеет самостоятельного значения;
значение — соответствовать результату выражения; break или return или throw или goto — являются операторами перехода;
default — использование этого оператора необязательно. В этом блоке можно разместить обработчик непредвиденной ситуации или сообщение о ее возникновении;
Значение выражения последовательно сравнивается с константами и если они совпадают, то выполняется инструкция.
Синтаксис:
switch(выражение) {
case константа :
инструкции;
break;
...
default:
инструкции;
break;
}
выражение — должно иметь целочисленный тип (int, char) или тип string , использование логических операций или сравнения недопустимо;
case — является меткой и не имеет самостоятельного значения;
значение — соответствовать результату выражения; break или return или throw или goto — являются операторами перехода;
default — использование этого оператора необязательно. В этом блоке можно разместить обработчик непредвиденной ситуации или сообщение о ее возникновении;
обычная switch инструкция
Main.cs
using
System;
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Введите число : "
);
-
decimal
a =
decimal
.Parse(Console.ReadLine());
-
one: Console.Write(
"Введите число : "
);
-
decimal
b =
decimal
.Parse(Console.ReadLine());
-
two: Console.Write(
"Выберите арифметическое действие '+' '-' '*' '/' '%' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"+"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a + b));
-
break
;
-
case
"-"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a - b));
-
break
;
-
case
"*"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a * b));
-
break
;
-
case
"/"
:
-
if
(b == 0) {
-
Console.WriteLine(
"На ноль делить нельзя!"
);
-
goto
one;
-
}
-
else
{
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a / b));
-
}
-
break
;
-
case
"%"
:
-
if
(b == 0) {
-
Console.WriteLine(
"На ноль делить по модулю нельзя!"
);
-
goto
one;
-
}
-
else
{
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a % b));
-
}
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не тот символ, попробуйте еще!"
);
-
goto
two;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Введите число : "
);
-
decimal
a =
decimal
.Parse(Console.ReadLine());
-
one: Console.Write(
"Введите число : "
);
-
decimal
b =
decimal
.Parse(Console.ReadLine());
-
two: Console.Write(
"Выберите арифметическое действие '+' '-' '*' '/' '%' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"+"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a + b));
-
break
;
-
case
"-"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a - b));
-
break
;
-
case
"*"
:
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a * b));
-
break
;
-
case
"/"
:
-
if
(b == 0) {
-
Console.WriteLine(
"На ноль делить нельзя!"
);
-
goto
one;
-
}
-
else
{
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a / b));
-
}
-
break
;
-
case
"%"
:
-
if
(b == 0) {
-
Console.WriteLine(
"На ноль делить по модулю нельзя!"
);
-
goto
one;
-
}
-
else
{
-
Console.WriteLine(
"{0} {1} {2} = {3}"
, a, str, b, (a % b));
-
}
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не тот символ, попробуйте еще!"
);
-
goto
two;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
Введите число : 10
Введите число : 0
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
На ноль делить нельзя!
Введите число : 2
Выберите арифметическое действие '+' '-' '*' '/' '%' : a
Вы ввели не тот символ, попробуйте еще!
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
10 / 2 = 5
Введите число : 0
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
На ноль делить нельзя!
Введите число : 2
Выберите арифметическое действие '+' '-' '*' '/' '%' : a
Вы ввели не тот символ, попробуйте еще!
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
10 / 2 = 5
вложенная switch инструкция
Main.cs
using
System;
class
Program {
-
public
static
int
Main() {
-
one: Console.Write(
"Выберите умножение '*' или возведение в степень '^' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"*"
:
-
Console.WriteLine(
"Таблица умножения"
);
-
Console.Write(
"Введите число : "
);
-
byte
a =
byte
.Parse(Console.ReadLine());
-
Console.WriteLine();
-
for
(
byte
i=1; i<11; i++) {
-
switch
(i) {
-
case
1:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
2:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
3:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
4:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
5:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
6:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
7:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
8:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
9:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
10:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
}
-
}
-
break
;
-
case
"^"
:
-
Console.WriteLine(
"Возведение числа в степень"
);
-
Console.Write(
"Введите число : "
);
-
int
b =
byte
.Parse(Console.ReadLine());
-
Console.WriteLine();
-
for
(
byte
i=1; i<11; i++) {
-
switch
(i) {
-
case
1:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
2:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
3:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
4:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
5:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
6:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
7:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
8:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
9:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
10:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
}
-
}
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не тот символ, попробуйте еще!"
);
-
goto
one;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Program {
-
public
static
int
Main() {
-
one: Console.Write(
"Выберите умножение '*' или возведение в степень '^' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"*"
:
-
Console.WriteLine(
"Таблица умножения"
);
-
Console.Write(
"Введите число : "
);
-
byte
a =
byte
.Parse(Console.ReadLine());
-
Console.WriteLine();
-
for
(
byte
i=1; i<11; i++) {
-
switch
(i) {
-
case
1:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
2:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
3:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
4:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
5:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
6:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
7:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
8:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
9:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
case
10:
-
Console.WriteLine(
"{0} * {1} = {2}"
, a, i, (a*i));
-
break
;
-
}
-
}
-
break
;
-
case
"^"
:
-
Console.WriteLine(
"Возведение числа в степень"
);
-
Console.Write(
"Введите число : "
);
-
int
b =
byte
.Parse(Console.ReadLine());
-
Console.WriteLine();
-
for
(
byte
i=1; i<11; i++) {
-
switch
(i) {
-
case
1:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
2:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
3:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
4:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
5:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
6:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
7:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
8:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
9:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
case
10:
-
Console.WriteLine(
"{0} ^ {1} = {2}"
, b, i, Math.Pow(b, i));
-
break
;
-
}
-
}
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не тот символ, попробуйте еще!"
);
-
goto
one;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
Выберите умножение '*' или возведение в степень '^' : a
Вы ввели не тот символ, попробуйте еще!
Выберите умножение '*' или возведение в степень '^' : ^
Возведение числа в степень
Введите число : 3
3 ^ 1 = 3
3 ^ 2 = 9
3 ^ 3 = 27
3 ^ 4 = 81
3 ^ 5 = 243
3 ^ 6 = 729
3 ^ 7 = 2187
3 ^ 8 = 6561
3 ^ 9 = 19683
3 ^ 10 = 59049
Вы ввели не тот символ, попробуйте еще!
Выберите умножение '*' или возведение в степень '^' : ^
Возведение числа в степень
Введите число : 3
3 ^ 1 = 3
3 ^ 2 = 9
3 ^ 3 = 27
3 ^ 4 = 81
3 ^ 5 = 243
3 ^ 6 = 729
3 ^ 7 = 2187
3 ^ 8 = 6561
3 ^ 9 = 19683
3 ^ 10 = 59049
switch инструкция с провалом
Если после оператора case не стоит оператор break , то происходит так называемый "провал", выполнение переходит к следующему оператору case.
Main.cs
using
System;
class
Program {
-
public
static
int
Main() {
-
one: Console.Write(
"Введите слово 'Понедельник' или 'Вторник' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"Понедельник"
:
-
case
"ПОНЕДЕЛЬНИК"
:
-
case
"понедельник"
:
-
Console.WriteLine(
"Вы ввели слово : {0}"
, str);
-
break
;
-
case
"Вторник"
:
-
case
"ВТОРНИК"
:
-
case
"вторник"
:
-
Console.WriteLine(
"Вы ввели слово : {0}"
, str);
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не правильно, попробуйте еще"
);
-
goto
one;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Program {
-
public
static
int
Main() {
-
one: Console.Write(
"Введите слово 'Понедельник' или 'Вторник' : "
);
-
string
str = Console.ReadLine();
-
switch
(str) {
-
case
"Понедельник"
:
-
case
"ПОНЕДЕЛЬНИК"
:
-
case
"понедельник"
:
-
Console.WriteLine(
"Вы ввели слово : {0}"
, str);
-
break
;
-
case
"Вторник"
:
-
case
"ВТОРНИК"
:
-
case
"вторник"
:
-
Console.WriteLine(
"Вы ввели слово : {0}"
, str);
-
break
;
-
default
:
-
Console.WriteLine(
"Вы ввели не правильно, попробуйте еще"
);
-
goto
one;
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
Введите слово 'Понедельник' или 'Вторник' : вторник
Вы ввели слово : вторник
Вы ввели слово : вторник