Оператор switch.

Agent аватар

Оператор switch

switch используется для выбора из нескольких вариантов.

Формат:
switch (выражение)
{
[объявления]

[case конст_выр1 : [оператор1;]]
[case конст_выр2 : [оператор2;]]

...............

[default : [оператор]]
}

Выражение - целочисленное выражение, значение которого является ключом выбора нужного варианта. Это значение последовательно сравнивается со значениями конст_выражений, следующих за ключевым словом case. Если эти значения совпадают, то управление передается соответствующим операторам. Далее последовательно выполняются все операторы до конца тела switch, если какой-то из них не передает управление из тела switch.
Если ни одно из конст_выражений не равно значению выражения, то управление передается операторам, следующим за словом default.
Следует отметить, что метка default не обязательно последняя в теле оператора switch.
Пример:

int i = 2;

switch (i)
{
case 1: i+=2;
case 2: i*=3; //с этого оператора начнется выполнение
case 0: i/=2;
case 4: i-=5;
}
// i = -2

Для прекращения работы оператора switch испольщуется оператор break.
Пример:

int i = 2;

switch (i)
{
case 1: i+=2; break;
case 2: i*=3; break; //Выполнится только этот оператор
case 0: i/=2; break;
case 4: i-=5;
}
// i = 6

Можно пометить один оператор несколькими метками.
...............
case 1: case 2: case 3: a++;
...............

Задача.
Дано натуральное k, прелставляющая собой денежную сумму. Вывести это k и строку "рубль", "рубля" или "рублей" в соответствии с правилами русского языка.


#include <stdio.h>

int main()
{
unsigned int k;

printf("Enter sum: ");
scanf("%d", &k);

unsigned char n = k % 100;
if (n > 10 && n < 15)
{
printf("%d rubley", k);
getchar(); getchar();

return 0;
}

n = k % 10;

switch (n)
{
case 1: printf("%d rubl", k); break;
case 2: case 3: case 4: printf("%d rublya", k); break;

default: printf("%d rubley", k);
}

getchar(); getchar();

return 0;
}




Rambler's Top100

Яндекс цитирования

© 2008 AgentSoft Project
Based on: ManuScript | Optimized for Drupal :www.SablonTurk.com