Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Си.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
868 Кб
Скачать
☆

Тернарные операции

Тернарная условная операция имеет 3 аргумента и возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Синтаксис тернарной операции в языке Си

условие ? выражение1 : выражение2;

Если выполняется условие, то тернарная операция возвращает выражение1, в противном случае - выражение2. Тернарные операции, как и операции условия, могут быть вложенными. Для  разделения вложенных операций используются круглые скобки. Приведенный выше пример с использованием тернарных операций можно представить в виде

#include <stdio.h> #include <stdlib.h> int main() {

  int key;

  system("chcp 1251");

  system("cls");

  printf("Введите номер пункта, 1 или 2: ");

  scanf("%d",&key);

  key == 1 ? printf("\n Выбран первый пункт") :

    (key==2 ? printf("\n Выбран второй пункт") :

       printf("\n Первый и второй пункты не выбраны")) ;

  getchar(); getchar(); }

Оператор ветвления switch

Оператор if позволяет осуществить выбор только между двумя вариантами. Для того, чтобы производить выбор одного из нескольких вариантов необходимо использовать вложенный оператор if. С этой же целью можно использовать оператор ветвления switch.

Общая форма записи

switch (целое выражение) {

  case константа1: блок операций1;

         break;

  case константа2: блок операций2;

         break; . . .

  case константаn: блок операцийn;

         break;

  default: блок операций по умолчанию;

         break; }

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

  • вычисляется целочисленное выражение в скобках оператора switch;

  • полученное значение сравнивается с метками (константами) в опциях case, сравнение производится до тех пор, пока не будет найдена метка, соответствующая вычисленному значению целочисленного выражения;

  • выполняется оператор соответствующей метки case;

  • если соответствующая метка не найдена, то выполнится оператор в опции default.

Альтернатива default может отсутствовать, тогда не будет произведено никаких действий. Опция break; осуществляет выход из оператора switch и переход к следующему за ним оператору. При отсутствии опции break будут выполняться все операторы, начиная с помеченного данной меткой и кончая оператором в опции default. Константы в опциях case должны быть целого типа (могут быть символами).

Пример: Вывести день недели по его номеру

Операторы цикла в языке си

Главная > Язык Си > Операторы цикла в языке си

В языке Си реализованы три вида операторов цикла:

  • while - цикл с предусловием;

  • do...while - цикл с постусловием;

  • for - параметрический цикл (цикл с заданным числом повторений).

Цикл с предусловием while

Общая форма записи

while(выражение) {

  блок операций; }

Если выражение истинно (не равно нулю), то выполняется блок операций, заключенный в фигурные скобки, затем выражение проверяется снова. Последовательность действий, состоящая из проверки и выполнения блока операций, повторяется до тех пор, пока выражение не станет ложным (равным нулю). При этом происходит выход из цикла, и производится выполнение операции, стоящей после оператора цикла.

Пример

int k=5; int i=1; int sum=0; while(i <=k) {

 sum = sum + i;

 i++; }

При построении цикла while, в него необходимо включить конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным (равным нулю). Иначе выполнение цикла будет осуществляться бесконечно (бесконечный цикл), например

while(1) {

  блок операций; }

while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу если в момент первой проверки проверяемое условие окажется ложным.

Пример

int k=5; int n=10; while(k>n) {

 printf(" k=%d n=%d \n", k, n);

 k = k + 2;

}

Цикл с постусловием do...while

Общая форма записи

do {

  блок операций;

} while(выражение);

Цикл с постусловием

Цикл do...while — это цикл с постусловием, где истинность выражения проверяется после выполнения всех операций, включенных в блок, ограниченный фигурными скобками.Тело цикла выполняется до тех пор, пока выражение не станет ложным, то есть тело цикла с постусловием выполнится хотя бы один раз.

Использовать цикл do...while лучше использовать в тех случаях, когда должна быть выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в проверке условия, происходит внутри тела цикла.

Пример. Ввести число от 0 до 10

#include <stdio.h> #include <stdlib.h> int main() {

  int num;

  system("chcp 1251");

  system("cls");

  do {

    printf("Введите число от 0 до 10: ");

    scanf("%d", &num);

  } while((num < 0) || (num > 10));

  printf("Вы ввели число %d", num);

  getchar(); getchar();

  return 0; }

Результат работы программы: