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

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

Когда имеется сложный набор условий, лучше всего воспользоваться оператором switch, который является более удобной альтернативой оператору if.

Логика оператора switch следующая: «найти значение, соответствующее переменной для сравнения, и выполнить соответствующее действие». Иными словами, он работает как оператор выбора нужного действия.

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

{

case константное выражение: инструкция

выражение перехода

[default:: инструкция]

}

Подобно оператору условия if...else, выражение условия помещено в круглые скобки в начале оператора switch.

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

Оператор case требует обязательного указания значения для сравнения (constant-expression) – константного выражение (литеральная или символическая константа, или перечисление), а также блока инструкций (statement) и оператора прерывания действия (jump-statement).

Если результат условия совпадет с константным значением оператора case, то будет выполняться соответствующий ему блок инструкций. Как правило, в качестве оператор перехода используют оператор break, который прерывает выполнение оператора switch.

Пример

static void Main(string[] args)

{

//По номеру дня недели вывести его название

int a;

Console.Write("Введите номер дня недели: ");

a = int.Parse(Console.ReadLine());

switch (a)

{

case 1:

Console.WriteLine("Понедельник");

break;

case 2:

Console.WriteLine("Вторник");

break;

case 3:

Console.WriteLine("Среда");

break;

case 4:

Console.WriteLine("Четверг");

break;

case 5:

Console.WriteLine("Пятница");

break;

case 6:

Console.WriteLine("Суббота");

break;

case 7:

Console.WriteLine("Воскресенье");

break;

default:

Console.WriteLine("Такого дня недели не существует");

break;

}

Console.ReadLine();

}

Задачи

  1. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года ("зима", "весна" и т.д.). 

  2. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести число дней в этом месяце для невисокосного года. 

  3. Дано целое число в диапазоне 0 – 9. Вывести строку — название соответствующей цифры на русском языке (0 — "ноль", 1 — "один", 2 — "два", ...). 

  4. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично"). 

  5. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат. 

  6. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах. 

  7. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах. 

  8. Робот может перемещаться в четырех направлениях ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды. 

  9. Локатор ориентирован на одну из сторон света ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и может принимать три цифровые команды: 1 — поворот налево, –1 — поворот направо, 2 — поворот на 180 градусов. Дан символ C — исходная ориентация локатора и числа N1 и N2 — две посланные ему команды. Вывести ориентацию локатора после выполнения данных команд. 

  10. Элементы окружности пронумерованы следующим образом: 1 — радиус (R), 2 — диаметр (D), 3 — длина (L), 4 — площадь круга (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения Pi использовать 3.14. 

  11. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 — катет (a), 2 — гипотенуза (c), 3 — высота, опущенная на гипотенузу (h), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 

  12. Элементы равностороннего треугольника пронумерованы следующим образом: 1 — сторона (a), 2 — радиус вписанной njpsfmnqrh (R1), 3 — радиус описанной окружности (R2), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 

  13. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. 

  14. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной. 

  15. Дано целое число в диапазоне 20 – 69, определяющее возраст (в годах). Вывести строку — словесное описание указанного возраста, обеспечив правильное согласование числа со словом "год", например: 20 — "двадцать лет", 32 — "тридцать два года", 41 — "сорок один год".

  16. Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа, например: 256 — "двести пятьдесят шесть", 814 — "восемьсот четырнадцать".

  17. В восточном календаре принят 60-летний цикл, состоящий из 12- летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 год был началом цикла — годом зеленой крысы.

Циклы

Ещё вставить про циклы теорию - ?

Существует 4 вида циклов:

1. цикл с параметрами

2. цикл с постусловием

3. цикл с предусловием

4. совместный цикл

Цикл с параметрами:

В цикле с параметрами указывается некоторая переменная, условие, при котором будет выполняться цикл и шаг, с которым меняется данная переменная. Условие, как и в любом другом цикле, указывается в виде булевого значения (True\False). Обычно условие имеет вид:

for (int i = 0; i < 100; i++)

{

//тело цикла

}

Этот цикл выполнит 100 итераций, прежде чем условие i < 100 прекратит выполняться, после чего цикл завершится.

Цикл с постусловием

Данный цикл имеет вид

do

{

//тело цикла

}

while(условие)

Притом даже если условие не выполняется (False), цикл выполнится хотя бы 1 раз, прежде чем условие будет проверено, затем, если условие по прежнему выполняется, снова выполнится оператор, стоящий после do.

Цикл с предусловием

Цикл имеет вид

while(условие)

{

//тело цикла

}

В этом цикле сначала, перед выполнением, проверяется условие, если оно выполняется - итерация выполняется.

Совместный цикл

Так же данный цикл называется циклом просмотра. Выглядит он так:

foreach (type item in massiv)

{

//тело цикла, использование item

}

В данном цикле указывается тип элементов, которые требуются и коллекцию объектов, по которой будет вестись проход. Выполняем операцию X для всех элементов данного типа в данной коллекции. Также имеются операторы break и continue, первый - завершает цикл, второй - завершает текущую итерацию и переходит к следующей.

Пример

static void Main(string[] args)

{

//Известны оценки абитуриента на четырёх экзаменах. Определить, сколько «5» он получил.

int i,ocenka, counter=0;

for (i=1; i<5; i++)

{

Console.Write ("Введите " + i + " оценку абитуриента: ");

ocenka = int.Parse(Console.ReadLine());

Console.WriteLine();

if (ocenka == 5) counter++;

}

Console.Write ("Количество пятерок, полученных абитуриентом: " + counter);

Console.ReadLine();

}

static void Main(string[] args)

{

//Известны оценки по информатике 28 учеников класса. Выяснить, есть ли среди них двойки.

int i=1, uch;

// Цикл проверяет условие при выходе из цикла. Он выполняется до тех пор, пока остается истинным условие.

do

{

Console.Write ("Введите оценку по информатике " + i + " ученика: ");

uch = int.Parse(Console.ReadLine());

Console.WriteLine();

i++;

if (i >29) goto loop1;

}while(uch != 2);

loop1:

if (uch == 2) Console.Write ("Среди оценок есть двойки");

else Console.Write ("Среди оценок нет двоек");

Console.WriteLine();

Console.ReadLine();

}