📜  C |回路和控制结构|问题10

📅  最后修改于: 2021-06-29 03:07:06             🧑  作者: Mango

# include 
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;
}

(A) 5 10 15 20
(B) 7 12 17 22
(C) 16 21
(D)编译器错误答案: (C)
说明:最初,i =0。由于条件0为真,所以我变为5,并且由于直到开关块的最后一条语句都没有break语句,所以i变为16。现在,在下一次迭代中,情况都不为真,所以执行将变为默认值,并且i变成21。
在C语言中,如果情况为true,则执行switch块,直到找到break语句为止。如果没有break语句,则所有情况在真实情况之后执行。如果您想知道为什么要像这样实现switch,那么这种实现对于下面的情况很有用。

switch (c)
 {
    case 'a':
    case 'e':
    case 'i' :
    case 'o':
    case 'u':
      printf(" Vowel character");
      break;
    default :
      printf("Not a Vowel character");; break;
  }
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。