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

2.4 Структура многомерного выбора switch

В программировании часто встречаются задачи выбора одного варианта решения задачи из многих возможных. Это можно сделать и с помощью вложенных if……else. Однако более удобный способ – использование оператора switсh, который выполняет одно из множество действий в зависимости от значения проверяемого выражения. switсh отличается от if тем, что он выполняет операцию строгого равенства, в то время как оператор if может вычислять логические выражения и отношения.

общий формат оператора switсh :

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

{

case const1: operator1; break;

case const2: operator2; break;

case const3: operator3; break;

case const4: operator4; break;

default const5: operator5; break;

}

Свойства:

Выражение должно иметь целочисленный тип (допустимо использование символьной константы, перечислений и вызов функции, возвращающей целочисленное значение). Значение выражения сопоставляется со всеми находящимися внутри конструкции константами, стоящими после case

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

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

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

Пример:

1. Вводим числа ввод чисел заканчивается 0. Посчитать сколько раз вводилось каждое из чисел то 5 до 8,.

#include<stdio.h>

Void main()

{

int x,k_5=0,k_6=0,k_7=0,k_8=0;

do

{

printf("Введите числи от 5 до 8: ");

scanf("%d",&x);

switch(x)

{

case 5:

k_5++;

break;

case 6:

k_6++;

break;

case 7:

k_7++;

break;

case 8:

k_8++;

break;

default:

printf("Введено неправильное число:\n");

break;

}

}while(x);

printf("Колечество:\n5\t%d\n6\t%d\n7\t%d\n8\t%d\n",k_5,k_6,k_7,k_8);

}

2. Даны три монеты достоинством 5, 10, 15. Напишите программу, которая определит, можно ли заданную сумму набрать из каких–либо двух монет

int x;

printf("Введите числи от 5 до 8: ");

scanf("%d",&x);

switch(x){

case 5+10:

printf(“Yes\n”);

break;

case 5+15:

printf(“Yes\n”);

break;

case 10+15:

printf(“Yes\n”);

break;

default:

printf("No:\n");

break;

}

3. Переделать программу 2 используя оператор if/else

4. Калькулятор1. Ввести число, ввести символ (‘+’, ‘-‘, ‘*’, ‘/’) затем ввести число. Программа считает и выводит результат.

#include<stdio.h>

Void main()

{

double x,y;

char ch;

printf("Vvedite cislo: ");

scanf("%lf",&x);

fflush(stdin);

printf("Vvedite dejstvie: ");

fflush(stdin);

scanf("%c",&ch);

printf("Vvedite chislo: ");

scanf("%lf",&y);

switch(ch)

{

case '+': x+=y;

break;

case '-': x-=y;

break;

case '*': x*=y;

break;

case '/': x/=y;

break;

}

printf("=%.2lf\n",x); }

5. Калькулятор 2. Программа требует ввода числа, символа и числа до тех пор пока не введем символ ‘=’.

6. Калькулятор 3. Программа требует ввода числа, символа и числа до тех пор пока не введем символ ‘=’. Добавить в программу подсчет квадратного корня числа, получения обратного числа, т.е. если число положительное, то становиться отрицательным и наоборот, подсчет процента.