If (выражение) оператор s
Ветвления
Ветвление алгоритмов и программ в языке C записывается с помощью условного оператора if. Условный оператор if имеет вид:
if (выражение) оператор s1 [else оператор s2]
В случае отсутствия конструкции else получим сокращенный условный оператор:
Схема работы оператора if (полного и сокращенного) представлена на рис.2.5.
Рис.2.5. Схема работы оператора if (полного и сокращенного)
Условие ветвления алгоритма и программы – выражение языка С (как в циклах). Значение выражения служит условием выбора той или иной ветви программы или алгоритма. Если значение выражения ≠ 0, то условие истинно и выполняется оператор s1, иначе – оператор s2. Одна из ветвей может отсутствовать, тогда при нулевом значении выражения оператор s пропускается (сокращенный условный оператор).
Задача 2.2. Вычислить значение величины y при следующих условиях:
a*x2 + b2*x, если a < 0
y = x – a*b, если 0 ≤ a < 1
1 + x, если a ≥ 1
/* Фрагмент программы для вычисления величины y */
float a, b, x;
cin >> a >> b>>x;
if ( a < 0 ) cout << “y = ” << a *x *x + b *b *x;
else if ( a < 1 ) cout << “y = ” << x - a * b;
else cout << “y = ” << 1 + x;
Контрольные вопросы и упражнения.
1. Каким будет результат выполнения следующего фрагмента программы?
float x = 10,y; float z; char c = '*';
y=x + 2;
printf ("\n %f %c %f = %f", x, c, y, x*y);
2. Какие операторы можно использовать в языке С для организации циклов?
3. В каких случаях используется составной оператор?
4. Какие из перечисленных условий будут ложными при заданных значениях a = 10; b = -5;
a) while (a) б) while (a>0 || b>0)
в) while (a>0 && b>0) г) while (!a || b)
д) while (!a && b) е) while (a && b)
5. Какое значение примет величина s после выполнения следующего фрагмента
int j, n = 5, s = 0;
. . .
for (j = 0; j < n; j++)
s = s + (j + 1)*2;
6.Какие числа будут получены при выполнении следующего фрагмента программы?
int j;
. . .
for(j = 20; j > 10; j--)
printf (“%d ”, j%3);
Какое значение примет величина j после выполнения фрагмента?
7. Что означает следующая запись: for ( ; ; );
8. Запишите оператор ветвления для вычисления y = 1/x (исключите деление на 0).
9.Запишите следующий фрагмент программы без помощи оператора for. Дополните определением типов переменных. Нарисуйте схему.
for(r = -1, n = 500; n > 0; n--)
{ scanf("%f",&z);
if (z < r) r = z;
}
10. Напишите программу вычисления произведения двух натуральных чисел А и В, не используя операцию умножения.
11. Напишите программу получения таблицы n значений функции:
x, если x>=5;
y= 2*x, если -5<=x< 5;
x2, если x<-5.
Заданы количество значений n (n > 0), начальное значение аргумента функции x0 и шаг табулирования t.
12. Напишите программу, которая вводит три числа, находит и выводит наименьшее из заданных чисел.