Оператор циклу з передумовою while
Приклад 2.
/* застосування умовного розгалужування */
 #include <stdio.h>
 main()
 {
 int number;
 int ok;
 printf("Введіть число з інтервалу 1..100 : ");
 scanf("%d",&number);
 ok=(1<=number) && (number<=100);
 if (!ok)
 printf("Не коректно !!\n");
 return ok;
 }
Змінній ok присвоюється значення результату виразу: ненульове значення, якщо істина, і в протилежному випадку - нуль. Умовний оператор if(!ok) перевіряє, якщо ok дорівнюватиме нулю, то !ok дасть позитивний результат й відтоді буде отримано повідомлення про некоректність, виходячи з контексту наведеного прикладу.
Оператор switch
 Синтаксис:
switch(<вираз цілого типу>)
 {
 case <значення_1>:
 <послідовність_операторів_1>;
 break;
 case <значення_2>:
 <послідовність_операторів_2>;
 break;
 ..................................
 case <значення_n>:
 <послідовність_операторів_n>;
 break;
 [default:
 <послідовність_операторів_n+1>;]
 }
Оператор-перемикач switch призначений для вибору одного з декількох альтернативних шляхів виконання програми. Виконання оператора switch починається з обчислення значення виразу, що слідує за ключовим словом switch у круглих дужках. Далі управління передається одному з <операторів>. Оператор, що отримав управління - це оператор, значення константи якого співпадає зі значенням виразу перемикача.
Вітка default (може опускатися) означає, що якщо жодна з вищенаведених умов не задовольнятиметься (тобто вираз цілого типу не дорівнює жодному із значень, що позначені у саse-фрагментах), керування передається по замовчуванню в це місце програми. Треба також зазначити обов'язкове застосування оператора break у кожному з case-фрагментів (цей оператор застосовують для негайного припинення виконання операторів while, do, for, switch), що негайно передасть керування у точку програми, що слідує відразу за останнім оператором у switch-блоці.
Приклад 1:
switch(i)
 { 
 case -1: n++;
 break;
 case 0: z++;
 break;
 case 1: p++;
 break;
 }
Приклад 2:
switch(c)
 { 
 case 'A': 
 capa++;
 case 'a': 
 lettera++;
 default: 
 total++;
 }
В останньому прикладі всі три оператори в тілі оператора switch будуть виконані, якщо значення с рівне 'A', далі оператори виконуються в порядку їх слідування в тілі, так як відсутні break.
 Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова.
while (<логічний вираз>)
 оператор;
Цикл закінчується у наступних випадках:
- умовний вираз у заголовку приймає нульове значення;
- у тілі циклу досягнуто місця, де розташований оператор break;
- у тілі циклу виконаний оператор return;
У перших двох випадках керування передається оператору, розташованому безпосередньо за циклом, у третьому випадку активна на той момент функція завершує свою роботу, повертаючи якесь значення.
Знову ж таки нерідкою помилкою програмістів є використання замість оператора порівняння (==) оператора присвоювання (=). Наприклад, наступний фрагмент створить нескінчений цикл:
/* некоректне використання оператору циклу */
 int main(void)
 {
 int j=5;
 while(j=5) /* змінній j присвоїти значення 5 */
 {
 printf("%d\n",j);
 j++;
 }
 }
Компілятор Сі попередить про некоректне присвоювання в даному випадку, виправити яке особливих труднощів не викличе. Втім, часто такий цикл використовується для перевірки відповіді користувача на питання з програми ("так чи ні ?"):
/* фрагмент використання while */
 printf ("Підтверджуєте ? Так чи ні ?(y/n);");
 scanf("%c",&ch);
 while (ch!='y' && ch!='n')
 {
 printf("\n Відповідайте так чи ні . . (y/n);");
 scanf("%c",&ch);
 }
Тіло циклу почне виконуватися, якщо користувач введе будь-який символ, відмінний від у або n. Цикл виконується доти, доки користувач не введе або 'у' , або 'n'.
Цікаво розглянути й наступний приклад, що застосовує оператор while у функції підрахунку факторіалу:
long factorial(int number)
 {
 long total;
 total=number;
 while (--number)
 total*=number;
 return total;
 }