Рубрики

C | Петли и структура управления | Вопрос 10

# include <stdio.h>

int main()

{

   int i = 0;

   for (i=0; i<20; i++)

   {

     switch(i)

     {

       case 0:

         i += 5;

       case 1:

         i += 2;

       case 5:

         i += 5;

       default:

         i += 4;

         break;

     }

     printf("%d  ", i);

   }

   return 0;

}

(А) 5 10 15 20
(Б) 7 12 17 22
(С) 16 21
(D) Ошибка компилятора

Ответ: (с)
Объяснение: Первоначально i = 0. Так как случай 0 истинен, i становится 5, и поскольку нет оператора break до последнего оператора блока switch, i становится 16. Теперь в следующей итерации ни один случай не является true, поэтому выполнение переходит к умолчанию и i становится 21.
В C, если один случай истинен, блок переключателя выполняется до тех пор, пока не найдет оператор break Если нет оператора break, все дела выполняются после истинного случая. Если вы хотите знать, почему переключатель реализован таким образом, эта реализация полезна для ситуаций, подобных приведенным ниже.

 switch (c)
 {
    case 'a':
    case 'e':
    case 'i' :
    case 'o':
    case 'u':
      printf(" Vowel character");
      break;
    default :
      printf("Not a Vowel character");; break;
  }

Рекомендуемые посты:

C | Петли и структура управления | Вопрос 10

0.00 (0%) 0 votes