В условном операторе можно записывать два вида условий:
1 - логические отношения;
2 - логические выражения.
Отношение - два арифметических выражения, связанных знаком отношения. Знаки логических отношений приведены в таблице 3.1.
Таблица 3.1 Знаки логических отношений
Знаки отношений | Описание |
> | больше чем |
>= | больше или равно |
< | меньше чем |
<= | меньше или равно |
== | равно |
!= | не равно |
Пример 3.6: if(x1<=x2) t=y*sin(x1)+1.5;
Логические выражения –два или больше логических отношений объединенных соответствующими операциями:
1. &&- логическое умножение and (и)
2. || - логическое сложение or(или)
3.! – логическое отрицание not (не).
Пример 3.7.
1.Проверить принадлежность числа х отрезку[-2;2]
if(x>=-2 && x<=2)…
2.Проверить лежит ли число у за пределами отрезка [0;5]
if(y<0 || y>5)
|
|
Логические выражения вычисляются слева направо и, если на каком-то этапе выясняется истинность (ложность) данного выражения, то вычисления прекращаются.
Пример 3.8.
x=2; y=5;
if(x>3&&y<6)… ложь
ложь не выч-ся
if(x<=4||y>=5)… истина
истина не выч-ся
Вложенные условные операторы.
Внутри каждого условного оператора может быть один или несколько условных операторов.
if (выражение_1) if (выражение_2) оператор_1;
else оператор_2;
В сложных условных операторах else относится к ближайшему if. Если возникает необходимость в изменении такого порядка, то используют фигурные скобки, чтобы указать, к какому if принадлежит else.
if(выражение_1) {if(выражение_2) оператор_1;}
else оператор_2;
Пример 3.9. Задано три числа a, b, c. Найти значение максимального среди них.
Текст программы.
int main ()
{
float a,b,c,max;
printf("задайте значения a,b,c");
scanf("%f%f%f",&a,&b,&c);
if (a>b)max=a; else max=b;
if (c>max) max=c;
printf("\n max=%5.1f",max);
return 0;
}
Пример 3.10 Выполнить вычисления y по одной из формул, в зависимости от введенных значений чисел a, b, x.
sin(a/x), если x≤a
y = cos(a+b*x), если x≥b
a+(b+x)2+√|a|, если a<x<b
Текст программы
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{
float a,b,x,y;
printf("Задайте значения a,b,x");
scanf("%f%f%f",&a,&b,&x);
if (x<=a) y=sin(a/x);
if (x>=b) y=cos(a+b*x);
if (x>a&&x<b) y=a+(b+x)*(b+x)+sqrt(fabs(a));
printf("\n a=%5.1f b=%5.1f x=%5.1f y=%5.1f",a,b,x,y);
}
Пример 3.11 Выполнить вычисления y по одной из формул при различных значения х, используя оператор перехода и метку.
√ x -x2, если х>0
y=
x+√|x|, если х≤0
где х изменяется от –2 до +2 с шагом dx=0,1.
|
|
Определить: k-количество положительных у(y>0) и их сумму S.
int main()
{
int k=0;
float x=-2, y, s=0;
metka: if (x>0) y=sqrt(x)-x*x;
else y= x+sqrt(fabs(x));
printf(“\n %6.2f %6.2f ”, x, y);
if (y>0){
k++;
S+=y;
}
x+=0.1;
if(x<=2) goto metka;
printf (“\n количество Y>0 k=%d\n”,k);
printf(“сумма Y>0 s=%6.2f”,s);
return 0;
}