Если условие истинно, выполняется выражение_1, если – ложь, то выражение_2.
Например, определение максимума из двух величин х и y:
if (x>y) a=x;
else a=y;
Условие может иметь арифметический тип или тип указателя. Если выражение равно нулю, то условие считается ложью. Любое другое значение выражения считается истиной. Выражение_1, выражение_2 могут быть составными операторами.
Пример. Нахождение максимума и минимума из двух величин х и y:
if(x>y){max=a; min=y; puts("x больше y"); }
else {max=y; min=x; puts("x меньше y"); }
Допустима сокращенная форма условного оператора, в котором отсутствует конструкция else выражение_3. В этом случае при равенстве нулю проверяемого условия никаких действий не выполняется. Блок-схемы работы полного и неполного условного оператора представлены на рис.
Пример. Переменной abs присвоить абсолютное значение числа х
if(x<0) x=–x;
abs=x; // всегда выполняется
Выражение_2 и выражение_3 могут также быть условными. В этом случае получаем вложенные условные операторы. Причем, каждый оператор else соответствует ближайшему оператору if.
Пример. Три числа типа int вводятся с клавиатуры, и находится наибольшее из этих чисел.
#include <stdio.h>
Void main()
{int x, y, z, max;
puts("Введите три числа");
scanf("%d %d %d",&x,&y,&z);
if(x>y&&x>z) max=x;
else if(y>z) max=y;
else max=z;
printf(“max=%d\n”,max);}
4.2.2 Оператор- переключатель
Переключатель применяется для выбора одного из нескольких вариантов вычислений (обычно больше трех). Синтаксис переключателя такой:
Switch(переключающее_выражение)
{case константное_выражение_1: операторы_1;
case константное_выражение_2: операторы_2;
...
default: операторы_n+1;}
Оператор switch() передает управление тому оператору, константное_выражение которого совпадает со значениями переключающего_выражения. затем выполняются все операторы, начиная с той метки, на которую передано управление. Любой из операторов, помеченный меткой, может быть составным оператором или блоком. Переключающее выражение должно быть целочисленным. Все константные выражения должны быть разными, но одного целого типа. Любой из операторов в операторе switch() может быть помечен одной или несколькими метками через пробел, после каждой метки стоит двоеточие.
|
Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору c меткой default:. В каждом переключателе должна быть только одна метка default. Но эта метка может отсутствовать. В этом случае не выполняется ни один из операторов.
Блок-схемы работы оператора switch() без оператора break и с оператором break представлены на рисунке.
Пример.
char a; printf("Введите a,v,s\n");
scanf("%c",&a);
Switch(a)
{case 'a': printf("абрикос");
case 'v': printf("вишня");
case 's': printf("слива");
default: printf("такой фрукты нет"); }
Метки не изменяют последовательности выполнения операторов. В этом примере, если a='v', напечатается: вишня слива такой фрукты нет.
Для выхода из оператора switch() предусмотрен оператор break. Если поместить оператор break после каждой группы операторов, то выполниться только та группа, константное выражение которого совпало с переключающим.
Пример. По введенному числу определяется время начала пар:
int n;
printf("Введите номер пары и узнаете время\n");
scanf("%d",&n);
|
Switch(oper)
{ case 1: puts("1 пара 8.30-9.55); break;
case 2: puts("2 пара 10.05-11.25); break;
case 3: puts("3 пара 11.55-13.15); break;
case 4: puts("4 пара 13.35-14.55); break;
default: puts("пора домой\n"); }
4.3 Операторы циклов
Операторы цикла задают многократное выполнение операторов тела цикла. Определены три разных оператора цикла:
· цикл с предусловием:
While (условие)
Тело_цикла
· цикл с постусловием:
Do тело_цикла
while (условие);
· итерационный цикл: