Теоретические сведения

Применение переключателей (оператор 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.