Теоретические сведения
Применение переключателей (оператор switch)наиболее целесообразно в том случае, когда ветвления нужно выполнить на основе сравнения значения некоторого выражения (например, переменной) с фиксированным набором значений. Часто это удобно при программировании меню.
Отметим, что в теле оператора-переключателя switch можно использовать вложенные операторы switch, при этом в ключевых словах case можно использовать одинаковые метки.
Например:
switch (w)
{
case 1: b=c; break; /* если переменная w=1, то b=c */
case 2:
switch (d) {
case 0: f=s; break; /* если w=2 и d=0 */
case 1: f=9; break; /* если w=2 и d=1 */
case 2: f-=9; break; /* если w=2 и d=2 */
}
break;
case 3: b-=c; break; /* если переменная w=3, то b=b-c */
}
Чтобы использовать переключатель для ветвления по условию с проверкой попадания некоторой величины в тот или иной интервал, можно воспользоваться условным выражением, формирующим целочисленный номер соответствующего интервала.
Пример 1. Составьте программу для печати приветствия на английском языке.
1 вариант
Часы суток | Номер интервала | Приветствие |
22 – 3 | интервал 1 | Good Night! |
4 – 10 | интервал2 | Good Morning! |
11 – 14 | интервал 3 | Good Day! |
15 – 16 | интервал 4 | Good Afternoon! |
17 – 21 | интервал 5 | Good Evening! |
#include <stdio.h>
void main () {
int time;
printf("Введите время (от 0 до 24): ");
scanf("%d",&time);
switch(time < 0 ? 0:
time < 4 ? 1:
time < 11 ? 2:
time < 15 ? 3:
time < 17 ? 4:
time < 22 ? 5:
time < 24 ? 1 : 0){
case 1: printf("Good Night!"); break;
case 2: printf("Good Morning!"); break;
case 3: printf("Good Day!"); break;
case 4: printf("Good Afternoon!"); break;
case 5: printf("Good Evening!"); break;
default: printf("Error!");
}
}
В соответствии со смыслом задачи и целочисленностью переменной time (используются только часы, минуты не учитываются) каждому интервалу соответствует конечное и не слишком большое количество значений. Их можно явно использовать в виде констант, входящих в case.Таким образом, решить данную задачу можно, используя несколько меток ветви переключателя.
Пример 2: Составьте программу для печати приветствия на английском языке. 2 вариант.
#include <stdio.h>
void main () {
int time;
printf("Введите время (от 0 до 24): ");
scanf("%d",&time);
switch(time){
case 22: case 23: case 24: case 0: case 1: case 2: case 3:
printf("Good Night!"); break;
case 4: case 5: case 6: case 7: case 8: case 9: case 10:
printf("Good Morning!"); break;
case 11: case 12: case 13: case 14:
printf("Good Day!"); break;
case 15: case 16:
printf("Good Afternoon!"); break;
case 17: case 18: case 19: case 20: case 21:
printf("Good Evening!"); break;
default: printf("Error!");
}
}
Задания
1.Составьте программу для решения задачи. Вычислить y по формуле
2.Составьте программу для решения задачи. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.
3.Составьте программу для решения задачи. Испытуемый при тестировании может получить некоторое количество очков от 0 до 100. По результатам тестирования выставляется оценка в баллах:
от 0 до 19 – 2 балла;
от 20 до 39 – 3 балла;
от 40 до 79 – 4 балла;
от 80 до 100 – 5 баллов.
Вывести количество введенных очков тестирования и соответствующий ей балл.
Домашние задания
1.Наберите код программ из Примеров 1 и 2. Сохраните коды программ. Выполните компиляцию и запуск программ. Введите свои данные в качестве входных.
2.Составьте программу для решения задачи. Вычислить y по формуле
3.Составьте программу для решения задачи. Составить программу, которая в зависимости от порядкового номера месяца (1 – январь, 2 – февраль, и т.д.) выводит на экран время года, к которому относится этот месяц.
4. Индивидуальное задание. Номер варианта определяется по журналу. Составьте программу для решения задачи.
Варианты индивидуального задания.
№ | Задание |
1. | Написать программу, которая по номеру дня недели n (целому числу от 1 до 7) выдает в качестве результата количество пар в вашей группе в этот день и сколько времени вы провели в университете. |
2. | Написать программу, позволяющую по последней цифре числа k определить последнюю цифру его квадрата. |
3. | В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. – год Крысы – начало очередного цикла.) |
4. | Для целого числа k с от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год. |
5. | Составить программу, которая по заданным номеру месяца m определяет количество дней в этом месяце. Для февраля вывести на экран сообщение "28 или 29 дней". |
6. | Для каждой введенной цифры (0 – 9) вывести соответствующее ей название на английском языке (0 – zero, 1 – one, 2 – two,...). |
7. | Составить программу, которая для введенного натурального числа от 1 до 10000 выводит числительное, соответствующее этому числу, на русском языке. Например, 7 семь; 204 двести четыре; 52 пятьдесят два. |
8. | Составить программу, которая по данному числу m (1 – 12) выводит название соответствующего ему месяца и определяет количество дней заданного месяца в текущем году. |
9. | Составить программу, позволяющую получить словесное описание школьных отметок (1 – «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»). |
10. | Составить программу, которая по веденному номеру месяца m выдает название месяца, следующего за данным. |
11. | Написать программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала соответствующие этому времени года месяцы и сумму дней сезона. |
12. | Написать программу, которая бы по введенному номеру единицы измерения (1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах. |
13. | Вычислить номер дня в невисокосном году по заданным числу d и месяцу m. Считать, что дата введена корректно. |
14. | Написать программу, которая по вводимому числу от 1 до 11 (номеру класса) выдает соответствующее сообщение «Привет, k-классник». Например, если k = 1, «Привет, первоклассник»; если k = 4, «Привет, четвероклассник». |
15. | В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают три экзамена. Если они набирают не менее 13 баллов, то это дает право поступить на дневное отделение, от 10 до 12 – на вечернее, от 8 до 9 – на заочное; ниже 8 баллов означает отказ в приеме на учебу. Написать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление. |
16. | Написать программу, которая бы по введенному номеру единицы измерения (1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 –тонна, 5 – центнер) и массе М выдавала бы соответствующее значение массы в килограммах. |
17. | Введите время h (только часы). Напечатайте соответствующее этому времени сообщение: «Доброе утро», «Добрый день», «Добрый вечер», «Доброй ночи». |
18. | Введите количество посадочных мест m в транспорте. Напечатайте соответствующий этому количеству вид транспорта: «велосипед», «мотоцикл», «легковой автомобиль», «микроавтобус», «автобус». |
19. | Составить программу, позволяющую по последней цифре данного числа определить последнюю цифру куба этого числа. |
20. | Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то должно получиться 1 января – Новый год, 7 января – Рождество). |
21. | Пусть элементами прямоугольного равнобедренного треугольника являются: катет а; гипотенуза b; высота h, опущенная из вершины прямого угла на гипотенузу; площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника. |
22. | Написать программу, которая бы по введённому номеру единицы измерения (1-децеметр, 2-километр, 3-метр, 4-миллиметр, 5-сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах. |
23. | Дано натуральное число n от 1 до 365, соответствующее номеру дня в году. Составить программу, определяющую месяц, на который приходится этот день. |
24. | Пусть элементами равностороннего треугольника являются: сторона а; площадь S; высота h; радиус вписанной окружности r; радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника. |
25. | Составить программу, которая для любого натурального числа n, не превосходящего миллион, печатает количество цифр в записи этого числа. |
26. | Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4k (где k – соответствующее частное); если остаток от деления на 4 равен 1 – N=4k+ 1; если остаток от деления на 4 равен 2 – N= 4k + 2; если остаток от деления на 4 равен 3 – N= 4к + 3. |
27. | Дано целое число k. Распечатайте приставку, соответствующую образованию производных единиц измерения от основных. Например, при k = 3 – кило; при k = -6 – микро; при k = 0 – не определено. |
28. | Каждой клетке шахматной доски соответствует пара координат: строки нумеруются числами от 1 до 8, столбцы – латинскими символами от ‘a’ до ’h’.На доске расставлены шахматные фигуры перед началом игры. По введенным координатам определите, чем занята клетка: белая пешка, белая фигура, черная пешка, черная фигура, клетка свободна. |
Дата добавления: 2015-02-16; просмотров: 2154;