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

Условная операция

Значение условной операции

выражение1?выражение2:выражение3

определяется следующим образом:

сначала вычисляется выражение1.

Если выражение1 истинно (не равно 0), то вычисляется выражение2, значение которого становится результатом условной операции;

Если выражение1 ложно (равно 0), то в качестве результата берется значение выражение3.

Пример использования условной операции.

max=(a<=b)?b:a; // Переменной max присваивается большее из значений a и b

Условный оператор

Условный оператор используется, если необходимо выполнять действия в зависимости от выполнения или не выполнения какого-то условия, и записывается следующим образом:

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

оператор1;

else оператор2;

где оператор1 и оператор2 представляют собой одиночные операторы или группы операторов, заключенных в фигурные скобки.

Условный оператор выполняется так:

сначала проверяется выражение; если выражение истинно (значение выражения не равно 0), то выполняется оператор1,

если условие ложно (значение выражения 0), то выполняется оператор2.

Если по ветке “нет” никаких действий выполнять не нужно, то используется краткая форма условного оператора

if (выражение) оператор;

Пример. Вычислить корни квадратного уравнения a*x2+b*x+c=0.

#include <stdio.h>

#include <math.h> // В этой библиотеке описана функция sqrt()

int main()

{float a,b,c,x1,x2,d;

printf(“введите через пробел a,b,c\n”);

scanf(“%f%f%f”,&a,&b,&c);

if (a==0.)

{

printf(“a=0, введите другое значение для переменной a\n”);

scanf(“%f”,&a);

}

d=b*b-4*a*c;

if (d>=0)

{ x1=(-b-sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

printf(“x1=%f x2=%f\n”,x1,x2);

}

else

printf(“корней нет\n”);

return 0;

}

Оператор перехода goto

Oператор перехода осуществляет безусловную передачу управления на метку в пределах текущей функции и записывается так:

goto метка;

Метка – это идентификатор с двоеточием, который помещается перед помечаемым оператором.

Пример использования оператора goto.

M: ch=getchar();

if (ch != ’t’) goto M; // Передача управления в случае, если введенный символ не ’t’

При программировании на С++ этот оператор вообще можно не использовать, так как существуют другие средства, более простые и наглядные в применении.

Оператор выбора switch

Оператор выбора (оператор переключатель) служит для выбора действий из нескольких возможных альтернативных вариантов. Оператор выбора имеет вид:

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

{

case константное_выражение: оператор или список операторов;

case константное_выражение: оператор или список операторов;

…………………..

case константное_выражение: оператор или список операторов;

default: оператор или список операторов;

}

здесь switch, case, default - ключевые слова.

Оператор выбора выполняется следующим образом.

сначала вычисляется значение выражения;

затем это значение по очереди сравнивается с константными выражениями, следующими за case;

если значение выражения совпадает с каким-то константным выражением, то выполняются операторы, помеченные соответствующим оператором case, и все следующие за ним до конца тела оператора switch или пока не встретится оператор break – оператор прерывания действия, который передает управление из тела switch вовне;

если значение выражения не совпадает ни с одним константным выражением и есть вариант default, то управление передается на оператор, помеченный ключевым словом default;

если сравнение не найдено и варианта default нет, то управление передается на cледующий за switch оператор.

Пример 1. Вывести название дня недели по его номеру.

#include <stdio.h>

int main()

{ int n;

printf(“Введите номер дня недели “);

scanf(“%d”,&n);

switch (n)

{ case 1: printf(“понедельник\n”); break;

case 2: printf(“вторник\n”); break;

case 3: printf(“среда\n”); break;

case 4: printf(“четверг\n”); break;

case 5: printf(“пятница\n”); break;

case 6: printf(“суббота\n”); break;

case 7: printf(“воскресенье\n”); break;

default: printf(“неверный номер дня недели\n”);

}

return 0;

}

Пояснения.

Программа будет выполняться следующим образом: если будет введено значение n меньшее 1 (0 или какое-нибудь отрицательное число) или большее 7 (8 и далее), то это значение не совпадет ни с одной константой выбора, тогда выполняется оператор соответствующий ключевому слову default, и на экране появится текст:

неверный номер дня недели

Если же будет введено значение n равное 3, то начнут выполняться операторы соответствующие константе выбора 3, сначала оператор вывода printf(“среда\n”); затем выполнится оператор break и выполнение оператора выбора будет закончено. На экране появится текст:

среда

Пример 2. Ввести два числа типа float, знак арифметической операции и вывести на экран значение полученного выражения.

#include <stdio.h>

int main()

{float a,b,c;

char z;

printf(“Введите два числа и знак(+,-,*,/) через пробел\n”);

scanf(“%f %f %c”,&a,&b,&z);

switch (z)

{ case ‘+’: c=a+b; break;

case ‘-‘: c=a-b; break;

case ‘*’: c=a*b; break;

case ‘/’: if (b==0.) {printf(“Деление на 0 невозможно\n”); break;}

c=a/b; break;

default: printf(“неверный знак операции\n”);

}

printf("%f%c%f=%f",a,z,b,c);

return 0;

}

Пример 3. Вывести название времени года по введенному номеру месяца.

#include <stdio.h>

int main()

{ int n;

printf(“введите номер месяца “);

scanf(“%d”,&n);

switch (n)

{ case 12:

case 1:

case 2: printf(“зима\n”); break;

case 3:

case 4:

case 5: printf(“весна \n”); break;

case 6:

case 7:

case 8: printf(“лето\n”); break;

case 9:

case 10:

case 11: printf(“осень\n”); break;

default: printf(“неверный номер месяца\n”);

}

return 0;

}